• Dominik Inführ's avatar
    Reland "[heap] Replace usages of CollectionRequested with SafepointRequested" · 0bbddafd
    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: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#74739}
    0bbddafd
heap.cc 249 KB