Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: src/compiler/escape-analysis.cc

Issue 2692753004: [turbofan] escape analysis supports arguments object and rest elements (Closed)
Patch Set: switch to ZoneVector Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/escape-analysis.h" 5 #include "src/compiler/escape-analysis.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/flags.h" 9 #include "src/base/flags.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 break; 682 break;
683 case IrOpcode::kLoadField: 683 case IrOpcode::kLoadField:
684 case IrOpcode::kLoadElement: { 684 case IrOpcode::kLoadElement: {
685 if (Node* rep = object_analysis_->GetReplacement(node)) { 685 if (Node* rep = object_analysis_->GetReplacement(node)) {
686 if (IsAllocation(rep) && CheckUsesForEscape(node, rep)) { 686 if (IsAllocation(rep) && CheckUsesForEscape(node, rep)) {
687 RevisitInputs(rep); 687 RevisitInputs(rep);
688 RevisitUses(rep); 688 RevisitUses(rep);
689 } 689 }
690 } else { 690 } else {
691 Node* from = NodeProperties::GetValueInput(node, 0); 691 Node* from = NodeProperties::GetValueInput(node, 0);
692 from = object_analysis_->ResolveReplacement(from);
Tobias Tebbi 2017/02/15 14:16:05 This is a drive-by fix. It was sound before, but i
692 if (SetEscaped(from)) { 693 if (SetEscaped(from)) {
693 TRACE("Setting #%d (%s) to escaped because of unresolved load #%i\n", 694 TRACE("Setting #%d (%s) to escaped because of unresolved load #%i\n",
694 from->id(), from->op()->mnemonic(), node->id()); 695 from->id(), from->op()->mnemonic(), node->id());
695 RevisitInputs(from); 696 RevisitInputs(from);
696 RevisitUses(from); 697 RevisitUses(from);
697 } 698 }
698 } 699 }
699 700
700 RevisitUses(node); 701 RevisitUses(node);
701 break; 702 break;
(...skipping 1084 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 } 1787 }
1787 } 1788 }
1788 return false; 1789 return false;
1789 } 1790 }
1790 1791
1791 Graph* EscapeAnalysis::graph() const { return status_analysis_->graph(); } 1792 Graph* EscapeAnalysis::graph() const { return status_analysis_->graph(); }
1792 1793
1793 } // namespace compiler 1794 } // namespace compiler
1794 } // namespace internal 1795 } // namespace internal
1795 } // namespace v8 1796 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698