• Tobias Tebbi's avatar
    [turboshaft] add operation use counts · 6e8d4f55
    Tobias Tebbi authored
    Some optimizations need to know if an operation has multiple uses,
    for example to avoid extending live-ranges.
    However, maintaining full use-lists is expensive memory-wise and
    not really needed in this case, where we only need to distinguish
    between 1 or more uses.
    Therefore, we only count the number of uses. To save even more memory,
    we use the 1 byte currently left for alignment padding in the
    operation header and put the count there.
    With a single byte, we cannot count beyond 255, but for the use-case
    at hand, this is enough. When reaching 255, we no longer track the
    use-count.
    Nodes with so many uses should be rare and their use-count will usually not go down to 1 again, so this does not loose much precision.
    
    Another possible future use of these counts is reserving memory for
    full use-lists.
    
    This CL also removes mutable access to node inputs, as this would need
    to update use-counts and is not actually needed currently.
    
    Bug: v8:12783
    Change-Id: Idd2035c6f8ced6317e3aec0c42eecd1383e86248
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3863266
    Auto-Submit: Tobias Tebbi <tebbi@chromium.org>
    Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
    Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#82867}
    6e8d4f55
optimization-phase.h 20.9 KB