| Index: src/compiler/escape-analysis.cc
|
| diff --git a/src/compiler/escape-analysis.cc b/src/compiler/escape-analysis.cc
|
| index 09e494df31f2ee325a2b272bafc53c2882620514..30fec9566e47b71036ee0764f43e47eea6ddf32b 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 || op->opcode() == IrOpcode::kTailCall) {
|
| + 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;
|
|
|