Revision f230a1cf deps/v8/src/hydrogen-escape-analysis.cc
deps/v8/src/hydrogen-escape-analysis.cc | ||
---|---|---|
154 | 154 |
HValue* value = state->map_value(); |
155 | 155 |
// TODO(mstarzinger): This will narrow a map check against a set of maps |
156 | 156 |
// down to the first element in the set. Revisit and fix this. |
157 |
Handle<Map> map_object = mapcheck->map_set()->first(); |
|
158 |
UniqueValueId map_id = mapcheck->map_unique_ids()->first(); |
|
159 |
HCheckValue* check = HCheckValue::New(zone, NULL, value, map_object, map_id); |
|
157 |
HCheckValue* check = HCheckValue::New( |
|
158 |
zone, NULL, value, mapcheck->first_map(), false); |
|
160 | 159 |
check->InsertBefore(mapcheck); |
161 | 160 |
return check; |
162 | 161 |
} |
... | ... | |
307 | 306 |
number_of_objects_++; |
308 | 307 |
block_states_.Clear(); |
309 | 308 |
|
310 |
// Perform actual analysis steps.
|
|
309 |
// Perform actual analysis step. |
|
311 | 310 |
AnalyzeDataFlow(allocate); |
312 | 311 |
|
313 | 312 |
cumulative_values_ += number_of_values_; |
... | ... | |
321 | 320 |
// TODO(mstarzinger): We disable escape analysis with OSR for now, because |
322 | 321 |
// spill slots might be uninitialized. Needs investigation. |
323 | 322 |
if (graph()->has_osr()) return; |
324 |
CollectCapturedValues(); |
|
325 |
PerformScalarReplacement(); |
|
323 |
int max_fixpoint_iteration_count = FLAG_escape_analysis_iterations; |
|
324 |
for (int i = 0; i < max_fixpoint_iteration_count; i++) { |
|
325 |
CollectCapturedValues(); |
|
326 |
if (captured_.is_empty()) break; |
|
327 |
PerformScalarReplacement(); |
|
328 |
captured_.Clear(); |
|
329 |
} |
|
326 | 330 |
} |
327 | 331 |
|
328 | 332 |
|
Also available in: Unified diff