Changes between Version 8 and Version 9 of Frisby2013Q1


Ignore:
Timestamp:
Feb 11, 2013 4:44:02 PM (3 years ago)
Author:
nfrisby
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Frisby2013Q1

    v8 v9  
    8080  * Abstracting over a known function might change a fast entry call in RHS to a slow entry call. For example, if CTX binds `a` to a lambda, that information is lost in the right-hand side of poly_f. This can increase runtime.
    8181  * Replacing a floated binder's occurrence (ie `f` becomes `poly_f a b c`) can add free variables to a thunk's closure, which increases allocation.
    82   * TODO putStr (eg sphere)
     82  * Floating a binding in which a let-no-escape binder occurs abstracts over the let-no-escape binder, rendering it a normal let!
    8383
    8484==== Mitigating PAP Creation ====
     
    124124Roughly, we expect that more floating means (barely) less allocation but worse runtime (by how much?) because some known calls become unknown calls.
    125125
    126 ==== Anchoring let-no-escapes ====
    127 
    128 I discovered this while experimenting with the fast preservation variants above.
    129 
    130 TODO: Mitigate it.
     126==== Abstracting over let-no-escapes ====
     127
     128We had actually already seen this for a non-lambda join point in knights, but we were preoccupied with the unintentional existence of non-lambda join points and moved on after fixing those. I re-discovered this while experimenting with the fast preservation variants above.
     129
     130TODO: Mitigate it. First step: only make fast preservation apply to free variables that are known functions... duh!
    131131
    132132In fish (1.6%), hpg (~4.5%), and sphere (10.4%), allocation gets worse for ny and yy compared to nn and yn. The nn and ny do not change the allocation compared to the baseline library (ie no LLF).