Commit d6a14abe authored by Dominik Inführ's avatar Dominik Inführ Committed by Commit Bot

[heap] Move start of incremental marking in allocation

Move start of incremental marking out of
RefillLinearAllocationAreaFromFreeList. This avoids a potential
safepoint while holding allocation_mutex_.

Bug: v8:10315
Change-Id: Ieb60ac68f26199eea7b6b7ad6d874851382f3d69
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2287496
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68751}
parent 8377214a
......@@ -529,12 +529,6 @@ bool PagedSpace::RefillLinearAllocationAreaFromFreeList(
// if it is big enough.
FreeLinearAllocationArea();
if (!is_local_space()) {
heap()->StartIncrementalMarkingIfAllocationLimitIsReached(
heap()->GCFlagsForIncrementalMarking(),
kGCCallbackScheduleIdleGarbageCollection);
}
size_t new_node_size = 0;
FreeSpace new_node =
free_list_->Allocate(size_in_bytes, &new_node_size, origin);
......@@ -1019,6 +1013,15 @@ AllocationResult PagedSpace::AllocateRawSlow(int size_in_bytes,
top_on_previous_step_ ? top() - top_on_previous_step_ : 0;
DCHECK_IMPLIES(!SupportsInlineAllocation(), bytes_since_last == 0);
if (!is_local_space()) {
// Start incremental marking before the actual allocation, this allows the
// allocation function to mark the object black when incremental marking is
// running.
heap()->StartIncrementalMarkingIfAllocationLimitIsReached(
heap()->GCFlagsForIncrementalMarking(),
kGCCallbackScheduleIdleGarbageCollection);
}
#ifdef V8_HOST_ARCH_32_BIT
AllocationResult result =
alignment != kWordAligned
......
......@@ -130,6 +130,7 @@ TEST(ExternalString_ExternalBackingStoreSizeIncreasesMarkCompact) {
}
TEST(ExternalString_ExternalBackingStoreSizeIncreasesAfterExternalization) {
ManualGCScope manual_gc_scope;
CcTest::InitializeVM();
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
......
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