heap: Fix bug in unified heap tracing by v8

Bug: chromium:1082438,chromium:1083860
Change-Id: I8f0defe0db0e420e970311bcaf0aebb3ccebb4b3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2219928
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Auto-Submit: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68042}
This commit is contained in:
Omer Katz 2020-05-28 14:29:43 +02:00 committed by Commit Bot
parent 0ffe2b53ff
commit 3408718e85

View File

@ -745,10 +745,13 @@ StepResult IncrementalMarking::EmbedderStep(double expected_duration_ms,
}
}
}
// |deadline - heap_->MonotonicallyIncreasingTimeInMs()| could be negative,
// which means |local_tracer| won't do any actual tracing, so there is no
// need to check for |deadline <= heap_->MonotonicallyIncreasingTimeInMs()|.
bool remote_tracing_done =
local_tracer->Trace(deadline - heap_->MonotonicallyIncreasingTimeInMs());
double current = heap_->MonotonicallyIncreasingTimeInMs();
local_tracer->SetEmbedderWorklistEmpty(true);
local_tracer->SetEmbedderWorklistEmpty(empty_worklist);
*duration_ms = current - start;
return (empty_worklist && remote_tracing_done)
? StepResult::kNoImmediateWork