Mercurial > hg > graal-compiler
changeset 6834:bacdc1d5c21c
6884973: java -XX:Atomics=2 crashes
Summary: Remove buggy experimental option
Reviewed-by: acorn, coleenp
Contributed-by: harold.seigel@oracle.com
author | coleenp |
---|---|
date | Thu, 04 Oct 2012 08:43:14 -0400 |
parents | ba8fd2fe198b |
children | f2eb2d4488db |
files | src/cpu/x86/vm/assembler_x86.cpp src/share/vm/runtime/globals.hpp |
diffstat | 2 files changed, 6 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/x86/vm/assembler_x86.cpp Thu Oct 04 08:38:06 2012 -0400 +++ b/src/cpu/x86/vm/assembler_x86.cpp Thu Oct 04 08:43:14 2012 -0400 @@ -1170,26 +1170,11 @@ // and stores reg into adr if so; otherwise, the value at adr is loaded into rax,. // The ZF is set if the compared values were equal, and cleared otherwise. void Assembler::cmpxchgl(Register reg, Address adr) { // cmpxchg - if (Atomics & 2) { - // caveat: no instructionmark, so this isn't relocatable. - // Emit a synthetic, non-atomic, CAS equivalent. - // Beware. The synthetic form sets all ICCs, not just ZF. - // cmpxchg r,[m] is equivalent to rax, = CAS (m, rax, r) - cmpl(rax, adr); - movl(rax, adr); - if (reg != rax) { - Label L ; - jcc(Assembler::notEqual, L); - movl(adr, reg); - bind(L); - } - } else { - InstructionMark im(this); - prefix(adr, reg); - emit_byte(0x0F); - emit_byte(0xB1); - emit_operand(reg, adr); - } + InstructionMark im(this); + prefix(adr, reg); + emit_byte(0x0F); + emit_byte(0xB1); + emit_operand(reg, adr); } void Assembler::comisd(XMMRegister dst, Address src) { @@ -1513,12 +1498,7 @@ } void Assembler::lock() { - if (Atomics & 1) { - // Emit either nothing, a NOP, or a NOP: prefix - emit_byte(0x90) ; - } else { - emit_byte(0xF0); - } + emit_byte(0xF0); } void Assembler::lzcntl(Register dst, Register src) {
--- a/src/share/vm/runtime/globals.hpp Thu Oct 04 08:38:06 2012 -0400 +++ b/src/share/vm/runtime/globals.hpp Thu Oct 04 08:43:14 2012 -0400 @@ -1066,9 +1066,6 @@ \ product(bool, MonitorInUseLists, false, "Track Monitors for Deflation") \ \ - product(intx, Atomics, 0, \ - "(Unsafe,Unstable) Diagnostic - Controls emission of atomics") \ - \ product(intx, SyncFlags, 0, "(Unsafe,Unstable) Experimental Sync flags" ) \ \ product(intx, SyncVerbose, 0, "(Unstable)" ) \