提交 9a94d408 编写于 作者: I iveresov

7091764: Tiered: enable aastore profiling

Summary: Turn on aastore profiling
Reviewed-by: jrose, twisti
上级 0f3635ab
...@@ -328,7 +328,8 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -328,7 +328,8 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
bool use_length = x->length() != NULL; bool use_length = x->length() != NULL;
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL || bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL ||
!get_jobject_constant(x->value())->is_null_object()); !get_jobject_constant(x->value())->is_null_object() ||
x->should_profile());
LIRItem array(x->array(), this); LIRItem array(x->array(), this);
LIRItem index(x->index(), this); LIRItem index(x->index(), this);
...@@ -382,7 +383,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -382,7 +383,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
LIR_Opr tmp3 = FrameMap::G5_opr; LIR_Opr tmp3 = FrameMap::G5_opr;
CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info); CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info);
__ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info); __ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info, x->profiled_method(), x->profiled_bci());
} }
if (obj_store) { if (obj_store) {
......
...@@ -267,7 +267,8 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -267,7 +267,8 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
bool use_length = x->length() != NULL; bool use_length = x->length() != NULL;
bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT;
bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL || bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL ||
!get_jobject_constant(x->value())->is_null_object()); !get_jobject_constant(x->value())->is_null_object() ||
x->should_profile());
LIRItem array(x->array(), this); LIRItem array(x->array(), this);
LIRItem index(x->index(), this); LIRItem index(x->index(), this);
...@@ -321,7 +322,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { ...@@ -321,7 +322,7 @@ void LIRGenerator::do_StoreIndexed(StoreIndexed* x) {
LIR_Opr tmp3 = new_register(objectType); LIR_Opr tmp3 = new_register(objectType);
CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info); CodeEmitInfo* store_check_info = new CodeEmitInfo(range_check_info);
__ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info); __ store_check(value.result(), array.result(), tmp1, tmp2, tmp3, store_check_info, x->profiled_method(), x->profiled_bci());
} }
if (obj_store) { if (obj_store) {
......
...@@ -1394,8 +1394,15 @@ void LIR_List::instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Op ...@@ -1394,8 +1394,15 @@ void LIR_List::instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Op
} }
void LIR_List::store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception) { void LIR_List::store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3,
append(new LIR_OpTypeCheck(lir_store_check, object, array, tmp1, tmp2, tmp3, info_for_exception)); CodeEmitInfo* info_for_exception, ciMethod* profiled_method, int profiled_bci) {
LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_store_check, object, array, tmp1, tmp2, tmp3, info_for_exception);
if (profiled_method != NULL) {
c->set_profiled_method(profiled_method);
c->set_profiled_bci(profiled_bci);
c->set_should_profile(true);
}
append(c);
} }
......
...@@ -2100,7 +2100,7 @@ class LIR_List: public CompilationResourceObj { ...@@ -2100,7 +2100,7 @@ class LIR_List: public CompilationResourceObj {
void fpop_raw() { append(new LIR_Op0(lir_fpop_raw)); } void fpop_raw() { append(new LIR_Op0(lir_fpop_raw)); }
void instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, CodeEmitInfo* info_for_patch, ciMethod* profiled_method, int profiled_bci); void instanceof(LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, CodeEmitInfo* info_for_patch, ciMethod* profiled_method, int profiled_bci);
void store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception); void store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception, ciMethod* profiled_method, int profiled_bci);
void checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass, void checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass,
LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册