Mercurial > hg > truffle
comparison src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 6851:94e9408dbf50
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
author | roland |
---|---|
date | Thu, 11 Oct 2012 18:21:01 +0200 |
parents | 8e47bac5643a |
children | d804e148cff8 |
comparison
equal
deleted
inserted
replaced
6850:d336b3173277 | 6851:94e9408dbf50 |
---|---|
974 #endif | 974 #endif |
975 } | 975 } |
976 break; | 976 break; |
977 case T_METADATA: __ ld_ptr(base, offset, to_reg->as_register()); break; | 977 case T_METADATA: __ ld_ptr(base, offset, to_reg->as_register()); break; |
978 case T_ADDRESS: | 978 case T_ADDRESS: |
979 if (offset == oopDesc::klass_offset_in_bytes()) { | 979 #ifdef _LP64 |
980 if (offset == oopDesc::klass_offset_in_bytes() && UseCompressedKlassPointers) { | |
980 __ lduw(base, offset, to_reg->as_register()); | 981 __ lduw(base, offset, to_reg->as_register()); |
981 #ifdef _LP64 | 982 __ decode_klass_not_null(to_reg->as_register()); |
982 if (UseCompressedKlassPointers) { | 983 } else |
983 __ decode_klass_not_null(to_reg->as_register()); | 984 #endif |
984 } | 985 { |
985 #endif | |
986 } else { | |
987 __ ld_ptr(base, offset, to_reg->as_register()); | 986 __ ld_ptr(base, offset, to_reg->as_register()); |
988 } | 987 } |
989 break; | 988 break; |
990 case T_ARRAY : // fall through | 989 case T_ARRAY : // fall through |
991 case T_OBJECT: | 990 case T_OBJECT: |