Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 1dcad043e6067d53ad6a74885ebd28ceec05bb1b..bc6f5cb5d92f59ceba80c4d7788d7c1ca05cd3b9 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -2287,11 +2287,15 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { |
void LCodeGen::DoCmpObjectEqAndBranch(LCmpObjectEqAndBranch* instr) { |
Register left = ToRegister(instr->left()); |
- Operand right = ToOperand(instr->right()); |
int false_block = chunk_->LookupDestination(instr->false_block_id()); |
int true_block = chunk_->LookupDestination(instr->true_block_id()); |
- __ cmp(left, Operand(right)); |
+ if (instr->right()->IsConstantOperand()) { |
+ __ cmp(left, ToHandle(LConstantOperand::cast(instr->right()))); |
+ } else { |
+ Operand right = ToOperand(instr->right()); |
+ __ cmp(left, Operand(right)); |
+ } |
EmitBranch(true_block, false_block, equal); |
} |