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; |
} |