• Michael Lippautz's avatar
    cppgc: Rework prefinalizers · cf25b3bc
    Michael Lippautz authored
    Move the check for whether an object is live or dead out of the
    prefinalizer trampoline. Moving it into the backend allows for
    inlining the check which avoids a call to the trampoline for live
    objects.
    
    On catapult benchmarks (e.g. cnn:2021, nytimes:2020), there's often
    ~2k finalizers registered. In order to avoid memory overhead in the
    range of a few KB, we store the fact whether the object points to the
    base object payload in the LSB of the pointer. For caged builds this
    is replaced with just storing the index into the cage for both object
    and base object payload.
    
    Locally saves around ~10% of atomic sweeping processing time which is
    in the order of .05ms.
    
    Bug: v8:12698
    Change-Id: I198205a6b1d57fc2df821ee4e73e53dc6f825ff5
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497764Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
    Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#79442}
    cf25b3bc
pointer-with-payload.h 4.77 KB