| Index: src/profile-generator.cc
|
| diff --git a/src/profile-generator.cc b/src/profile-generator.cc
|
| index b936e79a5c4a50953d67620bd267c835d391afd7..156fbc7b63cb29782bbf85f1d8120554f7e53609 100644
|
| --- a/src/profile-generator.cc
|
| +++ b/src/profile-generator.cc
|
| @@ -3166,7 +3166,7 @@ bool HeapSnapshotGenerator::GenerateSnapshot() {
|
| debug_heap->Verify();
|
| #endif
|
|
|
| - SetProgressTotal(4); // 2 passes + dominators + sizes.
|
| + SetProgressTotal(2); // 2 passes.
|
|
|
| #ifdef DEBUG
|
| debug_heap->Verify();
|
| @@ -3303,10 +3303,9 @@ bool HeapSnapshotGenerator::BuildDominatorTree(
|
| affected[children[i].to()->ordered_index()] = true;
|
| }
|
|
|
| - int changed = 1;
|
| - const int base_progress_counter = progress_counter_;
|
| - while (changed != 0) {
|
| - changed = 0;
|
| + bool changed = true;
|
| + while (changed) {
|
| + changed = false;
|
| for (int i = root_index - 1; i >= 0; --i) {
|
| // If dominator of the entry has already been set to root,
|
| // then it can't propagate any further.
|
| @@ -3330,17 +3329,13 @@ bool HeapSnapshotGenerator::BuildDominatorTree(
|
| if (new_idom_index != kNoDominator
|
| && dominators->at(i) != new_idom_index) {
|
| (*dominators)[i] = new_idom_index;
|
| - ++changed;
|
| + changed = true;
|
| Vector<HeapGraphEdge> children = entries[i]->children();
|
| for (int j = 0; j < children.length(); ++j) {
|
| affected[children[j].to()->ordered_index()] = true;
|
| }
|
| }
|
| }
|
| - int remaining = entries_length - changed;
|
| - ASSERT(remaining >= 0);
|
| - progress_counter_ = base_progress_counter + remaining;
|
| - if (!ProgressReport(true)) return false;
|
| }
|
| return true;
|
| }
|
| @@ -3364,21 +3359,19 @@ bool HeapSnapshotGenerator::ApproximateRetainedSizes() {
|
| // As for the dominators tree we only know parent nodes, not
|
| // children, to sum up total sizes we "bubble" node's self size
|
| // adding it to all of its parents.
|
| - for (int i = 0; i < snapshot_->entries()->length(); ++i) {
|
| - HeapEntry* entry = snapshot_->entries()->at(i);
|
| + List<HeapEntry*>& entries = *snapshot_->entries();
|
| + for (int i = 0; i < entries.length(); ++i) {
|
| + HeapEntry* entry = entries[i];
|
| entry->set_retained_size(entry->self_size());
|
| }
|
| - for (int i = 0;
|
| - i < snapshot_->entries()->length();
|
| - ++i, ProgressStep()) {
|
| - HeapEntry* entry = snapshot_->entries()->at(i);
|
| + for (int i = 0; i < entries.length(); ++i) {
|
| + HeapEntry* entry = entries[i];
|
| int entry_size = entry->self_size();
|
| for (HeapEntry* dominator = entry->dominator();
|
| dominator != entry;
|
| entry = dominator, dominator = entry->dominator()) {
|
| dominator->add_retained_size(entry_size);
|
| }
|
| - if (!ProgressReport()) return false;
|
| }
|
| return true;
|
| }
|
|
|