| Index: src/ia32/lithium-ia32.cc
|
| diff --git a/src/ia32/lithium-ia32.cc b/src/ia32/lithium-ia32.cc
|
| index c73d073406c8bda37658f5cf10e6230960a00d9b..c23118b1caca3015504b4b18cd8f7fff1c03252b 100644
|
| --- a/src/ia32/lithium-ia32.cc
|
| +++ b/src/ia32/lithium-ia32.cc
|
| @@ -681,7 +681,7 @@ LInstruction* LChunkBuilder::MarkAsCall(LInstruction* instr,
|
| instr->MarkAsCall();
|
| instr = AssignPointerMap(instr);
|
|
|
| - if (hinstr->HasObservableSideEffects()) {
|
| + if (hinstr->HasObservableSideEffects() && !hinstr->IsControlInstruction()) {
|
| ASSERT(hinstr->next()->IsSimulate());
|
| HSimulate* sim = HSimulate::cast(hinstr->next());
|
| ASSERT(instruction_pending_deoptimization_environment_ == NULL);
|
| @@ -1700,14 +1700,15 @@ LInstruction* LChunkBuilder::DoRandom(HRandom* instr) {
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoCompareGeneric(HCompareGeneric* instr) {
|
| +LInstruction* LChunkBuilder::DoCompareGenericAndBranch(
|
| + HCompareGenericAndBranch* instr) {
|
| ASSERT(instr->left()->representation().IsSmiOrTagged());
|
| ASSERT(instr->right()->representation().IsSmiOrTagged());
|
| LOperand* context = UseFixed(instr->context(), esi);
|
| LOperand* left = UseFixed(instr->left(), edx);
|
| LOperand* right = UseFixed(instr->right(), eax);
|
| - LCmpT* result = new(zone()) LCmpT(context, left, right);
|
| - return MarkAsCall(DefineFixed(result, eax), instr);
|
| + return MarkAsCall(new(zone()) LCompareGenericAndBranch(context, left, right),
|
| + instr);
|
| }
|
|
|
|
|
|
|