• Michael Lippautz's avatar
    heap: ArrayBufferSweeper refactoring · 210987a5
    Michael Lippautz authored
    The refactoring is triggered by https://crrev.com/c/3121905 where we
    noticed that a bunch of tricky counter paths could be simplified,
    making reasoning about corectness easier.
    
    In this CL:
    1. Use uniqe_ptr instead of Optional to allow moving SweepingJob away
       from the header file.
    2. sweeping_in_progress_ is replaced with simply checking for a job.
    3. freed_bytes_ are moved to the job and the dependency is reversed,
       avoiding the inside-out (Job->Sweeper) dependency completely.
    4. Merge() and counter updates are merged into a Finalize() method.
    5. FinishIfDone() allows for conditional finization.
    6. young_bytes_ and old_bytes_ are removed as they were always updated
       when the corresponding bytes in the ArrayBufferList was updated.
    
    Change-Id: I56e5b04087166ce03d3a9195ac48359122a84c73
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3124776Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
    Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#76795}
    210987a5
scavenger.cc 28.8 KB