diff options
author | Alon Zakai <azakai@google.com> | 2021-10-13 17:11:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-14 00:11:28 +0000 |
commit | 805534eee318012ce0c26d323335e5a9cb132267 (patch) | |
tree | 147f8087c00ebf71a039e335097ca581f1f04149 /src/shell-interface.h | |
parent | f1823c3a32a6901512cab3b4224ce365d06dd0b7 (diff) | |
download | binaryen-805534eee318012ce0c26d323335e5a9cb132267.tar.gz binaryen-805534eee318012ce0c26d323335e5a9cb132267.tar.bz2 binaryen-805534eee318012ce0c26d323335e5a9cb132267.zip |
Precompute: Track reference identity (#4243)
Precompute will run the interpreter on struct.new etc. repeatedly,
as it keeps doing so while it propagates constant values around (if one
of the operands to the struct.new becomes constant, that could have
a noticeable effect). But creating new GC data means we lose track of
their identity, and so ref.eq would not work, and we disabled basically
all struct operations. This implements identity tracking so we can start
to optimize there, which is a step towards using it for immutable field
propagation.
To track identity, always store the data representing each struct.new
in the source using the same GCData structure. That keeps identity
consistent no matter how many times we execute.
Diffstat (limited to 'src/shell-interface.h')
0 files changed, 0 insertions, 0 deletions