| OLD | NEW |
| 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 #ifndef V8_COMPILER_ESCAPE_ANALYSIS_H_ | 5 #ifndef V8_COMPILER_ESCAPE_ANALYSIS_H_ |
| 6 #define V8_COMPILER_ESCAPE_ANALYSIS_H_ | 6 #define V8_COMPILER_ESCAPE_ANALYSIS_H_ |
| 7 | 7 |
| 8 #include "src/base/flags.h" | 8 #include "src/base/flags.h" |
| 9 #include "src/compiler/graph.h" | 9 #include "src/compiler/graph.h" |
| 10 | 10 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 Graph* graph() const { return graph_; } | 66 Graph* graph() const { return graph_; } |
| 67 Zone* zone() const { return zone_; } | 67 Zone* zone() const { return zone_; } |
| 68 void AssignAliases(); | 68 void AssignAliases(); |
| 69 Alias GetAlias(NodeId id) const { return aliases_[id]; } | 69 Alias GetAlias(NodeId id) const { return aliases_[id]; } |
| 70 const ZoneVector<Alias>& GetAliasMap() const { return aliases_; } | 70 const ZoneVector<Alias>& GetAliasMap() const { return aliases_; } |
| 71 Alias AliasCount() const { return next_free_alias_; } | 71 Alias AliasCount() const { return next_free_alias_; } |
| 72 static const Alias kNotReachable; | 72 static const Alias kNotReachable; |
| 73 static const Alias kUntrackable; | 73 static const Alias kUntrackable; |
| 74 | 74 |
| 75 bool IsNotReachable(Node* node); | 75 bool IsNotReachable(Node* node); |
| 76 ZoneVector<Node*>& stack() { return stack_; } | |
| 77 | 76 |
| 78 private: | 77 private: |
| 79 void Process(Node* node); | 78 void Process(Node* node); |
| 80 void ProcessAllocate(Node* node); | 79 void ProcessAllocate(Node* node); |
| 81 void ProcessFinishRegion(Node* node); | 80 void ProcessFinishRegion(Node* node); |
| 82 void ProcessStoreField(Node* node); | 81 void ProcessStoreField(Node* node); |
| 83 void ProcessStoreElement(Node* node); | 82 void ProcessStoreElement(Node* node); |
| 84 bool CheckUsesForEscape(Node* node, bool phi_escaping = false) { | 83 bool CheckUsesForEscape(Node* node, bool phi_escaping = false) { |
| 85 return CheckUsesForEscape(node, node, phi_escaping); | 84 return CheckUsesForEscape(node, node, phi_escaping); |
| 86 } | 85 } |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 | 162 |
| 164 VirtualObject* GetVirtualObject(VirtualState* state, Node* node); | 163 VirtualObject* GetVirtualObject(VirtualState* state, Node* node); |
| 165 | 164 |
| 166 void DebugPrint(); | 165 void DebugPrint(); |
| 167 void DebugPrintState(VirtualState* state); | 166 void DebugPrintState(VirtualState* state); |
| 168 void DebugPrintObject(VirtualObject* state, Alias id); | 167 void DebugPrintObject(VirtualObject* state, Alias id); |
| 169 | 168 |
| 170 Graph* graph() const { return status_analysis_.graph(); } | 169 Graph* graph() const { return status_analysis_.graph(); } |
| 171 Zone* zone() const { return status_analysis_.zone(); } | 170 Zone* zone() const { return status_analysis_.zone(); } |
| 172 CommonOperatorBuilder* common() const { return common_; } | 171 CommonOperatorBuilder* common() const { return common_; } |
| 173 ZoneVector<Node*>& stack() { return status_analysis_.stack(); } | |
| 174 bool IsEffectBranchPoint(Node* node) { | 172 bool IsEffectBranchPoint(Node* node) { |
| 175 return status_analysis_.IsEffectBranchPoint(node); | 173 return status_analysis_.IsEffectBranchPoint(node); |
| 176 } | 174 } |
| 177 bool IsDanglingEffectNode(Node* node) { | 175 bool IsDanglingEffectNode(Node* node) { |
| 178 return status_analysis_.IsDanglingEffectNode(node); | 176 return status_analysis_.IsDanglingEffectNode(node); |
| 179 } | 177 } |
| 180 bool IsNotReachable(Node* node) { | 178 bool IsNotReachable(Node* node) { |
| 181 return status_analysis_.IsNotReachable(node); | 179 return status_analysis_.IsNotReachable(node); |
| 182 } | 180 } |
| 183 Alias GetAlias(NodeId id) const { return status_analysis_.GetAlias(id); } | 181 Alias GetAlias(NodeId id) const { return status_analysis_.GetAlias(id); } |
| 184 Alias AliasCount() const { return status_analysis_.AliasCount(); } | 182 Alias AliasCount() const { return status_analysis_.AliasCount(); } |
| 185 | 183 |
| 186 EscapeStatusAnalysis status_analysis_; | 184 EscapeStatusAnalysis status_analysis_; |
| 187 CommonOperatorBuilder* const common_; | 185 CommonOperatorBuilder* const common_; |
| 188 ZoneVector<VirtualState*> virtual_states_; | 186 ZoneVector<VirtualState*> virtual_states_; |
| 189 ZoneVector<Node*> replacements_; | 187 ZoneVector<Node*> replacements_; |
| 190 MergeCache* cache_; | 188 MergeCache* cache_; |
| 191 | 189 |
| 192 DISALLOW_COPY_AND_ASSIGN(EscapeAnalysis); | 190 DISALLOW_COPY_AND_ASSIGN(EscapeAnalysis); |
| 193 }; | 191 }; |
| 194 | 192 |
| 195 } // namespace compiler | 193 } // namespace compiler |
| 196 } // namespace internal | 194 } // namespace internal |
| 197 } // namespace v8 | 195 } // namespace v8 |
| 198 | 196 |
| 199 #endif // V8_COMPILER_ESCAPE_ANALYSIS_H_ | 197 #endif // V8_COMPILER_ESCAPE_ANALYSIS_H_ |
| OLD | NEW |