[heap] Unify MarkingDeque push and unshift operations.
authormstarzinger <mstarzinger@chromium.org>
Mon, 17 Aug 2015 16:58:16 +0000 (09:58 -0700)
committerCommit bot <commit-bot@chromium.org>
Mon, 17 Aug 2015 16:58:28 +0000 (16:58 +0000)
R=hpayer@chromium.org

Review URL: https://codereview.chromium.org/1294093003

Cr-Commit-Position: refs/heads/master@{#30202}

src/heap/incremental-marking-inl.h
src/heap/incremental-marking.cc
src/heap/mark-compact-inl.h
src/heap/mark-compact.h
test/cctest/test-mark-compact.cc

index d523841..fabf59d 100644 (file)
@@ -105,13 +105,13 @@ void IncrementalMarking::BlackToGreyAndUnshift(HeapObject* obj,
     }
   }
 
-  heap_->mark_compact_collector()->marking_deque()->UnshiftGrey(obj);
+  heap_->mark_compact_collector()->marking_deque()->Unshift(obj);
 }
 
 
 void IncrementalMarking::WhiteToGreyAndPush(HeapObject* obj, MarkBit mark_bit) {
   Marking::WhiteToGrey(mark_bit);
-  heap_->mark_compact_collector()->marking_deque()->PushGrey(obj);
+  heap_->mark_compact_collector()->marking_deque()->Push(obj);
 }
 }
 }  // namespace v8::internal
index c4477ac..544ee74 100644 (file)
@@ -197,7 +197,7 @@ class IncrementalMarkingMarkingVisitor
       chunk->set_progress_bar(start_offset);
       if (start_offset < object_size) {
         if (Marking::IsGrey(Marking::MarkBitFrom(object))) {
-          heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object);
+          heap->mark_compact_collector()->marking_deque()->Unshift(object);
         } else {
           DCHECK(Marking::IsBlack(Marking::MarkBitFrom(object)));
           heap->mark_compact_collector()->UnshiftBlack(object);
index bcb133e..37a0f88 100644 (file)
@@ -23,7 +23,8 @@ void MarkCompactCollector::SetFlags(int flags) {
 
 
 void MarkCompactCollector::PushBlack(HeapObject* obj) {
-  if (marking_deque_.PushBlack(obj)) {
+  DCHECK(Marking::IsBlack(Marking::MarkBitFrom(obj)));
+  if (marking_deque_.Push(obj)) {
     MemoryChunk::IncrementLiveBytesFromGC(obj, obj->Size());
   } else {
     Marking::BlackToGrey(obj);
@@ -32,7 +33,8 @@ void MarkCompactCollector::PushBlack(HeapObject* obj) {
 
 
 void MarkCompactCollector::UnshiftBlack(HeapObject* obj) {
-  if (!marking_deque_.UnshiftBlack(obj)) {
+  DCHECK(Marking::IsBlack(Marking::MarkBitFrom(obj)));
+  if (!marking_deque_.Unshift(obj)) {
     MemoryChunk::IncrementLiveBytesFromGC(obj, -obj->Size());
     Marking::BlackToGrey(obj);
   }
index 5c320c2..546a2ac 100644 (file)
@@ -205,9 +205,9 @@ class MarkingDeque {
 
   void SetOverflowed() { overflowed_ = true; }
 
-  // Push the (marked) object on the marking stack if there is room, otherwise
-  // mark the deque as overflowed and wait for a rescan of the heap.
-  INLINE(bool PushBlack(HeapObject* object)) {
+  // Push the object on the marking stack if there is room, otherwise mark the
+  // deque as overflowed and wait for a rescan of the heap.
+  INLINE(bool Push(HeapObject* object)) {
     DCHECK(object->IsHeapObject());
     if (IsFull()) {
       SetOverflowed();
@@ -219,16 +219,6 @@ class MarkingDeque {
     }
   }
 
-  INLINE(void PushGrey(HeapObject* object)) {
-    DCHECK(object->IsHeapObject());
-    if (IsFull()) {
-      SetOverflowed();
-    } else {
-      array_[top_] = object;
-      top_ = ((top_ + 1) & mask_);
-    }
-  }
-
   INLINE(HeapObject* Pop()) {
     DCHECK(!IsEmpty());
     top_ = ((top_ - 1) & mask_);
@@ -237,19 +227,10 @@ class MarkingDeque {
     return object;
   }
 
-  INLINE(void UnshiftGrey(HeapObject* object)) {
-    DCHECK(object->IsHeapObject());
-    if (IsFull()) {
-      SetOverflowed();
-    } else {
-      bottom_ = ((bottom_ - 1) & mask_);
-      array_[bottom_] = object;
-    }
-  }
-
-  INLINE(bool UnshiftBlack(HeapObject* object)) {
+  // Unshift the object into the marking stack if there is room, otherwise mark
+  // the deque as overflowed and wait for a rescan of the heap.
+  INLINE(bool Unshift(HeapObject* object)) {
     DCHECK(object->IsHeapObject());
-    DCHECK(Marking::IsBlack(Marking::MarkBitFrom(object)));
     if (IsFull()) {
       SetOverflowed();
       return false;
index d54e0af..73369d2 100644 (file)
@@ -59,7 +59,7 @@ TEST(MarkingDeque) {
   Address original_address = reinterpret_cast<Address>(&s);
   Address current_address = original_address;
   while (!s.IsFull()) {
-    s.PushBlack(HeapObject::FromAddress(current_address));
+    s.Push(HeapObject::FromAddress(current_address));
     current_address += kPointerSize;
   }