February report of the Perl 6 Development Grant of Jonathan Worthington
Fri, 15-Mar-2019 by
The majority of my Perl 6 grant time during February was spent on the escape analysis and scalar replacement work. Happily, the first round of work on this analysis and optimization reached the point of being complete and stable enough to merge into MoarVM master, so Perl 6 users can now benefit from it. I also made allocation profiling aware of scalar replacement, meaning profiling does not block the optimization and collects statistics about how many scalar replacements took place.
I also started on the next round of escape analysis work, which handles transitive object relationships. This means if we have, for instance, a `Scalar` that does not escape, and a `Num` which also does not escape is assigned into it, then we can scalar replace both. The basic algorithm currently in master would conservatively consider the `Num` as having escaped. Further work is needed with regard to deoptimization of such cases before this work can be merged.
I also worked on enabling more aggressive optimization of inlined code. Sometimes, knowledge of the context the code is being inlined into allows for significant further optimization of the inlinee. While profiling a hash benchmark, I spotted some duplicated sanity checks during hash access, and eliminated those for a speedup, and started looking into a means to speed up attribute access in the non-mixin case.
Finally, I fixed a recent regression, and did assorted bits of code reivew, replying to issues, and merging PRs.
9:45 Fix remaining issues with basic escape analysis and
scalar replacement; merge the branch
1:26 Integrate allocation profiling and scalar replacement
5:09 Work on transitive object handling in escape analsyis
3:50 More aggressively optimize inlined code after inlining
1:43 Look into a bug involving BEGIN, closures, and $/; fix it.
1:29 Eliminate duplicate checks on hash access, giving ~5% off
a hash access benchmark
3:55 Work on speeding up attribute access in non-mixin cases
1:48 Assorted code review, replying to issues, merging PRs
Remaining funding-approved hours on current grant period: 131:46
Remaining community-approved hours on current grant period: 297:46