> 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

Reply via email to