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

Unified Diff: src/compiler/escape-analysis.h

Issue 1499143002: Improve escape analysis (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix bug Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/compiler/escape-analysis.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/escape-analysis.h
diff --git a/src/compiler/escape-analysis.h b/src/compiler/escape-analysis.h
index ce372b598ade5262a80e328f6d184b94ba6dc029..9a91d1a07a6b3a017462e5586e5a9d97247421da 100644
--- a/src/compiler/escape-analysis.h
+++ b/src/compiler/escape-analysis.h
@@ -16,6 +16,7 @@ namespace compiler {
class CommonOperatorBuilder;
class EscapeAnalysis;
class VirtualState;
+class VirtualObject;
// EscapeStatusAnalysis determines for each allocation whether it escapes.
@@ -46,8 +47,11 @@ class EscapeStatusAnalysis {
void ProcessAllocate(Node* node);
void ProcessFinishRegion(Node* node);
void ProcessStoreField(Node* node);
- bool CheckUsesForEscape(Node* node) { return CheckUsesForEscape(node, node); }
- bool CheckUsesForEscape(Node* node, Node* rep);
+ void ProcessStoreElement(Node* node);
+ bool CheckUsesForEscape(Node* node, bool phi_escaping = false) {
+ return CheckUsesForEscape(node, node, phi_escaping);
+ }
+ bool CheckUsesForEscape(Node* node, Node* rep, bool phi_escaping = false);
void RevisitUses(Node* node);
void RevisitInputs(Node* node);
bool SetEscaped(Node* node);
@@ -87,17 +91,28 @@ class EscapeAnalysis {
bool Process(Node* node);
void ProcessLoadField(Node* node);
void ProcessStoreField(Node* node);
+ void ProcessLoadElement(Node* node);
+ void ProcessStoreElement(Node* node);
+ void ProcessAllocationUsers(Node* node);
void ProcessAllocation(Node* node);
void ProcessFinishRegion(Node* node);
void ProcessCall(Node* node);
void ProcessStart(Node* node);
bool ProcessEffectPhi(Node* node);
+ void ProcessLoadFromPhi(int offset, Node* from, Node* node,
+ VirtualState* states);
+
void ForwardVirtualState(Node* node);
+
bool IsEffectBranchPoint(Node* node);
bool IsDanglingEffectNode(Node* node);
int OffsetFromAccess(Node* node);
+ VirtualObject* GetVirtualObject(Node* at, NodeId id);
+
void DebugPrint();
+ void DebugPrintState(VirtualState* state);
+ void DebugPrintObject(VirtualObject* state, NodeId id);
Graph* graph() const { return graph_; }
CommonOperatorBuilder* common() const { return common_; }
« no previous file with comments | « no previous file | src/compiler/escape-analysis.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698