diff src/cpu/sparc/vm/stubGenerator_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 1ee8caae33af
children 660978a2a31a
line wrap: on
line diff
--- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Fri Oct 31 10:34:20 2008 -0700
+++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp	Fri Nov 07 11:03:32 2008 -0500
@@ -956,7 +956,7 @@
     // Load a little early; will load 1 off the end of the array.
     // Ok for now; revisit if we have other uses of this routine.
     if (UseCompressedOops) {
-      __ ld(L1_ary_ptr,0,L2_super);// Will load a little early
+      __ lduw(L1_ary_ptr,0,L2_super);// Will load a little early
     } else {
       __ ld_ptr(L1_ary_ptr,0,L2_super);// Will load a little early
     }
@@ -973,7 +973,7 @@
 #ifdef  _LP64
       __ subcc(L2_super,L4_ooptmp,Rret);   // Check for match; zero in Rret for a hit
       __ br( Assembler::notEqual, false, Assembler::pt, loop );
-      __ delayed()->ld(L1_ary_ptr,0,L2_super);// Will load a little early
+      __ delayed()->lduw(L1_ary_ptr,0,L2_super);// Will load a little early
 #else
       ShouldNotReachHere();
 #endif