7041244: JSR 292: Server VM gets a SEGV running a JCK test
authortwisti
Wed, 04 May 2011 00:41:48 -0700
changeset 9443 921ea97b65fa
parent 9437 9981851b4b8c
child 9444 4d72388fb282
7041244: JSR 292: Server VM gets a SEGV running a JCK test Reviewed-by: iveresov, kvn, never
hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp
hotspot/src/share/vm/memory/genOopClosures.hpp
--- a/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp	Mon May 02 18:53:37 2011 -0700
+++ b/hotspot/src/cpu/sparc/vm/methodHandles_sparc.cpp	Wed May 04 00:41:48 2011 -0700
@@ -645,9 +645,10 @@
 
       // Live at this point:
       // - G5_klass        :  klass required by the target method
+      // - O0_argslot      :  argslot index in vmarg; may be required in the failing path
       // - O1_scratch      :  argument klass to test
       // - G3_method_handle:  adapter method handle
-      __ check_klass_subtype(O1_scratch, G5_klass, O0_argslot, O2_scratch, done);
+      __ check_klass_subtype(O1_scratch, G5_klass, O2_scratch, O3_scratch, done);
 
       // If we get here, the type check failed!
       __ load_heap_oop(G3_amh_argument,        O2_required);  // required class
--- a/hotspot/src/share/vm/memory/genOopClosures.hpp	Mon May 02 18:53:37 2011 -0700
+++ b/hotspot/src/share/vm/memory/genOopClosures.hpp	Wed May 04 00:41:48 2011 -0700
@@ -175,7 +175,7 @@
  protected:
   template <class T> inline void do_oop_work(T* p) {
     oop obj = oopDesc::load_decode_heap_oop(p);
-    guarantee(obj->is_oop_or_null(), err_msg("invalid oop: " INTPTR_FORMAT, obj));
+    guarantee(obj->is_oop_or_null(), err_msg("invalid oop: " INTPTR_FORMAT, (oopDesc*) obj));
   }
  public:
   virtual void do_oop(oop* p);