[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}
This commit is contained in:
parent
26c902ec8c
commit
1575072c06
@ -4696,7 +4696,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4732,7 +4732,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);
|
||||
}
|
||||
}
|
||||
|
@ -195,14 +195,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:
|
||||
@ -294,7 +286,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.
|
||||
@ -339,7 +331,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_;
|
||||
@ -633,7 +625,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();
|
||||
@ -720,7 +712,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() &&
|
||||
@ -863,29 +855,35 @@ 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, ForceCompletionAction completion) {
|
||||
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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user