Non-updateable thunks

Joachim Breitner breitner at
Fri Aug 3 11:29:23 CEST 2012

Hi Simon,

Am Freitag, den 03.08.2012, 09:28 +0100 schrieb Simon Marlow:
> > My question is: Has anybody worked in that direction? And are there any
> > fundamental problems with the current RTS implementation and such
> > closures?
> Long ago GHC used to have an "update analyser" which would detect some 
> thunks that would never be re-entered and omit the update frame on them. 
>   I wrote a paper about this many years ago, and there were other people 
> working on similar ideas, some using types (e.g. linear types) - google 
> for "update avoidance".  As I understand it you want to omit doing some 
> updates in order to avoid space leaks, which is slightly different.

Thanks for the pointers, I will have a look. Why was the update analyser
removed from GHC?

> The StgSyn abstract syntax has an UpdateFlag on each StgRhs which lets 
> you turn off the update, and I believe the code generator will respect 
> it although it isn't actually ever turned off at the moment.

Indeed that works: I added a stg2stg transformation phase that removes
the flag on some thunks (with hard-coded names for now :-)) and the
generated code works as expected. I’m now thinking how I can allow the
programmer to annotate thunks  as non-updateable, and how to carry that
information to the stg phase.


Dipl.-Math. Dipl.-Inform. Joachim Breitner
Wissenschaftlicher Mitarbeiter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <>

More information about the Glasgow-haskell-users mailing list