Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 85e9cbb92a5786ec1cb7440b9af2e76af28ce966..c2daec0a469a0b6872f6972cf5482b36ae38c500 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); |