perf(vm): new tailcalling dispatch behind feature tailcall (nightly required)#5047
perf(vm): new tailcalling dispatch behind feature tailcall (nightly required)#5047zhuzhu81998 wants to merge 12 commits intoboa-dev:mainfrom
tailcall (nightly required)#5047Conversation
Test262 conformance changes
Tested main commit: |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #5047 +/- ##
===========================================
+ Coverage 47.24% 59.21% +11.96%
===========================================
Files 476 563 +87
Lines 46892 62797 +15905
===========================================
+ Hits 22154 37185 +15031
- Misses 24738 25612 +874 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2f6c054 to
44a9582
Compare
44a9582 to
43fdf98
Compare
|
So there was a noticeable performance drop when i added the tracing part to I think it might be related to how It is also possible that maybe my 550 benchmark was an outlier 😂 . Will investigate a bit more. |
Closes #4858 .
I had to move the big opcode list around a bit hence the large number of diffs.
Specifically, had to split the opcode handlers generation into a separate macros so feature-conditional compilation works. And to avoid repeating the gigantic opcode list twice (for tailcall and non-tailcall handlers), i put the list into a helper macros
for_each_opcode.Budgeted handlers would still use the standard loop-based approach.
Tailcalling handlers support tracing as well.
On main:
With this PR and tracing enabled (
cargo run --release --bin boa --features tailcall -- ../data/bench/bench-v8/combined.js):TODO:
- [ ] budgeted dispatch still use old call threading right now.(async interrupt does not play very well with tailcalling dispatch)