Index: src/compiler/ppc/code-generator-ppc.cc |
diff --git a/src/compiler/ppc/code-generator-ppc.cc b/src/compiler/ppc/code-generator-ppc.cc |
index 9cc51466ae54837918164f33b70c43cf84fff924..bd7e22739f45aad8c06d78045d68e73344d9f996 100644 |
--- a/src/compiler/ppc/code-generator-ppc.cc |
+++ b/src/compiler/ppc/code-generator-ppc.cc |
@@ -764,36 +764,33 @@ Condition FlagsConditionToCondition(FlagsCondition condition, ArchOpcode op) { |
DCHECK_EQ(LeaveRC, i.OutputRCBit()); \ |
} while (0) |
-#define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr, asm_instrx) \ |
- do { \ |
- Label done; \ |
- Register result = i.OutputRegister(); \ |
- AddressingMode mode = kMode_None; \ |
- MemOperand operand = i.MemoryOperand(&mode); \ |
- __ sync(); \ |
- if (mode == kMode_MRI) { \ |
- __ asm_instr(result, operand); \ |
- } else { \ |
- __ asm_instrx(result, operand); \ |
- } \ |
- __ bind(&done); \ |
- __ cmp(result, result); \ |
- __ bne(&done); \ |
- __ isync(); \ |
+#define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr, asm_instrx) \ |
+ do { \ |
+ Label done; \ |
+ Register result = i.OutputRegister(); \ |
+ AddressingMode mode = kMode_None; \ |
+ MemOperand operand = i.MemoryOperand(&mode); \ |
+ if (mode == kMode_MRI) { \ |
+ __ asm_instr(result, operand); \ |
+ } else { \ |
+ __ asm_instrx(result, operand); \ |
+ } \ |
+ __ lwsync(); \ |
} while (0) |
-#define ASSEMBLE_ATOMIC_STORE_INTEGER(asm_instr, asm_instrx) \ |
- do { \ |
- size_t index = 0; \ |
- AddressingMode mode = kMode_None; \ |
- MemOperand operand = i.MemoryOperand(&mode, &index); \ |
- Register value = i.InputRegister(index); \ |
- __ sync(); \ |
- if (mode == kMode_MRI) { \ |
- __ asm_instr(value, operand); \ |
- } else { \ |
- __ asm_instrx(value, operand); \ |
- } \ |
- DCHECK_EQ(LeaveRC, i.OutputRCBit()); \ |
+#define ASSEMBLE_ATOMIC_STORE_INTEGER(asm_instr, asm_instrx) \ |
+ do { \ |
+ size_t index = 0; \ |
+ AddressingMode mode = kMode_None; \ |
+ MemOperand operand = i.MemoryOperand(&mode, &index); \ |
+ Register value = i.InputRegister(index); \ |
+ __ lwsync(); \ |
+ if (mode == kMode_MRI) { \ |
+ __ asm_instr(value, operand); \ |
+ } else { \ |
+ __ asm_instrx(value, operand); \ |
+ } \ |
+ __ sync(); \ |
+ DCHECK_EQ(LeaveRC, i.OutputRCBit()); \ |
} while (0) |
void CodeGenerator::AssembleDeconstructFrame() { |