Changes between Version 11 and Version 12 of Frisby2013Q1


Ignore:
Timestamp:
Feb 12, 2013 5:48:49 PM (3 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 =====