28 #ifndef V8_HYDROGEN_ESCAPE_ANALYSIS_H_
29 #define V8_HYDROGEN_ESCAPE_ANALYSIS_H_
41 :
HPhase(
"H_Escape analysis", graph),
43 number_of_objects_(0),
45 cumulative_values_(0),
46 block_states_(graph->blocks()->length(), zone()) { }
51 void CollectCapturedValues();
52 bool HasNoEscapingUses(
HValue* value,
int size);
53 void PerformScalarReplacement();
57 HCapturedObject* NewStateForAllocation(
HInstruction* prev);
58 HCapturedObject* NewStateForLoopHeader(
HInstruction* prev, HCapturedObject*);
59 HCapturedObject* NewStateCopy(
HInstruction* prev, HCapturedObject* state);
61 HPhi* NewPhiAndInsert(HBasicBlock* block,
HValue* incoming_value,
int index);
63 HValue* NewMapCheckAndInsert(HCapturedObject* state, HCheckMaps* mapcheck);
65 HCapturedObject* StateAt(HBasicBlock* block) {
66 return block_states_.
at(block->block_id());
69 void SetStateAt(HBasicBlock* block, HCapturedObject* state) {
70 block_states_.
Set(block->block_id(), state);
74 ZoneList<HInstruction*> captured_;
77 int number_of_objects_;
80 int number_of_values_;
81 int cumulative_values_;
85 ZoneList<HCapturedObject*> block_states_;
91 #endif // V8_HYDROGEN_ESCAPE_ANALYSIS_H_
HEscapeAnalysisPhase(HGraph *graph)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object size
void Set(int index, const T &element)