Chromium Code Reviews| Index: src/compiler/escape-analysis.cc |
| diff --git a/src/compiler/escape-analysis.cc b/src/compiler/escape-analysis.cc |
| index 09e494df31f2ee325a2b272bafc53c2882620514..303baab3c039de7141b172dc54ac2b23d20f7d07 100644 |
| --- a/src/compiler/escape-analysis.cc |
| +++ b/src/compiler/escape-analysis.cc |
| @@ -12,6 +12,7 @@ |
| #include "src/compiler/common-operator.h" |
| #include "src/compiler/graph-reducer.h" |
| #include "src/compiler/js-operator.h" |
| +#include "src/compiler/linkage.h" |
| #include "src/compiler/node-matchers.h" |
| #include "src/compiler/node-properties.h" |
| #include "src/compiler/node.h" |
| @@ -1067,6 +1068,19 @@ bool EscapeStatusAnalysis::IsEffectBranchPoint(Node* node) { |
| return false; |
| } |
| +namespace { |
| + |
| +bool HasFrameStateInput(const Operator* op) { |
| + if (op->opcode() == IrOpcode::kCall) { |
|
Michael Starzinger
2017/01/27 11:36:18
nit: Even though this shouldn't happen in practice
|
| + const CallDescriptor* d = CallDescriptorOf(op); |
| + return d->NeedsFrameState(); |
| + } else { |
| + return OperatorProperties::HasFrameStateInput(op); |
| + } |
| +} |
| + |
| +} // namespace |
| + |
| bool EscapeAnalysis::Process(Node* node) { |
| switch (node->opcode()) { |
| case IrOpcode::kAllocate: |
| @@ -1103,7 +1117,7 @@ bool EscapeAnalysis::Process(Node* node) { |
| ProcessAllocationUsers(node); |
| break; |
| } |
| - if (OperatorProperties::HasFrameStateInput(node->op())) { |
| + if (HasFrameStateInput(node->op())) { |
| virtual_states_[node->id()]->SetCopyRequired(); |
| } |
| return true; |