8000753: compiler/6912517 crashes on 64bit sparc with compressed oops off

Code generated by c1 for getClass intrinsic broken when klass field is loaded on 64bit with compressed klass off.

Reviewed-by: kvn
This commit is contained in:
Roland Westrelin 2012-10-11 18:21:01 +02:00
parent f28ac57f94
commit 74ea92ce42

View file

@ -976,14 +976,13 @@ int LIR_Assembler::load(Register base, int offset, LIR_Opr to_reg, BasicType typ
break;
case T_METADATA: __ ld_ptr(base, offset, to_reg->as_register()); break;
case T_ADDRESS:
if (offset == oopDesc::klass_offset_in_bytes()) {
__ lduw(base, offset, to_reg->as_register());
#ifdef _LP64
if (UseCompressedKlassPointers) {
if (offset == oopDesc::klass_offset_in_bytes() && UseCompressedKlassPointers) {
__ lduw(base, offset, to_reg->as_register());
__ decode_klass_not_null(to_reg->as_register());
}
} else
#endif
} else {
{
__ ld_ptr(base, offset, to_reg->as_register());
}
break;