From dc7ec31f7e1bdcf705bd009c151977b89c19118d Mon Sep 17 00:00:00 2001 From: coleenp Date: Thu, 4 Oct 2012 08:43:14 -0400 Subject: [PATCH] 6884973: java -XX:Atomics=2 crashes Summary: Remove buggy experimental option Reviewed-by: acorn, coleenp Contributed-by: harold.seigel@oracle.com --- src/cpu/x86/vm/assembler_x86.cpp | 32 ++++++-------------------------- src/share/vm/runtime/globals.hpp | 3 --- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/cpu/x86/vm/assembler_x86.cpp b/src/cpu/x86/vm/assembler_x86.cpp index 66798405e..734d739a6 100644 --- a/src/cpu/x86/vm/assembler_x86.cpp +++ b/src/cpu/x86/vm/assembler_x86.cpp @@ -1170,26 +1170,11 @@ void Assembler::cmpw(Address dst, int imm16) { // 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::leal(Register dst, Address src) { } 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) { diff --git a/src/share/vm/runtime/globals.hpp b/src/share/vm/runtime/globals.hpp index 8ecd8d304..7ac7c4563 100644 --- a/src/share/vm/runtime/globals.hpp +++ b/src/share/vm/runtime/globals.hpp @@ -1066,9 +1066,6 @@ class CommandLineFlags { \ 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)" ) \ -- GitLab