[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