Changes between Version 11 and Version 12 of Frisby2013Q1


Ignore:
Timestamp:
Feb 12, 2013 5:48:49 PM (2 years ago)
Author:
nfrisby
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Frisby2013Q1

    v11 v12  
    256256With protection, `d` isn't allocated unless `x` is entered, which might not always happen in `CTX`. This is a potential win because `x` might be let-no-escape. 
    257257 
    258 A potential detriment of protection is that `x` is not exposed as a let-bound constructor. Simon conjectures that's not actually harmful because ... I CANNOT REMEMBER. 
     258A potential detriment of protection is that `x` is not exposed as a let-bound constructor. Simon conjectures that's not actually harmful. The reasoning is as follows. 
     259 
     260These void arguments arise in two ways. 
     261 
     262  * when join points are created 
     263 
     264  * the strictness pass on constant functions 
     265 
     266In both cases, it is unlikely that revealing the binding's RHS as a HNF will lead to any beneficial optimizations. 
     267 
     268  * Join points are unlikely to be case-scrutinized. It's unlikely that further simplification will render them scrutinized. 
     269 
     270  * Removing the value arg from constant functions would create sharing, which SPJ says is always a "dodgy" thing to do. If the programmer defines and uses a constant function, they may be trying to avoid retention of large data structures. I was concerned that such constant functions might arise upstream (eg from use of generics), but he regards that unlikely/not worth it (because the optimization is not always a good thing). 
    259271 
    260272===== Continuation =====