diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-12-30 08:38:31 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-30 08:38:31 -0800 |
commit | b5ee16f318019f89d8a897437fb906d470cfa8d9 (patch) | |
tree | 8be0a0cb6585ced8279e1d83f719ef0684a870e2 /test/binaryen.js/functions.js | |
parent | 10bf008c73948d4592e567cdbce330dff724b1c2 (diff) | |
download | binaryen-b5ee16f318019f89d8a897437fb906d470cfa8d9.tar.gz binaryen-b5ee16f318019f89d8a897437fb906d470cfa8d9.tar.bz2 binaryen-b5ee16f318019f89d8a897437fb906d470cfa8d9.zip |
SpillPointers pass (#1339)
This is an experiment to help with Boehm-style GC. It will spill things that could be pointers to the C stack, so that they can be seen by conservative garbage collection.
The spills add code size and runtime overhead, but actually less than I thought: 10% slower (smaller than the difference between VMs), 15% gzip size larger. We can do even better with more optimizations for this, like a dead store elimination pass.
This PR does the following:
* Add the new pass.
* Create an abi/ dir, with info about the pointer size and stack manipulation utilities.
* Separates out the liveness analysis from CoalesceLocals, so that other passes can use it (like SpillPointers).
* Refactor out the SortedVector class from the liveness analysis to a separate file (just seems nicer that way).
Diffstat (limited to 'test/binaryen.js/functions.js')
0 files changed, 0 insertions, 0 deletions