Daniel Berlin wrote: >> It's a field in the class$ structure. class$ is initialized by creating a >> CONSTRUCTOR tree and calling CONSTRUCTOR_APPEND_ELT for each field. The >> DECL_INITIAL of class$ points to the CONSTRUCTOR tree. >> >> _CD_pp is an array of void*. These are initialized by DECL_INITIAL too. >> >> InitClass is passed class$$ (not class$) and that has a DECL_INITIAL >> that points to class$. As far as I can tell all the types are correct. >> > > If class$$ has an initial of &class$ which has an initial (in it > somewhere) of CD_ppp it should definitely be noticing. > It used to walk these all and get it right, AFAIK, by disqualifying > all variables with their addresses taken (or escaping the function > unit). > Maybe the walking broke when we moved to tuples or something?
Maybe. I'm going to write some equivalent code in C and see what happens. Andrew.