Commit 50fc4b89 authored by Ulan Degenbaev's avatar Ulan Degenbaev Committed by Commit Bot

[heap] Avoid redundant size computation in incremental marking.

Change-Id: I91bae96b82078a310b67707f98fb257896e3e00f
Reviewed-on: https://chromium-review.googlesource.com/612083Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47314}
parent 8191211d
...@@ -811,7 +811,7 @@ bool IncrementalMarking::IsFixedArrayWithProgressBar(HeapObject* obj) { ...@@ -811,7 +811,7 @@ bool IncrementalMarking::IsFixedArrayWithProgressBar(HeapObject* obj) {
return chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR); return chunk->IsFlagSet(MemoryChunk::HAS_PROGRESS_BAR);
} }
void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) { int IncrementalMarking::VisitObject(Map* map, HeapObject* obj) {
DCHECK(marking_state()->IsGrey(obj) || marking_state()->IsBlack(obj)); DCHECK(marking_state()->IsGrey(obj) || marking_state()->IsBlack(obj));
// The object can already be black in two cases: // The object can already be black in two cases:
// 1. The object is a fixed array with the progress bar. // 1. The object is a fixed array with the progress bar.
...@@ -826,7 +826,7 @@ void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) { ...@@ -826,7 +826,7 @@ void IncrementalMarking::VisitObject(Map* map, HeapObject* obj, int size) {
DCHECK(marking_state()->IsBlack(obj)); DCHECK(marking_state()->IsBlack(obj));
WhiteToGreyAndPush(map); WhiteToGreyAndPush(map);
IncrementalMarkingMarkingVisitor visitor(heap()->mark_compact_collector()); IncrementalMarkingMarkingVisitor visitor(heap()->mark_compact_collector());
visitor.Visit(map, obj); return visitor.Visit(map, obj);
} }
void IncrementalMarking::ProcessBlackAllocatedObject(HeapObject* obj) { void IncrementalMarking::ProcessBlackAllocatedObject(HeapObject* obj) {
...@@ -860,11 +860,8 @@ intptr_t IncrementalMarking::ProcessMarkingWorklist( ...@@ -860,11 +860,8 @@ intptr_t IncrementalMarking::ProcessMarkingWorklist(
DCHECK(!marking_state()->IsImpossible(obj)); DCHECK(!marking_state()->IsImpossible(obj));
continue; continue;
} }
Map* map = obj->map();
int size = obj->SizeFromMap(map);
unscanned_bytes_of_large_object_ = 0; unscanned_bytes_of_large_object_ = 0;
VisitObject(map, obj, size); int size = VisitObject(obj->map(), obj);
bytes_processed += size - unscanned_bytes_of_large_object_; bytes_processed += size - unscanned_bytes_of_large_object_;
} }
// Report all found wrappers to the embedder. This is necessary as the // Report all found wrappers to the embedder. This is necessary as the
......
...@@ -311,7 +311,8 @@ class V8_EXPORT_PRIVATE IncrementalMarking { ...@@ -311,7 +311,8 @@ class V8_EXPORT_PRIVATE IncrementalMarking {
ForceCompletionAction completion = DO_NOT_FORCE_COMPLETION)); ForceCompletionAction completion = DO_NOT_FORCE_COMPLETION));
INLINE(bool IsFixedArrayWithProgressBar(HeapObject* object)); INLINE(bool IsFixedArrayWithProgressBar(HeapObject* object));
INLINE(void VisitObject(Map* map, HeapObject* obj, int size)); // Visits the object and returns its size.
INLINE(int VisitObject(Map* map, HeapObject* obj));
void RevisitObject(HeapObject* obj); void RevisitObject(HeapObject* obj);
......
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