Changes between Version 9 and Version 10 of Commentary/Compiler/StrictnessAnalysis/KirstenNotes
- Timestamp:
- 11/06/06 08:50:01 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Compiler/StrictnessAnalysis/KirstenNotes
v9 v10 22 22 }}} 23 23 (where {{{lazyF}}} is lazy in {{{p}}}, and {{{strictF}}} is strict in {{{a}}} and {{{b}}}). {{{p}}} is used both with demand {{{L}}} (in the call to {{{lazyF}}} and with demand {{{S(SS)}}} (in the call to {{{strictF}}}). This means it's perfectly same to strictly evaluate {{{p}}}, so when we both together the two demands, we should get {{{S(SS)}}}. On the other hand, if a function is ''called'' once with one argument and once with two, we don't want to treat it as a function that's always called with two arguments; we're only interested in functions that are ''always'' called with ''n'' arguments for a given ''n''. Hence, both should behave the same way as lub for call demands. 24 25 = Ticky = 26 27 The following code inserts extra fields into closures when ticky is enabled (and so had to be commented out): 28 {{{ 29 staticTickyHdr :: [CmmLit] 30 -- The ticky header words in a static closure 31 -- Was SET_STATIC_TICKY_HDR 32 staticTickyHdr = 33 | not opt_DoTickyProfiling = [] 34 | otherwise = [zeroCLit] 35 }}} 36 in [[GhcFile(compiler/codeGen/CgTicky.hs)]]. 37 38 Other relevant functions: {{{emitTickyCounter}}} in [[GhcFile(compiler/codeGen/CgTicky.hs)]] (called by {{{closureCodeBody}}} in [[GhcFile(compiler/codeGen/CgClosure.lhs)]]).
