Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index 8f3423ecd777b585ebabeee4b525b82d15909d00..644919741f3f0860be9b9420a056938b15be3824 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -1509,7 +1509,11 @@ void LCodeGen::DoBitI(LBitI* instr) { |
__ Or(result, left, right); |
break; |
case Token::BIT_XOR: |
- __ Xor(result, left, right); |
+ if (right_op->IsConstantOperand() && right.immediate() == int32_t(~0)) { |
+ __ Nor(result, zero_reg, left); |
+ } else { |
+ __ Xor(result, left, right); |
+ } |
break; |
default: |
UNREACHABLE(); |
@@ -1787,13 +1791,6 @@ void LCodeGen::DoSeqStringSetChar(LSeqStringSetChar* instr) { |
} |
-void LCodeGen::DoBitNotI(LBitNotI* instr) { |
- Register input = ToRegister(instr->value()); |
- Register result = ToRegister(instr->result()); |
- __ Nor(result, zero_reg, Operand(input)); |
-} |
- |
- |
void LCodeGen::DoThrow(LThrow* instr) { |
Register input_reg = EmitLoadRegister(instr->value(), at); |
__ push(input_reg); |