| Index: src/compiler/operator-properties.cc
|
| diff --git a/src/compiler/operator-properties.cc b/src/compiler/operator-properties.cc
|
| index a36caf5513a96d8add98b9759c0813ff42b57e5c..0ee434c3c8516bbf92fcfe7ca83f97fc71071713 100644
|
| --- a/src/compiler/operator-properties.cc
|
| +++ b/src/compiler/operator-properties.cc
|
| @@ -40,13 +40,9 @@ int OperatorProperties::GetFrameStateInputCount(const Operator* op) {
|
|
|
| // Compare operations
|
| case IrOpcode::kJSEqual:
|
| - case IrOpcode::kJSGreaterThan:
|
| - case IrOpcode::kJSGreaterThanOrEqual:
|
| + case IrOpcode::kJSNotEqual:
|
| case IrOpcode::kJSHasProperty:
|
| case IrOpcode::kJSInstanceOf:
|
| - case IrOpcode::kJSLessThan:
|
| - case IrOpcode::kJSLessThanOrEqual:
|
| - case IrOpcode::kJSNotEqual:
|
|
|
| // Object operations
|
| case IrOpcode::kJSCreateLiteralArray:
|
| @@ -93,6 +89,15 @@ int OperatorProperties::GetFrameStateInputCount(const Operator* op) {
|
| case IrOpcode::kJSSubtract:
|
| return 2;
|
|
|
| + // Compare operators that can deopt in the middle the operation (e.g.,
|
| + // as a result of lazy deopt in ToNumber conversion) need a second frame
|
| + // state so that we can resume before the operation.
|
| + case IrOpcode::kJSGreaterThan:
|
| + case IrOpcode::kJSGreaterThanOrEqual:
|
| + case IrOpcode::kJSLessThan:
|
| + case IrOpcode::kJSLessThanOrEqual:
|
| + return 2;
|
| +
|
| default:
|
| return 0;
|
| }
|
|
|