Revision f230a1cf deps/v8/src/hydrogen-escape-analysis.cc

View differences:

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