This commit adds a register allocator, with 8 available "register" slots. In testing with various random blobs, this moves anywhere from 30% to 74% of value accesses into predefined slots, and is about a ~20% perf increase end-to-end. To actually make this usable, a few structural changes were also made: - we no longer do one instruction per interpret call - trapping is an (unlikely) exit condition - the label and frame stacks are replaced with linked lists with a huge node cache size, as we only need to touch the last element and push/pop is very frequent. |
||
|---|---|---|
| .. | ||
| abench.cpp | ||
| CMakeLists.txt | ||
| dns.cpp | ||
| image.cpp | ||
| js.cpp | ||
| test262-runner.cpp | ||
| wasm.cpp | ||
| xml.cpp | ||