src/share/vm/c1/c1_LIR.cpp

Print this page
rev 2893 : 7121756: Improve C1 inlining policy by using profiling at call sites
Summary: profile based recompilation of methods with C1 with more inlining.
Reviewed-by:

*** 349,359 **** } LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, ! bool fast_check, CodeEmitInfo* info_for_exception, CodeEmitInfo* info_for_patch, CodeStub* stub) : LIR_Op(code, result, NULL) , _object(object) , _array(LIR_OprFact::illegalOpr) --- 349,359 ---- } LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, ! bool fast_check, CodeEmitInfo* info_for_patch, CodeStub* stub) : LIR_Op(code, result, NULL) , _object(object) , _array(LIR_OprFact::illegalOpr)
*** 362,383 **** , _tmp2(tmp2) , _tmp3(tmp3) , _fast_check(fast_check) , _stub(stub) , _info_for_patch(info_for_patch) ! , _info_for_exception(info_for_exception) , _profiled_method(NULL) , _profiled_bci(-1) , _should_profile(false) { ! if (code == lir_checkcast) { ! assert(info_for_exception != NULL, "checkcast throws exceptions"); ! } else if (code == lir_instanceof) { ! assert(info_for_exception == NULL, "instanceof throws no exceptions"); ! } else { ! ShouldNotReachHere(); ! } } LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception) --- 362,377 ---- , _tmp2(tmp2) , _tmp3(tmp3) , _fast_check(fast_check) , _stub(stub) , _info_for_patch(info_for_patch) ! , _info_for_exception(NULL) , _profiled_method(NULL) , _profiled_bci(-1) , _should_profile(false) { ! assert (code == lir_checkcast ||code == lir_instanceof, "expects checkcast or instanceof only"); } LIR_OpTypeCheck::LIR_OpTypeCheck(LIR_Code code, LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception)
*** 1369,1392 **** void LIR_List::checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, ! CodeEmitInfo* info_for_exception, CodeEmitInfo* info_for_patch, CodeStub* stub, ciMethod* profiled_method, int profiled_bci) { LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_checkcast, result, object, klass, ! tmp1, tmp2, tmp3, fast_check, info_for_exception, info_for_patch, stub); if (profiled_method != NULL) { c->set_profiled_method(profiled_method); c->set_profiled_bci(profiled_bci); c->set_should_profile(true); } append(c); } void LIR_List::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) { ! LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_instanceof, result, object, klass, tmp1, tmp2, tmp3, fast_check, NULL, info_for_patch, NULL); if (profiled_method != NULL) { c->set_profiled_method(profiled_method); c->set_profiled_bci(profiled_bci); c->set_should_profile(true); } --- 1363,1386 ---- void LIR_List::checkcast (LIR_Opr result, LIR_Opr object, ciKlass* klass, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, bool fast_check, ! CodeEmitInfo* info_for_patch, CodeStub* stub, ciMethod* profiled_method, int profiled_bci) { LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_checkcast, result, object, klass, ! tmp1, tmp2, tmp3, fast_check, info_for_patch, stub); if (profiled_method != NULL) { c->set_profiled_method(profiled_method); c->set_profiled_bci(profiled_bci); c->set_should_profile(true); } append(c); } void LIR_List::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) { ! LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_instanceof, result, object, klass, tmp1, tmp2, tmp3, fast_check, info_for_patch, NULL); if (profiled_method != NULL) { c->set_profiled_method(profiled_method); c->set_profiled_bci(profiled_bci); c->set_should_profile(true); }