• Dominik Inführ's avatar
    [heap] Introduce new ThreadState with flags · 99dbb750
    Dominik Inführ authored
    Change ThreadState representation from a fixed set of values to
    either Parked or Running with two additional flags (or bits) that
    are used when either a collection or a safepoint requested. Setting
    either of these flags forces Park(), Unpark() and Safepoint() into
    their slow path.
    
    Currently we use the CollectionRequested flag on the main thread,
    while SafepointRequested is used on background threads.
    
    In case the slow path sees the CollectionRequested flag, it will
    perform a GC. When encountering the SafepointRequested flag, the
    background thread will participate in the safepoint protocol and
    park itself for the duration of the safepoint operation.
    
    This CL is a prerequisite for supporting safepoints across multiple
    isolates. When safepointing multiple isolates, the main thread will
    use both the CollectionRequested and SafepointRequested flag. This
    isn't possible with the current system.
    
    Design Doc: https://docs.google.com/document/d/1y6C9zAACEr0sBYMIYk3YpXosnkF3Ak4CEuWJu1-3zXs/edit?usp=sharing
    
    Bug: v8:11708
    Change-Id: I16b88740182d9c13bce54be163b334761529a5f0
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211894Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77349}
    99dbb750
local-heap.cc 9.06 KB