aboutsummaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorroland <none@none>2012-10-11 18:21:01 +0200
committerroland <none@none>2012-10-11 18:21:01 +0200
commit279fab30804f9bac44299d009f64a61d137b133b (patch)
treefb5758522ffb29908d364d20e33c4022268c84de /src/cpu
parent5bf8e55e51ee2becd3f44c405bf2eb4f1f07f528 (diff)
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
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
index 3fab9c3be..fe00140e5 100644
--- a/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
+++ b/src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp
@@ -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) {
- __ decode_klass_not_null(to_reg->as_register());
- }
+ 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;