Thu, 11 Oct 2012 18:21:01 +0200
8000753: compiler/6912517 crashes on 64bit sparc with compressed oops off
Summary: code generated by c1 for getClass intrinsic broken when klass field is loaded on 64bit with compressed klass off.
Reviewed-by: kvn
src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Tue Oct 09 16:09:31 2012 -0700 1.2 +++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp Thu Oct 11 18:21:01 2012 +0200 1.3 @@ -976,14 +976,13 @@ 1.4 break; 1.5 case T_METADATA: __ ld_ptr(base, offset, to_reg->as_register()); break; 1.6 case T_ADDRESS: 1.7 - if (offset == oopDesc::klass_offset_in_bytes()) { 1.8 +#ifdef _LP64 1.9 + if (offset == oopDesc::klass_offset_in_bytes() && UseCompressedKlassPointers) { 1.10 __ lduw(base, offset, to_reg->as_register()); 1.11 -#ifdef _LP64 1.12 - if (UseCompressedKlassPointers) { 1.13 - __ decode_klass_not_null(to_reg->as_register()); 1.14 - } 1.15 + __ decode_klass_not_null(to_reg->as_register()); 1.16 + } else 1.17 #endif 1.18 - } else { 1.19 + { 1.20 __ ld_ptr(base, offset, to_reg->as_register()); 1.21 } 1.22 break;