Commit 4ac08c97 authored by hpayer's avatar hpayer Committed by Commit bot

[heap] Give marking functions for incremental marking more precise names.

BUG=

Review-Url: https://codereview.chromium.org/2173773002
Cr-Commit-Position: refs/heads/master@{#38141}
parent 02b09853
......@@ -4682,7 +4682,7 @@ class IteratePromotedObjectsVisitor final : public ObjectVisitor {
// promoted objects.
if (heap_->incremental_marking()->black_allocation()) {
Code* code = Code::cast(Code::GetObjectFromEntryAddress(code_entry_slot));
IncrementalMarking::MarkObject(heap_, code);
IncrementalMarking::MarkGrey(heap_, code);
}
}
......@@ -4718,7 +4718,7 @@ void Heap::IteratePromotedObject(HeapObject* target, int size,
// regular visiting and IteratePromotedObjectPointers.
if (!was_marked_black) {
if (incremental_marking()->black_allocation()) {
IncrementalMarking::MarkObject(this, target->map());
IncrementalMarking::MarkGrey(this, target->map());
incremental_marking()->IterateBlackObject(target);
}
}
......
......@@ -197,14 +197,6 @@ void IncrementalMarking::TransferMark(Heap* heap, Address old_start,
#endif
}
static inline void MarkBlackOrKeepBlack(HeapObject* heap_object,
MarkBit mark_bit, int size) {
DCHECK(!Marking::IsImpossible(mark_bit));
if (Marking::IsBlack(mark_bit)) return;
Marking::MarkBlack(mark_bit);
MemoryChunk::IncrementLiveBytesFromGC(heap_object, size);
}
class IncrementalMarkingMarkingVisitor
: public StaticMarkingVisitor<IncrementalMarkingMarkingVisitor> {
public:
......@@ -296,7 +288,7 @@ class IncrementalMarkingMarkingVisitor
// Marks the object grey and pushes it on the marking stack.
INLINE(static void MarkObject(Heap* heap, Object* obj)) {
IncrementalMarking::MarkObject(heap, HeapObject::cast(obj));
IncrementalMarking::MarkGrey(heap, HeapObject::cast(obj));
}
// Marks the object black without pushing it on the marking stack.
......@@ -341,7 +333,7 @@ class IncrementalMarkingRootMarkingVisitor : public ObjectVisitor {
Object* obj = *p;
if (!obj->IsHeapObject()) return;
IncrementalMarking::MarkObject(heap_, HeapObject::cast(obj));
IncrementalMarking::MarkGrey(heap_, HeapObject::cast(obj));
}
Heap* heap_;
......@@ -635,7 +627,7 @@ void IncrementalMarking::MarkObjectGroups() {
DCHECK(IsMarking());
IncrementalMarkingRootMarkingVisitor visitor(this);
heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkObject);
heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkGrey);
heap_->isolate()->global_handles()->IterateObjectGroups(
&visitor, &MarkCompactCollector::IsUnmarkedHeapObjectWithHeap);
heap_->isolate()->global_handles()->RemoveImplicitRefGroups();
......@@ -722,7 +714,7 @@ void IncrementalMarking::RetainMaps() {
if (i >= number_of_disposed_maps && !map_retaining_is_disabled &&
Marking::IsWhite(map_mark)) {
if (ShouldRetainMap(map, age)) {
MarkObject(heap(), map);
MarkGrey(heap(), map);
}
Object* prototype = map->prototype();
if (age > 0 && prototype->IsHeapObject() &&
......@@ -865,29 +857,34 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() {
void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) {
MarkObject(heap_, map);
MarkGrey(heap_, map);
IncrementalMarkingMarkingVisitor::IterateBody(map, obj);
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
#if ENABLE_SLOW_DCHECKS
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address());
SLOW_DCHECK(Marking::IsGrey(mark_bit) ||
(obj->IsFiller() && Marking::IsWhite(mark_bit)) ||
(chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR) &&
Marking::IsBlack(mark_bit)));
#endif
MarkBlackOrKeepBlack(obj, mark_bit, size);
MarkBlack(obj, size);
}
void IncrementalMarking::MarkObject(Heap* heap, HeapObject* obj) {
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
void IncrementalMarking::MarkGrey(Heap* heap, HeapObject* object) {
MarkBit mark_bit = ObjectMarking::MarkBitFrom(object);
if (Marking::IsWhite(mark_bit)) {
heap->incremental_marking()->WhiteToGreyAndPush(obj, mark_bit);
heap->incremental_marking()->WhiteToGreyAndPush(object, mark_bit);
}
}
void IncrementalMarking::MarkBlack(HeapObject* obj, int size) {
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
if (Marking::IsBlack(mark_bit)) return;
Marking::GreyToBlack(mark_bit);
MemoryChunk::IncrementLiveBytesFromGC(obj, size);
}
intptr_t IncrementalMarking::ProcessMarkingDeque(intptr_t bytes_to_process) {
intptr_t bytes_processed = 0;
......
......@@ -204,7 +204,9 @@ class IncrementalMarking {
bool IsIdleMarkingDelayCounterLimitReached();
static void MarkObject(Heap* heap, HeapObject* object);
static void MarkGrey(Heap* heap, HeapObject* object);
static void MarkBlack(HeapObject* object, int size);
static void TransferMark(Heap* heap, Address old_start, Address new_start);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment