Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 1ea97ca6db4e7033bc6f959723071109b3c3f6ae..98a049b64abed3387a1d5f6c380a48c1fed8c78f 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -3044,15 +3044,21 @@ void LCodeGen::DoInstanceSize(LInstanceSize* instr) { |
} |
-void LCodeGen::DoCompareGenericAndBranch(LCompareGenericAndBranch* instr) { |
+void LCodeGen::DoCmpT(LCmpT* instr) { |
Token::Value op = instr->op(); |
Handle<Code> ic = CompareIC::GetUninitialized(isolate(), op); |
CallCode(ic, RelocInfo::CODE_TARGET, instr); |
Condition condition = ComputeCompareCondition(op); |
+ Label true_value, done; |
__ test(eax, Operand(eax)); |
- EmitBranch(instr, condition); |
+ __ j(condition, &true_value, Label::kNear); |
+ __ mov(ToRegister(instr->result()), factory()->false_value()); |
+ __ jmp(&done, Label::kNear); |
+ __ bind(&true_value); |
+ __ mov(ToRegister(instr->result()), factory()->true_value()); |
+ __ bind(&done); |
} |