| Index: src/compiler/escape-analysis.cc
|
| diff --git a/src/compiler/escape-analysis.cc b/src/compiler/escape-analysis.cc
|
| index c159f1ad385dd295e9f8b3537b2251d120d18a4c..9372e620248fbee46e34093c835b6bdcea8a1ad8 100644
|
| --- a/src/compiler/escape-analysis.cc
|
| +++ b/src/compiler/escape-analysis.cc
|
| @@ -687,16 +687,7 @@
|
| RevisitInputs(rep);
|
| RevisitUses(rep);
|
| }
|
| - } else {
|
| - Node* from = NodeProperties::GetValueInput(node, 0);
|
| - if (SetEscaped(from)) {
|
| - TRACE("Setting #%d (%s) to escaped because of unresolved load #%i\n",
|
| - from->id(), from->op()->mnemonic(), node->id());
|
| - RevisitInputs(from);
|
| - RevisitUses(from);
|
| - }
|
| - }
|
| -
|
| + }
|
| RevisitUses(node);
|
| break;
|
| }
|
| @@ -800,7 +791,6 @@
|
| case IrOpcode::kStateValues:
|
| case IrOpcode::kReferenceEqual:
|
| case IrOpcode::kFinishRegion:
|
| - case IrOpcode::kCheckMaps:
|
| if (IsEscaped(use) && SetEscaped(rep)) {
|
| TRACE(
|
| "Setting #%d (%s) to escaped because of use by escaping node "
|
| @@ -901,7 +891,7 @@
|
|
|
| EscapeAnalysis::~EscapeAnalysis() {}
|
|
|
| -bool EscapeAnalysis::Run() {
|
| +void EscapeAnalysis::Run() {
|
| replacements_.resize(graph()->NodeCount());
|
| status_analysis_->AssignAliases();
|
| if (status_analysis_->AliasCount() > 0) {
|
| @@ -910,9 +900,6 @@
|
| status_analysis_->ResizeStatusVector();
|
| RunObjectAnalysis();
|
| status_analysis_->RunStatusAnalysis();
|
| - return true;
|
| - } else {
|
| - return false;
|
| }
|
| }
|
|
|
| @@ -1118,9 +1105,6 @@
|
| case IrOpcode::kLoadElement:
|
| ProcessLoadElement(node);
|
| break;
|
| - case IrOpcode::kCheckMaps:
|
| - ProcessCheckMaps(node);
|
| - break;
|
| case IrOpcode::kStart:
|
| ProcessStart(node);
|
| break;
|
| @@ -1158,10 +1142,6 @@
|
| case IrOpcode::kFinishRegion:
|
| case IrOpcode::kObjectIsSmi:
|
| break;
|
| - case IrOpcode::kCheckMaps: {
|
| - CheckMapsParameters params = CheckMapsParametersOf(node->op());
|
| - if (params.flags() == CheckMapsFlag::kNone) break;
|
| - } // Fallthrough.
|
| default:
|
| VirtualState* state = virtual_states_[node->id()];
|
| if (VirtualObject* obj =
|
| @@ -1512,43 +1492,6 @@
|
| ProcessLoadFromPhi(offset, from, node, state);
|
| } else {
|
| UpdateReplacement(state, node, nullptr);
|
| - }
|
| -}
|
| -
|
| -void EscapeAnalysis::ProcessCheckMaps(Node* node) {
|
| - DCHECK_EQ(node->opcode(), IrOpcode::kCheckMaps);
|
| - ForwardVirtualState(node);
|
| - Node* checked = ResolveReplacement(NodeProperties::GetValueInput(node, 0));
|
| - VirtualState* state = virtual_states_[node->id()];
|
| - if (VirtualObject* object = GetVirtualObject(state, checked)) {
|
| - if (!object->IsTracked()) {
|
| - if (status_analysis_->SetEscaped(node)) {
|
| - TRACE(
|
| - "Setting #%d (%s) to escaped because checked object #%i is not "
|
| - "tracked\n",
|
| - node->id(), node->op()->mnemonic(), object->id());
|
| - }
|
| - return;
|
| - }
|
| - CheckMapsParameters params = CheckMapsParametersOf(node->op());
|
| -
|
| - Node* value = object->GetField(HeapObject::kMapOffset / kPointerSize);
|
| - if (value) {
|
| - value = ResolveReplacement(value);
|
| - // TODO(tebbi): We want to extend this beyond constant folding with a
|
| - // CheckMapsValue operator that takes the load-eliminated map value as
|
| - // input.
|
| - if (value->opcode() == IrOpcode::kHeapConstant &&
|
| - params.maps().contains(ZoneHandleSet<Map>(
|
| - Handle<Map>::cast(OpParameter<Handle<HeapObject>>(value))))) {
|
| - TRACE("CheckMaps #%i seems to be redundant (until now).\n", node->id());
|
| - return;
|
| - }
|
| - }
|
| - }
|
| - if (status_analysis_->SetEscaped(node)) {
|
| - TRACE("Setting #%d (%s) to escaped (checking #%i)\n", node->id(),
|
| - node->op()->mnemonic(), checked->id());
|
| }
|
| }
|
|
|
|
|