summaryrefslogtreecommitdiff
path: root/src/shell-interface.h
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2021-10-13 17:11:28 -0700
committerGitHub <noreply@github.com>2021-10-14 00:11:28 +0000
commit805534eee318012ce0c26d323335e5a9cb132267 (patch)
tree147f8087c00ebf71a039e335097ca581f1f04149 /src/shell-interface.h
parentf1823c3a32a6901512cab3b4224ce365d06dd0b7 (diff)
downloadbinaryen-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