heap: Sweeper: Only emit trace scope when running
Avoids emitting scopes when not even running. This can be a problem for metrics computation which may recursively invoke EnsureSweepingCompleted() when starting marking even though the sweeper is guaranteed to be not running at this point. Bug: chromium:1211795 Change-Id: I8d7692f4e8c640f38d3c52df5c111fff4f06df9e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3109674 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Auto-Submit: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76411}
This commit is contained in:
parent
d2fd28ea12
commit
703e5387b7
@ -71,6 +71,7 @@ size_t ArrayBufferList::BytesSlow() {
|
||||
void ArrayBufferSweeper::EnsureFinished() {
|
||||
if (!sweeping_in_progress_) return;
|
||||
|
||||
TRACE_GC(heap_->tracer(), GCTracer::Scope::MC_COMPLETE_SWEEP_ARRAY_BUFFERS);
|
||||
TryAbortResult abort_result =
|
||||
heap_->isolate()->cancelable_task_manager()->TryAbort(job_->id_);
|
||||
|
||||
|
@ -1929,14 +1929,7 @@ void Heap::StartIncrementalMarking(int gc_flags,
|
||||
}
|
||||
|
||||
void Heap::CompleteSweepingFull() {
|
||||
TRACE_GC_EPOCH(tracer(), GCTracer::Scope::MC_COMPLETE_SWEEPING,
|
||||
ThreadKind::kMain);
|
||||
|
||||
{
|
||||
TRACE_GC(tracer(), GCTracer::Scope::MC_COMPLETE_SWEEP_ARRAY_BUFFERS);
|
||||
array_buffer_sweeper()->EnsureFinished();
|
||||
}
|
||||
|
||||
array_buffer_sweeper()->EnsureFinished();
|
||||
mark_compact_collector()->EnsureSweepingCompleted();
|
||||
DCHECK(!mark_compact_collector()->sweeping_in_progress());
|
||||
}
|
||||
|
@ -646,6 +646,9 @@ void MarkCompactCollector::VerifyMarkbitsAreClean() {
|
||||
void MarkCompactCollector::EnsureSweepingCompleted() {
|
||||
if (!sweeper()->sweeping_in_progress()) return;
|
||||
|
||||
TRACE_GC_EPOCH(heap()->tracer(), GCTracer::Scope::MC_COMPLETE_SWEEPING,
|
||||
ThreadKind::kMain);
|
||||
|
||||
sweeper()->EnsureCompleted();
|
||||
heap()->old_space()->RefillFreeList();
|
||||
heap()->code_space()->RefillFreeList();
|
||||
|
Loading…
Reference in New Issue
Block a user