... | ... | @@ -24,12 +24,17 @@ Tickets with example of code that would benefit from nested CRP: |
|
|
- Paper-Writeup of CPR
|
|
|
- Shouldn’t nested CPR help a lot with Complex-heavy code? Is there something in nofib?
|
|
|
- Which of the existing CPR tickets are solved right now?
|
|
|
- Try passing CPR information from the scrunitee to the pattern variables. For that: Reverse flow of analysis for complex scrunitees (for simple, we want the demand coming from the body, for complex, this is not so important.)
|
|
|
- Use ticky-profiling to learn more about the effects of nested CPR.
|
|
|
- Look at DmdAnal-related [Status/SLPJ-Tickets](status/slpj-tickets) and see which ones are affected by nested-cpr.
|
|
|
- Do not destroy join points or improve the code genrator (see below).
|
|
|
- Can we make sure more stuff gets the `Converging` flag, e.g. after a `case` of an unboxed value? Should case binders get the `Converging` flag? What about pattern match variables in strict data constructors? Unboxed values? See below.
|
|
|
|
|
|
### DONEs
|
|
|
|
|
|
- Try passing CPR information from the scrunitee to the pattern variables. For that: Reverse flow of analysis for complex scrunitees (for simple, we want the demand coming from the body, for complex, this is not so important.)
|
|
|
|
|
|
- Done, and relevant: Deactivating gives +11% in wave4main, a few \<+1% and no gains.
|
|
|
|
|
|
### Motivating examples
|
|
|
|
|
|
|
... | ... | @@ -42,6 +47,9 @@ Motivation is always good. Here I try to look at examples where people were expe |
|
|
### Degradation exploration and explanation
|
|
|
|
|
|
|
|
|
The following section is partly outdated, as with a fix (do not mess with the unfolding in WorkWrap if no wrapper is being added) and the case-to-body flow, no Allocation degradation is found any more!
|
|
|
|
|
|
|
|
|
At one point, I thought that a major contributor to increased allocations is nested-CPR’ing things returning `String`, causing them to return `(# Char#, String #)`. But removing the `CPR` information from `C#` calls has zero effect on the allocations, both on `master` and on `nested-cpr`. It had very small (positive) effect on code size. Will have to look at Core...
|
|
|
|
|
|
|
... | ... | |