src/share/vm/c1/c1_LIRGenerator.cpp

changeset 9842
4df47a343601
parent 9618
3999f5f297f2
child 9843
a6f289d66efe
equal deleted inserted replaced
9841:2e636385f137 9842:4df47a343601
2332 // offset is a const and equals referent offset 2332 // offset is a const and equals referent offset
2333 // if (source == null) -> continue 2333 // if (source == null) -> continue
2334 __ cmp(lir_cond_equal, src_reg, LIR_OprFact::oopConst(NULL)); 2334 __ cmp(lir_cond_equal, src_reg, LIR_OprFact::oopConst(NULL));
2335 __ branch(lir_cond_equal, T_OBJECT, Lcont->label()); 2335 __ branch(lir_cond_equal, T_OBJECT, Lcont->label());
2336 } 2336 }
2337 LIR_Opr src_klass = new_register(T_OBJECT); 2337 LIR_Opr src_klass = new_register(T_METADATA);
2338 if (gen_type_check) { 2338 if (gen_type_check) {
2339 // We have determined that offset == referent_offset && src != null. 2339 // We have determined that offset == referent_offset && src != null.
2340 // if (src->_klass->_reference_type == REF_NONE) -> continue 2340 // if (src->_klass->_reference_type == REF_NONE) -> continue
2341 __ move(new LIR_Address(src_reg, oopDesc::klass_offset_in_bytes(), T_ADDRESS), src_klass); 2341 __ move(new LIR_Address(src_reg, oopDesc::klass_offset_in_bytes(), T_ADDRESS), src_klass);
2342 LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(InstanceKlass::reference_type_offset()), T_BYTE); 2342 LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(InstanceKlass::reference_type_offset()), T_BYTE);
3297 } 3297 }
3298 3298
3299 void LIRGenerator::do_ProfileCall(ProfileCall* x) { 3299 void LIRGenerator::do_ProfileCall(ProfileCall* x) {
3300 // Need recv in a temporary register so it interferes with the other temporaries 3300 // Need recv in a temporary register so it interferes with the other temporaries
3301 LIR_Opr recv = LIR_OprFact::illegalOpr; 3301 LIR_Opr recv = LIR_OprFact::illegalOpr;
3302 LIR_Opr mdo = new_register(T_OBJECT); 3302 LIR_Opr mdo = new_register(T_METADATA);
3303 // tmp is used to hold the counters on SPARC 3303 // tmp is used to hold the counters on SPARC
3304 LIR_Opr tmp = new_pointer_register(); 3304 LIR_Opr tmp = new_pointer_register();
3305 3305
3306 if (x->nb_profiled_args() > 0) { 3306 if (x->nb_profiled_args() > 0) {
3307 profile_arguments(x); 3307 profile_arguments(x);

mercurial