7150046: SIGILL on sparcv9 fastdebug
Summary: Breakpoint needs to do 64-bit compare for pointers on sparcv9
Reviewed-by: coleenp, never
Contributed-by: dean.long@oracle.com
--- a/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Thu Mar 01 12:41:13 2012 +0400
+++ b/hotspot/src/cpu/sparc/vm/assembler_sparc.hpp Mon Mar 05 14:19:00 2012 -0500
@@ -2221,7 +2221,7 @@
// traps as per trap.h (SPARC ABI?)
void breakpoint_trap();
- void breakpoint_trap(Condition c, CC cc = icc);
+ void breakpoint_trap(Condition c, CC cc);
void flush_windows_trap();
void clean_windows_trap();
void get_psr_trap();
--- a/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp Thu Mar 01 12:41:13 2012 +0400
+++ b/hotspot/src/cpu/sparc/vm/cppInterpreter_sparc.cpp Mon Mar 05 14:19:00 2012 -0500
@@ -1187,7 +1187,7 @@
#ifdef ASSERT
__ tst(O1);
- __ breakpoint_trap(Assembler::zero);
+ __ breakpoint_trap(Assembler::zero, Assembler::ptr_cc);
#endif // ASSERT
const int entry_size = frame::interpreter_frame_monitor_size() * wordSize;
--- a/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Thu Mar 01 12:41:13 2012 +0400
+++ b/hotspot/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Mar 05 14:19:00 2012 -0500
@@ -3325,7 +3325,7 @@
// make sure that the frames are aligned properly
#ifndef _LP64
__ btst(wordSize*2-1, SP);
- __ breakpoint_trap(Assembler::notZero);
+ __ breakpoint_trap(Assembler::notZero, Assembler::ptr_cc);
#endif
#endif
@@ -3407,7 +3407,7 @@
#ifdef ASSERT
// make sure that there is at least one entry in the array
__ tst(O4array_size);
- __ breakpoint_trap(Assembler::zero);
+ __ breakpoint_trap(Assembler::zero, Assembler::icc);
#endif
// Now push the new interpreter frames
--- a/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Thu Mar 01 12:41:13 2012 +0400
+++ b/hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Mon Mar 05 14:19:00 2012 -0500
@@ -379,7 +379,7 @@
#ifdef ASSERT
__ tst(O0);
- __ breakpoint_trap(Assembler::zero);
+ __ breakpoint_trap(Assembler::zero, Assembler::ptr_cc);
#endif // ASSERT
__ bind(done);
@@ -2050,7 +2050,7 @@
AddressLiteral stop_at(&StopInterpreterAt);
__ load_ptr_contents(stop_at, G4_scratch);
__ cmp(G3_scratch, G4_scratch);
- __ breakpoint_trap(Assembler::equal);
+ __ breakpoint_trap(Assembler::equal, Assembler::icc);
}
#endif // not PRODUCT
#endif // !CC_INTERP