Commit 1575072c 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/2195313003
Cr-Commit-Position: refs/heads/master@{#38230}
parent 26c902ec
...@@ -4696,7 +4696,7 @@ class IteratePromotedObjectsVisitor final : public ObjectVisitor { ...@@ -4696,7 +4696,7 @@ class IteratePromotedObjectsVisitor final : public ObjectVisitor {
// promoted objects. // promoted objects.
if (heap_->incremental_marking()->black_allocation()) { if (heap_->incremental_marking()->black_allocation()) {
Code* code = Code::cast(Code::GetObjectFromEntryAddress(code_entry_slot)); Code* code = Code::cast(Code::GetObjectFromEntryAddress(code_entry_slot));
IncrementalMarking::MarkObject(heap_, code); IncrementalMarking::MarkGrey(heap_, code);
} }
} }
...@@ -4732,7 +4732,7 @@ void Heap::IteratePromotedObject(HeapObject* target, int size, ...@@ -4732,7 +4732,7 @@ void Heap::IteratePromotedObject(HeapObject* target, int size,
// regular visiting and IteratePromotedObjectPointers. // regular visiting and IteratePromotedObjectPointers.
if (!was_marked_black) { if (!was_marked_black) {
if (incremental_marking()->black_allocation()) { if (incremental_marking()->black_allocation()) {
IncrementalMarking::MarkObject(this, target->map()); IncrementalMarking::MarkGrey(this, target->map());
incremental_marking()->IterateBlackObject(target); incremental_marking()->IterateBlackObject(target);
} }
} }
......
...@@ -195,14 +195,6 @@ void IncrementalMarking::TransferMark(Heap* heap, Address old_start, ...@@ -195,14 +195,6 @@ void IncrementalMarking::TransferMark(Heap* heap, Address old_start,
#endif #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 class IncrementalMarkingMarkingVisitor
: public StaticMarkingVisitor<IncrementalMarkingMarkingVisitor> { : public StaticMarkingVisitor<IncrementalMarkingMarkingVisitor> {
public: public:
...@@ -294,7 +286,7 @@ class IncrementalMarkingMarkingVisitor ...@@ -294,7 +286,7 @@ class IncrementalMarkingMarkingVisitor
// Marks the object grey and pushes it on the marking stack. // Marks the object grey and pushes it on the marking stack.
INLINE(static void MarkObject(Heap* heap, Object* obj)) { 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. // Marks the object black without pushing it on the marking stack.
...@@ -339,7 +331,7 @@ class IncrementalMarkingRootMarkingVisitor : public ObjectVisitor { ...@@ -339,7 +331,7 @@ class IncrementalMarkingRootMarkingVisitor : public ObjectVisitor {
Object* obj = *p; Object* obj = *p;
if (!obj->IsHeapObject()) return; if (!obj->IsHeapObject()) return;
IncrementalMarking::MarkObject(heap_, HeapObject::cast(obj)); IncrementalMarking::MarkGrey(heap_, HeapObject::cast(obj));
} }
Heap* heap_; Heap* heap_;
...@@ -633,7 +625,7 @@ void IncrementalMarking::MarkObjectGroups() { ...@@ -633,7 +625,7 @@ void IncrementalMarking::MarkObjectGroups() {
DCHECK(IsMarking()); DCHECK(IsMarking());
IncrementalMarkingRootMarkingVisitor visitor(this); IncrementalMarkingRootMarkingVisitor visitor(this);
heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkObject); heap_->mark_compact_collector()->MarkImplicitRefGroups(&MarkGrey);
heap_->isolate()->global_handles()->IterateObjectGroups( heap_->isolate()->global_handles()->IterateObjectGroups(
&visitor, &MarkCompactCollector::IsUnmarkedHeapObjectWithHeap); &visitor, &MarkCompactCollector::IsUnmarkedHeapObjectWithHeap);
heap_->isolate()->global_handles()->RemoveImplicitRefGroups(); heap_->isolate()->global_handles()->RemoveImplicitRefGroups();
...@@ -720,7 +712,7 @@ void IncrementalMarking::RetainMaps() { ...@@ -720,7 +712,7 @@ void IncrementalMarking::RetainMaps() {
if (i >= number_of_disposed_maps && !map_retaining_is_disabled && if (i >= number_of_disposed_maps && !map_retaining_is_disabled &&
Marking::IsWhite(map_mark)) { Marking::IsWhite(map_mark)) {
if (ShouldRetainMap(map, age)) { if (ShouldRetainMap(map, age)) {
MarkObject(heap(), map); MarkGrey(heap(), map);
} }
Object* prototype = map->prototype(); Object* prototype = map->prototype();
if (age > 0 && prototype->IsHeapObject() && if (age > 0 && prototype->IsHeapObject() &&
...@@ -863,29 +855,35 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() { ...@@ -863,29 +855,35 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() {
void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) { void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) {
MarkObject(heap_, map); MarkGrey(heap_, map);
IncrementalMarkingMarkingVisitor::IterateBody(map, obj); IncrementalMarkingMarkingVisitor::IterateBody(map, obj);
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
#if ENABLE_SLOW_DCHECKS #if ENABLE_SLOW_DCHECKS
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address()); MemoryChunk* chunk = MemoryChunk::FromAddress(obj->address());
SLOW_DCHECK(Marking::IsGrey(mark_bit) || SLOW_DCHECK(Marking::IsGrey(mark_bit) ||
(obj->IsFiller() && Marking::IsWhite(mark_bit)) || (obj->IsFiller() && Marking::IsWhite(mark_bit)) ||
(chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR) && (chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR) &&
Marking::IsBlack(mark_bit))); Marking::IsBlack(mark_bit)));
#endif #endif
MarkBlackOrKeepBlack(obj, mark_bit, size); MarkBlack(obj, size);
} }
void IncrementalMarking::MarkGrey(Heap* heap, HeapObject* object) {
void IncrementalMarking::MarkObject(Heap* heap, HeapObject* obj) { MarkBit mark_bit = ObjectMarking::MarkBitFrom(object);
MarkBit mark_bit = ObjectMarking::MarkBitFrom(obj);
if (Marking::IsWhite(mark_bit)) { 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 IncrementalMarking::ProcessMarkingDeque(
intptr_t bytes_to_process, ForceCompletionAction completion) { intptr_t bytes_to_process, ForceCompletionAction completion) {
intptr_t bytes_processed = 0; intptr_t bytes_processed = 0;
......
...@@ -204,7 +204,9 @@ class IncrementalMarking { ...@@ -204,7 +204,9 @@ class IncrementalMarking {
bool IsIdleMarkingDelayCounterLimitReached(); 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); 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