mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6884973: java -XX:Atomics=2 crashes
Remove buggy experimental option Reviewed-by: acorn, coleenp
This commit is contained in:
parent
5a5c90dd1c
commit
284879b3fc
2 changed files with 6 additions and 29 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue