| 211 | | TODO try it with -flate-abstract-sat-var |
| | 211 | {{{ |
| | 212 | with baseline libraries |
| | 213 | |
| | 214 | Allocations |
| | 215 | ------------------------------------------------------------------------------- |
| | 216 | Program ll-baselinell-protect-ignor ll-lam10pin ll-it10pin |
| | 217 | ------------------------------------------------------------------------------- |
| | 218 | puzzle 165864160 +0.0% +0.0% -15.1% |
| | 219 | }}} |
| | 220 | |
| | 221 | The difference: a join point inside a letrec in $wtransfer (itself also recursive) gets floated out and then inlined back in. This ultimately eliminates several lets. A considerable amount of code duplication, but with a big pay off. The (LNE) join point has 15 free variables, but does not occur in a thunk. The free variables are probably getting parameter scrutinization discounts once floated. |