-
Dominik Inführ authored
This is a reland of 5ef4e14f The previous CL caused flaky test failures with some concurrent allocation tests. The reason for this was that the main thread's state and collection_requested_ can't be updated in an atomic operation anymore. Any thread will now invoke RequestGC() first. Then it will wait in AwaitCollectionBackground() when the main thread was running. Both methods can and will be invoked more than once. The new flag block_for_collection_ is used to decide whether a thread needs wait for the GC. collection_requested_ can't be used for that purpose because that flag is also true when the main thread is parked. Original change's description: > [heap] Replace usages of CollectionRequested with SafepointRequested > > CollectionRequested was used exclusively on the main thread when a > background thread requested a GC. The main thread never used > SafepointRequested at any time. Now with the shared GC we might need to > stop multiple isolates in a safepoint in the future. In such a situation > we would need to use SafepointRequested also on the main thread. > > This CL prepares V8 for this situation by using SafepointRequested > instead of CollectionRequested and friends on the main thread. The slow > path of Safepoint(), Park() and Unpark() will check in the future > whether the main thread needs to halt for a shared GC or needs to > perform a local GC. At the moment, simply performing the local GC is > still enough. > > Bug: v8:11708 > Change-Id: I819b6f7db8251074a4adf8b554e0a1393c76f7da > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2891834 > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#74673} Bug: v8:11708 Change-Id: Ibe245cd1822310123b3af2026872fd9927ee410e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2912576 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74739}
0bbddafd