• 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
Name
Last commit
Last update
..
assembler.h Loading commit data...
decompression-optimization.cc Loading commit data...
decompression-optimization.h Loading commit data...
deopt-data.h Loading commit data...
fast-hash.h Loading commit data...
graph-builder.cc Loading commit data...
graph-builder.h Loading commit data...
graph-visualizer.cc Loading commit data...
graph-visualizer.h Loading commit data...
graph.cc Loading commit data...
graph.h Loading commit data...
operations.cc Loading commit data...
operations.h Loading commit data...
optimization-phase.cc Loading commit data...
optimization-phase.h Loading commit data...
recreate-schedule.cc Loading commit data...
recreate-schedule.h Loading commit data...
sidetable.h Loading commit data...
utils.h Loading commit data...
value-numbering-assembler.h Loading commit data...