[gclist] Stack scanning & callee-save registers

David Chase chase@naturalbridge.com
Wed, 06 Sep 2000 00:01:07 -0400


At 11:55 PM 9/5/00 +0000, reig@dcs.gla.ac.uk wrote:
>I think it should be possible to do the scanning in one pass even if
>we have callee-save registers. Does anyone know if this has been
>described/implemented elsewhere?

Yes, this is possible.  At the youngest frame, spill the
registers, and initialize an array of pointers to register spill
memory to point to that.  As you unwind the stack, update the elements
of that array to refer to the (callee's) spill locations for the
spilled registers.  References to "register X" in a given frame
look up the address into which X was spilled and use that to locate,
and potentially update, register X.

Yes, we've also implemented this.

David Chase
chase@naturalbridge.com