| Index: src/compiler/operator-properties-inl.h
|
| diff --git a/src/compiler/operator-properties-inl.h b/src/compiler/operator-properties-inl.h
|
| index 374d9ba55cbcc7fd2ee36dca0e9c86b0d846f7fd..db160a80f874f4d1f600c26d3013d637b8ee3c0a 100644
|
| --- a/src/compiler/operator-properties-inl.h
|
| +++ b/src/compiler/operator-properties-inl.h
|
| @@ -37,27 +37,29 @@ inline bool OperatorProperties::HasFrameStateInput(Operator* op) {
|
| }
|
|
|
| switch (op->opcode()) {
|
| - case IrOpcode::kJSCallFunction:
|
| - case IrOpcode::kJSCallConstruct:
|
| - return true;
|
| case IrOpcode::kJSCallRuntime: {
|
| Runtime::FunctionId function =
|
| reinterpret_cast<Operator1<Runtime::FunctionId>*>(op)->parameter();
|
| - // TODO(jarin) At the moment, we only add frame state for
|
| - // few chosen runtime functions.
|
| - switch (function) {
|
| - case Runtime::kDebugBreak:
|
| - case Runtime::kDeoptimizeFunction:
|
| - case Runtime::kSetScriptBreakPoint:
|
| - case Runtime::kDebugGetLoadedScripts:
|
| - case Runtime::kStackGuard:
|
| - return true;
|
| - default:
|
| - return false;
|
| - }
|
| - UNREACHABLE();
|
| + return Linkage::NeedsFrameState(function);
|
| }
|
|
|
| + // Strict equality cannot lazily deoptimize.
|
| + case IrOpcode::kJSStrictEqual:
|
| + case IrOpcode::kJSStrictNotEqual:
|
| + return false;
|
| +
|
| + // Calls
|
| + case IrOpcode::kJSCallFunction:
|
| + case IrOpcode::kJSCallConstruct:
|
| +
|
| + // Compare operations
|
| + case IrOpcode::kJSEqual:
|
| + case IrOpcode::kJSNotEqual:
|
| + case IrOpcode::kJSLessThan:
|
| + case IrOpcode::kJSGreaterThan:
|
| + case IrOpcode::kJSLessThanOrEqual:
|
| + case IrOpcode::kJSGreaterThanOrEqual:
|
| +
|
| // Binary operations
|
| case IrOpcode::kJSBitwiseOr:
|
| case IrOpcode::kJSBitwiseXor:
|
|
|