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

Thu, 11 Oct 2012 18:21:01 +0200

author
roland
date
Thu, 11 Oct 2012 18:21:01 +0200
changeset 4162
94e9408dbf50
parent 4161
d336b3173277
child 4163
19eb999cb72c

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;

mercurial