| Index: src/compiler/operator-properties-inl.h
|
| diff --git a/src/compiler/operator-properties-inl.h b/src/compiler/operator-properties-inl.h
|
| index 42833fdeb417027543f0ed87ff293663d2b2c259..fc9149dedb9c8f3a91c7ac27f33eadcf9f00d48d 100644
|
| --- a/src/compiler/operator-properties-inl.h
|
| +++ b/src/compiler/operator-properties-inl.h
|
| @@ -7,7 +7,6 @@
|
|
|
| #include "src/v8.h"
|
|
|
| -#include "src/compiler/js-operator.h"
|
| #include "src/compiler/opcodes.h"
|
| #include "src/compiler/operator-properties.h"
|
|
|
| @@ -60,10 +59,6 @@ inline int OperatorProperties::GetControlInputCount(Operator* op) {
|
| #undef OPCODE_CASE
|
| return static_cast<ControlOperator*>(op)->ControlInputCount();
|
| default:
|
| - // If a node can lazily deoptimize, it needs control dependency.
|
| - if (CanLazilyDeoptimize(op)) {
|
| - return 1;
|
| - }
|
| // Operators that have write effects must have a control
|
| // dependency. Effect dependencies only ensure the correct order of
|
| // write/read operations without consideration of control flow. Without an
|
| @@ -135,52 +130,17 @@ inline bool OperatorProperties::IsScheduleRoot(Operator* op) {
|
| }
|
|
|
| inline bool OperatorProperties::CanLazilyDeoptimize(Operator* op) {
|
| - // TODO(jarin) This function allows turning on lazy deoptimization
|
| - // incrementally. It will change as we turn on lazy deopt for
|
| - // more nodes.
|
| -
|
| - if (!FLAG_turbo_deoptimization) {
|
| - return false;
|
| + if (op->opcode() == IrOpcode::kCall) {
|
| + CallOperator* call_op = reinterpret_cast<CallOperator*>(op);
|
| + CallDescriptor* descriptor = call_op->parameter();
|
| + return descriptor->CanLazilyDeoptimize();
|
| }
|
| -
|
| - switch (op->opcode()) {
|
| - case IrOpcode::kCall: {
|
| - CallOperator* call_op = reinterpret_cast<CallOperator*>(op);
|
| - CallDescriptor* descriptor = call_op->parameter();
|
| - return descriptor->CanLazilyDeoptimize();
|
| - }
|
| - case IrOpcode::kJSCallRuntime: {
|
| - Runtime::FunctionId function =
|
| - reinterpret_cast<Operator1<Runtime::FunctionId>*>(op)->parameter();
|
| - // TODO(jarin) At the moment, we only support lazy deoptimization for
|
| - // the %DeoptimizeFunction runtime function.
|
| - return function == Runtime::kDeoptimizeFunction;
|
| - }
|
| -
|
| - // JS function calls
|
| - case IrOpcode::kJSCallFunction:
|
| - case IrOpcode::kJSCallConstruct:
|
| -
|
| - // Binary operations
|
| - case IrOpcode::kJSBitwiseOr:
|
| - case IrOpcode::kJSBitwiseXor:
|
| - case IrOpcode::kJSBitwiseAnd:
|
| - case IrOpcode::kJSShiftLeft:
|
| - case IrOpcode::kJSShiftRight:
|
| - case IrOpcode::kJSShiftRightLogical:
|
| - case IrOpcode::kJSAdd:
|
| - case IrOpcode::kJSSubtract:
|
| - case IrOpcode::kJSMultiply:
|
| - case IrOpcode::kJSDivide:
|
| - case IrOpcode::kJSModulus:
|
| - case IrOpcode::kJSLoadProperty:
|
| - case IrOpcode::kJSStoreProperty:
|
| - case IrOpcode::kJSLoadNamed:
|
| - case IrOpcode::kJSStoreNamed:
|
| - return true;
|
| -
|
| - default:
|
| - return false;
|
| + if (op->opcode() == IrOpcode::kJSCallRuntime) {
|
| + // TODO(jarin) At the moment, we only support lazy deoptimization for
|
| + // the %DeoptimizeFunction runtime function.
|
| + Runtime::FunctionId function =
|
| + reinterpret_cast<Operator1<Runtime::FunctionId>*>(op)->parameter();
|
| + return function == Runtime::kDeoptimizeFunction;
|
| }
|
| return false;
|
| }
|
|
|