# HG changeset patch # User twisti # Date 1304494908 25200 # Node ID 8d944991dbf9f0b764a14d58cb5c380574308bf0 # Parent 2e038ad0c1d09407fe8a1627269a5b1c4d163985 7041244: JSR 292: Server VM gets a SEGV running a JCK test Reviewed-by: iveresov, kvn, never diff -r 2e038ad0c1d0 -r 8d944991dbf9 src/cpu/sparc/vm/methodHandles_sparc.cpp --- a/src/cpu/sparc/vm/methodHandles_sparc.cpp Mon May 02 18:53:37 2011 -0700 +++ b/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 diff -r 2e038ad0c1d0 -r 8d944991dbf9 src/share/vm/memory/genOopClosures.hpp --- a/src/share/vm/memory/genOopClosures.hpp Mon May 02 18:53:37 2011 -0700 +++ b/src/share/vm/memory/genOopClosures.hpp Wed May 04 00:41:48 2011 -0700 @@ -175,7 +175,7 @@ protected: template 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);