Mercurial > hg > truffle
comparison src/share/vm/c1/c1_LIRGenerator.cpp @ 6731:044a77cd0c8b
7195935: NPG: Some issues with compressed oops
Summary: Don't decompress the klass pointer in the G1 pre-barrier code when !UseCompressedKlassPointers
Reviewed-by: coleenp, brutisso
author | stefank |
---|---|
date | Wed, 05 Sep 2012 10:39:29 +0200 |
parents | da91efe96a93 |
children | 8a02ca5e5576 |
comparison
equal
deleted
inserted
replaced
6730:5d2156bcb78b | 6731:044a77cd0c8b |
---|---|
2290 } | 2290 } |
2291 LIR_Opr src_klass = new_register(T_OBJECT); | 2291 LIR_Opr src_klass = new_register(T_OBJECT); |
2292 if (gen_type_check) { | 2292 if (gen_type_check) { |
2293 // We have determined that offset == referent_offset && src != null. | 2293 // We have determined that offset == referent_offset && src != null. |
2294 // if (src->_klass->_reference_type == REF_NONE) -> continue | 2294 // if (src->_klass->_reference_type == REF_NONE) -> continue |
2295 __ move(new LIR_Address(src.result(), oopDesc::klass_offset_in_bytes(), T_OBJECT), src_klass); | 2295 __ move(new LIR_Address(src.result(), oopDesc::klass_offset_in_bytes(), UseCompressedKlassPointers ? T_OBJECT : T_ADDRESS), src_klass); |
2296 LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(InstanceKlass::reference_type_offset()), T_BYTE); | 2296 LIR_Address* reference_type_addr = new LIR_Address(src_klass, in_bytes(InstanceKlass::reference_type_offset()), T_BYTE); |
2297 LIR_Opr reference_type = new_register(T_INT); | 2297 LIR_Opr reference_type = new_register(T_INT); |
2298 __ move(reference_type_addr, reference_type); | 2298 __ move(reference_type_addr, reference_type); |
2299 __ cmp(lir_cond_equal, reference_type, LIR_OprFact::intConst(REF_NONE)); | 2299 __ cmp(lir_cond_equal, reference_type, LIR_OprFact::intConst(REF_NONE)); |
2300 __ branch(lir_cond_equal, T_INT, Lcont->label()); | 2300 __ branch(lir_cond_equal, T_INT, Lcont->label()); |