This would fit well with the type inference work going on currently. The idea is that one would abstractly define paths that each opcode could take, with associated type guards etc. The metacompiler would keep track of "hypothetical frame state" based on results of guards it emits, and use these to avoid duplicating guards. In the presence of even partial or probabilistic type inference information, it could select more optimal fast paths as well. This would probably lead to large wins across the board in runtime performance, as well as improve compiler maintainability a lot (no more manual tweaking). This is almost certainly a lot of work, but is probably (?) worth it. Perhaps a stripped down version of this idea could make it in soon?
Avoiding guard duplication is made possible by FrameState branch()/merge() support (bug 574930). I have not been able to come up with a good mechanism for merging branches between subsequent ops -- ideas are very welcome :)
Depends on: 574930
Brian's type inference runs over SS source in 5ms, we should just use that if we can. I've been reviewing the patch as it has evolved. /be
Likely rendered irrelevant by IonMonkey, closing to avoid clutter.
Status: NEW → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.