comparison src/share/vm/c1/c1_LIR.cpp @ 1791:3a294e483abc

6919069: client compiler needs to capture more profile information for tiered work Summary: Added profiling of instanceof and aastore. Reviewed-by: kvn, jrose, never
author iveresov
date Mon, 13 Sep 2010 12:10:49 -0700
parents d5d065957597
children 87b64980e2f1
comparison
equal deleted inserted replaced
1790:7f9553bedfd5 1791:3a294e483abc
1017 masm->emit_alloc_array(this); 1017 masm->emit_alloc_array(this);
1018 masm->emit_code_stub(stub()); 1018 masm->emit_code_stub(stub());
1019 } 1019 }
1020 1020
1021 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) { 1021 void LIR_OpTypeCheck::emit_code(LIR_Assembler* masm) {
1022 if (code() == lir_checkcast) { 1022 masm->emit_opTypeCheck(this);
1023 masm->emit_checkcast(this);
1024 } else {
1025 masm->emit_opTypeCheck(this);
1026 }
1027 if (stub()) { 1023 if (stub()) {
1028 masm->emit_code_stub(stub()); 1024 masm->emit_code_stub(stub());
1029 } 1025 }
1030 } 1026 }
1031 1027
1378 c->set_should_profile(true); 1374 c->set_should_profile(true);
1379 } 1375 }
1380 append(c); 1376 append(c);
1381 } 1377 }
1382 1378
1383 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) { 1379 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) {
1384 append(new LIR_OpTypeCheck(lir_instanceof, result, object, klass, tmp1, tmp2, tmp3, fast_check, NULL, info_for_patch, NULL)); 1380 LIR_OpTypeCheck* c = new LIR_OpTypeCheck(lir_instanceof, result, object, klass, tmp1, tmp2, tmp3, fast_check, NULL, info_for_patch, NULL);
1381 if (profiled_method != NULL) {
1382 c->set_profiled_method(profiled_method);
1383 c->set_profiled_bci(profiled_bci);
1384 c->set_should_profile(true);
1385 }
1386 append(c);
1385 } 1387 }
1386 1388
1387 1389
1388 void LIR_List::store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception) { 1390 void LIR_List::store_check(LIR_Opr object, LIR_Opr array, LIR_Opr tmp1, LIR_Opr tmp2, LIR_Opr tmp3, CodeEmitInfo* info_for_exception) {
1389 append(new LIR_OpTypeCheck(lir_store_check, object, array, tmp1, tmp2, tmp3, info_for_exception)); 1391 append(new LIR_OpTypeCheck(lir_store_check, object, array, tmp1, tmp2, tmp3, info_for_exception));