Revision: 10825
Author:   [email protected]
Date:     Fri Feb 24 05:32:58 2012
Log:      Revert "Tune snapshot taking progress indicator."

This reverts commit 630437a0239ce4de029ea367083cb12a8099506c.
http://code.google.com/p/v8/source/detail?r=10825

Modified:
 /branches/bleeding_edge/src/profile-generator.cc

=======================================
--- /branches/bleeding_edge/src/profile-generator.cc Fri Feb 24 04:52:35 2012 +++ /branches/bleeding_edge/src/profile-generator.cc Fri Feb 24 05:32:58 2012
@@ -3166,7 +3166,7 @@
   debug_heap->Verify();
 #endif

-  SetProgressTotal(2);  // 2 passes.
+  SetProgressTotal(4);  // 2 passes + dominators + sizes.

 #ifdef DEBUG
   debug_heap->Verify();
@@ -3303,9 +3303,10 @@
     affected[children[i].to()->ordered_index()] = true;
   }

-  bool changed = true;
-  while (changed) {
-    changed = false;
+  int changed = 1;
+  const int base_progress_counter = progress_counter_;
+  while (changed != 0) {
+    changed = 0;
     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.
@@ -3329,13 +3330,17 @@
       if (new_idom_index != kNoDominator
           && dominators->at(i) != new_idom_index) {
         (*dominators)[i] = new_idom_index;
-        changed = true;
+        ++changed;
         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;
 }
@@ -3359,19 +3364,21 @@
   // 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.
-  List<HeapEntry*>& entries = *snapshot_->entries();
-  for (int i = 0; i < entries.length(); ++i) {
-    HeapEntry* entry = entries[i];
+  for (int i = 0; i < snapshot_->entries()->length(); ++i) {
+    HeapEntry* entry = snapshot_->entries()->at(i);
     entry->set_retained_size(entry->self_size());
   }
-  for (int i = 0; i < entries.length(); ++i) {
-    HeapEntry* entry = entries[i];
+  for (int i = 0;
+       i < snapshot_->entries()->length();
+       ++i, ProgressStep()) {
+    HeapEntry* entry = snapshot_->entries()->at(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;
 }

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to