Revision: 7838
Author:   [email protected]
Date:     Tue May 10 05:50:32 2011
Log: Ensure that we are getting steps from inline allocation when doing incremental sweeping.

Delay full collections when we decided do to an incremental mark-sweep even if incremental collector is still sweeping and have not started marking yet.

Fix ll_prof.py to handle lack of code deletion events.

Review URL: http://codereview.chromium.org/6995018
http://code.google.com/p/v8/source/detail?r=7838

Modified:
 /branches/experimental/gc/src/heap.cc
 /branches/experimental/gc/src/incremental-marking.cc
 /branches/experimental/gc/tools/ll_prof.py

=======================================
--- /branches/experimental/gc/src/heap.cc       Tue May 10 04:21:11 2011
+++ /branches/experimental/gc/src/heap.cc       Tue May 10 05:50:32 2011
@@ -482,7 +482,7 @@

   if (collector == MARK_COMPACTOR &&
       !mark_compact_collector()->PreciseSweepingRequired() &&
-      incremental_marking()->IsMarkingIncomplete() &&
+      !incremental_marking()->IsStopped() &&
       !incremental_marking()->should_hurry() &&
       FLAG_incremental_marking_steps) {
     if (FLAG_trace_incremental_marking) {
=======================================
--- /branches/experimental/gc/src/incremental-marking.cc Tue May 10 04:21:11 2011 +++ /branches/experimental/gc/src/incremental-marking.cc Tue May 10 05:50:32 2011
@@ -244,6 +244,8 @@
     }
     state_ = SWEEPING;
   }
+
+  heap_->new_space()->LowerInlineAllocationLimit(kAllocatedThreshold);
 }


@@ -275,8 +277,6 @@
   VerifyMarkbitsAreClean();
 #endif

-  heap_->new_space()->LowerInlineAllocationLimit(kAllocatedThreshold);
-
   // Mark strong roots grey.
   IncrementalMarkingRootMarkingVisitor visitor(heap_, this);
   heap_->IterateStrongRoots(&visitor, VISIT_ONLY_STRONG);
=======================================
--- /branches/experimental/gc/tools/ll_prof.py  Mon May  9 14:11:15 2011
+++ /branches/experimental/gc/tools/ll_prof.py  Tue May 10 05:50:32 2011
@@ -399,12 +399,16 @@
code = Code(name, start_address, end_address, origin, origin_offset)
         conficting_code = self.code_map.Find(start_address)
         if conficting_code:
-          LogReader._HandleCodeConflict(conficting_code, code)
-          # TODO(vitalyr): this warning is too noisy because of our
-          # attempts to reconstruct code log from the snapshot.
-          # print >>sys.stderr, \
-          #     "Warning: Skipping duplicate code log entry %s" % code
-          continue
+          if not (conficting_code.start_address == code.start_address and
+            conficting_code.end_address == code.end_address):
+            self.code_map.Remove(conficting_code)
+          else:
+            LogReader._HandleCodeConflict(conficting_code, code)
+            # TODO(vitalyr): this warning is too noisy because of our
+            # attempts to reconstruct code log from the snapshot.
+            # print >>sys.stderr, \
+            #     "Warning: Skipping duplicate code log entry %s" % code
+            continue
         self.code_map.Add(code)
         continue

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

Reply via email to