-
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: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#82867}
6e8d4f55