https://chromium.googlesource.com/v8/v8/+/6e8d4f55edfd01244d7dd0380f56a114234c18cacommit 6e8d4f55edfd01244d7dd0380f56a114234c18ca
Author: Tobias Tebbi <
te...@chromium.org>
Date: Wed Aug 31 12:56:43 2022
[turboshaft] add operation use counts
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/+/3863266Auto-Submit: Tobias Tebbi <
te...@chromium.org>
Commit-Queue: Tobias Tebbi <
te...@chromium.org>
Reviewed-by: Nico Hartmann <
nicoha...@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82867}
[modify]
https://crrev.com/6e8d4f55edfd01244d7dd0380f56a114234c18ca/src/compiler/turboshaft/operations.h[modify]
https://crrev.com/6e8d4f55edfd01244d7dd0380f56a114234c18ca/src/compiler/turboshaft/graph.h[modify]
https://crrev.com/6e8d4f55edfd01244d7dd0380f56a114234c18ca/src/compiler/turboshaft/optimization-phase.h