Mon, 05 Mar 2012 14:19:00 -0500
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
1.1 --- a/src/cpu/sparc/vm/assembler_sparc.hpp Thu Mar 01 12:41:13 2012 +0400 1.2 +++ b/src/cpu/sparc/vm/assembler_sparc.hpp Mon Mar 05 14:19:00 2012 -0500 1.3 @@ -2221,7 +2221,7 @@ 1.4 // traps as per trap.h (SPARC ABI?) 1.5 1.6 void breakpoint_trap(); 1.7 - void breakpoint_trap(Condition c, CC cc = icc); 1.8 + void breakpoint_trap(Condition c, CC cc); 1.9 void flush_windows_trap(); 1.10 void clean_windows_trap(); 1.11 void get_psr_trap();
2.1 --- a/src/cpu/sparc/vm/cppInterpreter_sparc.cpp Thu Mar 01 12:41:13 2012 +0400 2.2 +++ b/src/cpu/sparc/vm/cppInterpreter_sparc.cpp Mon Mar 05 14:19:00 2012 -0500 2.3 @@ -1187,7 +1187,7 @@ 2.4 2.5 #ifdef ASSERT 2.6 __ tst(O1); 2.7 - __ breakpoint_trap(Assembler::zero); 2.8 + __ breakpoint_trap(Assembler::zero, Assembler::ptr_cc); 2.9 #endif // ASSERT 2.10 2.11 const int entry_size = frame::interpreter_frame_monitor_size() * wordSize;
3.1 --- a/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Thu Mar 01 12:41:13 2012 +0400 3.2 +++ b/src/cpu/sparc/vm/sharedRuntime_sparc.cpp Mon Mar 05 14:19:00 2012 -0500 3.3 @@ -3325,7 +3325,7 @@ 3.4 // make sure that the frames are aligned properly 3.5 #ifndef _LP64 3.6 __ btst(wordSize*2-1, SP); 3.7 - __ breakpoint_trap(Assembler::notZero); 3.8 + __ breakpoint_trap(Assembler::notZero, Assembler::ptr_cc); 3.9 #endif 3.10 #endif 3.11 3.12 @@ -3407,7 +3407,7 @@ 3.13 #ifdef ASSERT 3.14 // make sure that there is at least one entry in the array 3.15 __ tst(O4array_size); 3.16 - __ breakpoint_trap(Assembler::zero); 3.17 + __ breakpoint_trap(Assembler::zero, Assembler::icc); 3.18 #endif 3.19 3.20 // Now push the new interpreter frames
4.1 --- a/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Thu Mar 01 12:41:13 2012 +0400 4.2 +++ b/src/cpu/sparc/vm/templateInterpreter_sparc.cpp Mon Mar 05 14:19:00 2012 -0500 4.3 @@ -379,7 +379,7 @@ 4.4 4.5 #ifdef ASSERT 4.6 __ tst(O0); 4.7 - __ breakpoint_trap(Assembler::zero); 4.8 + __ breakpoint_trap(Assembler::zero, Assembler::ptr_cc); 4.9 #endif // ASSERT 4.10 4.11 __ bind(done); 4.12 @@ -2050,7 +2050,7 @@ 4.13 AddressLiteral stop_at(&StopInterpreterAt); 4.14 __ load_ptr_contents(stop_at, G4_scratch); 4.15 __ cmp(G3_scratch, G4_scratch); 4.16 - __ breakpoint_trap(Assembler::equal); 4.17 + __ breakpoint_trap(Assembler::equal, Assembler::icc); 4.18 } 4.19 #endif // not PRODUCT 4.20 #endif // !CC_INTERP