Mercurial > hg > truffle
comparison src/cpu/sparc/vm/interp_masm_sparc.cpp @ 422:05db98ed59ba
6760773: UseCompressedOops is broken with UseParNewGC
Summary: sparc code for gen_subtype_check was doing an ld for a compressed oop with the sign bit set so not comparing, leading to a ClassCastException.
Reviewed-by: phh, never, acorn, kvn, xlu
author | coleenp |
---|---|
date | Fri, 07 Nov 2008 11:03:32 -0500 |
parents | d1605aabd0a1 |
children | 98cb887364d3 70998f2e05ef |
comparison
equal
deleted
inserted
replaced
414:348be627a148 | 422:05db98ed59ba |
---|---|
904 br( Assembler::equal, false, Assembler::pn, not_subtype ); | 904 br( Assembler::equal, false, Assembler::pn, not_subtype ); |
905 delayed()->nop(); | 905 delayed()->nop(); |
906 | 906 |
907 // load next super to check | 907 // load next super to check |
908 if (UseCompressedOops) { | 908 if (UseCompressedOops) { |
909 ld( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3); | 909 lduw( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3); |
910 // Bump array pointer forward one oop | 910 // Bump array pointer forward one oop |
911 add( Rtmp2, 4, Rtmp2 ); | 911 add( Rtmp2, 4, Rtmp2 ); |
912 } else { | 912 } else { |
913 ld_ptr( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3); | 913 ld_ptr( Rtmp2, arrayOopDesc::base_offset_in_bytes(T_OBJECT), Rtmp3); |
914 // Bump array pointer forward one oop | 914 // Bump array pointer forward one oop |