diff options
author | Heejin Ahn <aheejin@gmail.com> | 2019-12-16 16:30:05 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-16 16:30:05 -0800 |
commit | 48ccb2bb8a7d013abba4667dfc0fb46548bef2af (patch) | |
tree | d9fd6361f11b74670498808180418b275a6c750f /third_party/llvm-project/StringMap.cpp | |
parent | 2a972a9457a42b274848ae3e8790333328e65ead (diff) | |
download | binaryen-48ccb2bb8a7d013abba4667dfc0fb46548bef2af.tar.gz binaryen-48ccb2bb8a7d013abba4667dfc0fb46548bef2af.tar.bz2 binaryen-48ccb2bb8a7d013abba4667dfc0fb46548bef2af.zip |
Implement 0-len/drop spec changes in bulk memory (#2529)
This implements recent bulk memory spec changes
(WebAssembly/bulk-memory-operations#126) in Binaryen. Now `data.drop` is
equivalent to shrinking a segment size to 0, and dropping already
dropped segments or active segments (which are thought to be dropped in
the beginning) is treated as a no-op. And all bounds checking is
performed in advance, so partial copying/filling/initializing does not
occur.
I tried to implement `visitDataDrop` in the interpreter as
`segment.data.clear();`, which is exactly what the revised spec says. I
didn't end up doing that because this also deletes all contents from
active segments, and there are cases we shouldn't do that:
- `wasm-ctor-eval` shouldn't delete active segments, because it will
store the changed contents back into segments
- When `--fuzz-exec` is given to `wasm-opt`, it runs the module and
compare the execution call results before and after transformations.
But if running a module will nullify all active segments, applying
any transformation to the module or re-running it does not make any
sense.
Diffstat (limited to 'third_party/llvm-project/StringMap.cpp')
0 files changed, 0 insertions, 0 deletions