Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 6ca8851337cc5350ff0ed64e4a0c87c0530b0c8f..0b704d07ef5749cf056d2584e84815f7e3b03a59 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -1669,7 +1669,11 @@ void LCodeGen::DoBitI(LBitI* instr) { |
__ orr(result, left, right); |
break; |
case Token::BIT_XOR: |
- __ eor(result, left, right); |
+ if (right_op->IsConstantOperand() && right.immediate() == int32_t(~0)) { |
+ __ mvn(result, Operand(left)); |
+ } else { |
+ __ eor(result, left, right); |
+ } |
break; |
default: |
UNREACHABLE(); |
@@ -1953,13 +1957,6 @@ void LCodeGen::DoSeqStringSetChar(LSeqStringSetChar* instr) { |
} |
-void LCodeGen::DoBitNotI(LBitNotI* instr) { |
- Register input = ToRegister(instr->value()); |
- Register result = ToRegister(instr->result()); |
- __ mvn(result, Operand(input)); |
-} |
- |
- |
void LCodeGen::DoThrow(LThrow* instr) { |
Register input_reg = EmitLoadRegister(instr->value(), ip); |
__ push(input_reg); |