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());