• Dominik Inführ's avatar
    Reland "[heap] Store size with invalidated object" · 23b2d571
    Dominik Inführ authored
    This is a reland of commit 5d235def
    
    The previous version of this CL got reverted because the cached
    size of an invalidated object wasn't up-to-date when performing a GC.
    
    Not all size changes go through NotifyObjectLayoutChange, so
    https://crrev.com/c/3607992 introduced NotifyObjectSizeChange as a
    bottleneck for object size changes/right-trimming. This method is
    now used to update the size of invalidated objects.
    
    Original change's description:
    > [heap] Store size with invalidated object
    >
    > When updating pointers during a full GC, a page might not be swept
    > already. In such cases there might be invalid objects and slots recorded
    > in free memory. Updating tagged slots in free memory is fine even though
    > it is superfluous work.
    >
    > However, the GC also needs to calculate the size of potentially dead
    > invalid objects in order to be able to check whether a slot is within
    > that object. But since that object is dead, its map might be dead as
    > well which makes size calculation impossible on such objects. The CL
    > changes this to cache the size of invalid objects. A follow-up CL will
    > also check the marking bit of invalid objects.
    >
    > Bug: v8:12578, chromium:1316289
    > Change-Id: Ie773d0862a565982957e0dc409630d76552d1a32
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3599482
    > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    > Reviewed-by: Jakob Linke <jgruber@chromium.org>
    > Reviewed-by: Patrick Thier <pthier@chromium.org>
    > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#80169}
    
    Bug: v8:12578, chromium:1316289
    Change-Id: I1f7c6070b8e7d116aeb1a8d03d4f87927ab40872
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3608632Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
    Reviewed-by: 's avatarPatrick Thier <pthier@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#80262}
    23b2d571
runtime-object.cc 60.9 KB