• Dominik Inführ's avatar
    Reland "[heap] Optimize time to reach global safepoint" · 93f28d16
    Dominik Inführ authored
    This is a reland of 86038ecf
    
    Compared to the previous CL this one is adding a TSAN suppression
    for GlobalSafepoint::EnterSafepointScope. local_heaps_mutex_ of client
    isolates may be locked in any order. This would be detected by TSAN as a
    potential race. Add some additional DCHECKs to compensate for that
    missing test coverage.
    
    As a cleanup this CL also removes the unused methods ContainsLocalHeap()
    and ContainsAnyLocalHeap() from LocalHeap.
    
    Original change's description:
    > [heap] Optimize time to reach global safepoint
    >
    > Initial support for global safepoints kept it simple by entering a
    > safepoint for each of them one after another. This means
    > time-to-global-safepoint is the sum of all time-to-safepoint operations.
    > We can improve this slightly by splitting up the safepoint iteration
    > into two operations:
    >
    > 1) Initiate safepoint lock (locks local_heaps_mutex_, arms the barrier
    >    and sets SafepointRequested flag for all client threads)
    > 2) Block until all runnning client threads reach a safepoint
    >
    > We now perform operation 1) for all clients first and only then start
    > with operation 2).
    >
    > Bug: v8:11708
    > Change-Id: Iaafd3c6d70bcf7026f722633e9250b04148b3da6
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3310910
    > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#78308}
    
    Bug: v8:11708, v8:12492
    Change-Id: I7087ba23c08f2d4edb9b632eef3c218fc76342e7
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3328786Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78583}
    93f28d16