• 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
Name
Last commit
Last update
..
base Loading commit data...
cppgc Loading commit data...
cppgc-js Loading commit data...
allocation-observer-unittest.cc Loading commit data...
barrier-unittest.cc Loading commit data...
bitmap-test-utils.h Loading commit data...
bitmap-unittest.cc Loading commit data...
code-object-registry-unittest.cc Loading commit data...
embedder-tracing-unittest.cc Loading commit data...
gc-idle-time-handler-unittest.cc Loading commit data...
gc-tracer-unittest.cc Loading commit data...
heap-controller-unittest.cc Loading commit data...
heap-unittest.cc Loading commit data...
heap-utils.cc Loading commit data...
heap-utils.h Loading commit data...
index-generator-unittest.cc Loading commit data...
list-unittest.cc Loading commit data...
local-factory-unittest.cc Loading commit data...
local-heap-unittest.cc Loading commit data...
marking-unittest.cc Loading commit data...
marking-worklist-unittest.cc Loading commit data...
memory-reducer-unittest.cc Loading commit data...
object-start-bitmap-unittest.cc Loading commit data...
object-stats-unittest.cc Loading commit data...
persistent-handles-unittest.cc Loading commit data...
progressbar-unittest.cc Loading commit data...
safepoint-unittest.cc Loading commit data...
slot-set-unittest.cc Loading commit data...
spaces-unittest.cc Loading commit data...
unmapper-unittest.cc Loading commit data...