Commit 9c2fc213 authored by Hannes Payer's avatar Hannes Payer Committed by Commit Bot

[heap] Various new LO spaces fixes in Scavenger.

Bug: chromium:852420
Change-Id: I54db2251378147df63ca20f3d32d286186f3b784
Reviewed-on: https://chromium-review.googlesource.com/c/1352306Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#57903}
parent df106114
......@@ -219,8 +219,11 @@ SlotCallbackResult Scavenger::RememberedSetEntryNeeded(
bool Scavenger::HandleLargeObject(Map map, HeapObject* object,
int object_size) {
if (V8_UNLIKELY(FLAG_young_generation_large_objects &&
object_size > kMaxRegularHeapObjectSize)) {
// TODO(hpayer): Make this check size based, i.e.
// object_size > kMaxRegularHeapObjectSize
if (V8_UNLIKELY(
FLAG_young_generation_large_objects &&
MemoryChunk::FromHeapObject(object)->IsInNewLargeObjectSpace())) {
DCHECK_EQ(NEW_LO_SPACE,
MemoryChunk::FromHeapObject(object)->owner()->identity());
if (object->map_slot().Release_CompareAndSwap(
......
......@@ -3558,6 +3558,8 @@ void LargeObjectSpace::FreeUnmarkedObjects() {
LargePage* current = first_page();
IncrementalMarking::NonAtomicMarkingState* marking_state =
heap()->incremental_marking()->non_atomic_marking_state();
// Right-trimming does not update the objects_size_ counter. We are lazily
// updating it after every GC.
objects_size_ = 0;
while (current) {
LargePage* next_current = current->next_page();
......@@ -3759,7 +3761,9 @@ void NewLargeObjectSpace::FreeAllObjects() {
current);
current = next_current;
}
DCHECK_EQ(objects_size_, 0);
// Right-trimming does not update the objects_size_ counter. We are lazily
// updating it after every GC.
objects_size_ = 0;
}
CodeLargeObjectSpace::CodeLargeObjectSpace(Heap* heap)
......
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