[project @ 2002-09-06 09:56:12 by simonmar]
authorsimonmar <unknown>
Fri, 6 Sep 2002 09:56:12 +0000 (09:56 +0000)
committersimonmar <unknown>
Fri, 6 Sep 2002 09:56:12 +0000 (09:56 +0000)
commitf8e722a44f00e5d388aad1a613f62361058dda0d
tree00792805fbb9c83709209f1cdd81550c9c196a5d
parenteca38799b3f006c10298e487283e49e7171f4e1b
[project @ 2002-09-06 09:56:12 by simonmar]
Selector Thunk Fix, take II.

The previous version didn't deal well with selector thunks which point
to more selector thunks, and on closer inspection the method was
flawed.  Now I've introduced a function

StgClosure *eval_selector_thunk( int field, StgClosure * )

which evaluates a selector thunk returning its value, in from-space,
if possible.  It blackholes the thunk during evaluation.  It might
recursively evaluate more selector thunks, but it does this in a
bounded way and updates the thunks with indirections (NOT forwarding
pointers) after evaluation.

This cleans things up somewhat, and I believe it deals properly with
both types of selector-thunk loops that arise.

MERGE TO STABLE
ghc/rts/GC.c