> In Simon Marlow's slides, stack traces are implemented in terms of > "call" and "push" operations. I guess `push` in STG syntax is stands > for "push" operation explained in the slides but as far as I can see > "call" is missing in generated STG.
There seems to be some confusion here - "push" is a language construct, whereas "call" is a function in Simon's language interpreter, just like "eval". > What does "CCCS" stand for here? Notice that it is an annotation on a constructor. It says what cost-centre stack to put the heap cost under, just like with lambdas. In your example the value is not statically allocated, therefore we put it into the "current cost-centre" instead of "don't care". This might be a pretty obvious piece of information, but that's essentially what Stg is - prepared Core with lots of annotations to facilitate code generation. Try -ddump-prep if you want something more sensible to look at. Greetings, Peter Wortmann _______________________________________________ ghc-devs mailing list [email protected] http://www.haskell.org/mailman/listinfo/ghc-devs
