[gclist] Stack scanning & callee-save registers

reig@dcs.gla.ac.uk reig@dcs.gla.ac.uk
Wed, 6 Sep 2000 03:41:22 +0100 (BST)


In the PLDI98 paper "Generational Stack Collection and Profile-Driven
Pretenuring" (Cheng, Harper, Lee) there's a short description of how
to implement stack scanning (section 2.3):

     ...  Then, from the return address of the GC-caller frame, we can
     decode its caller frame. Continuing in this way, we finally reach
     the initial frame. From the initial frame, we begin determining
     the root set by adding registers and stack slots as we traverse
     the stack downwards again. Note that the stack scan is two- pass
     as a result of callee-save registers.  ...

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? (paper, mailing list, etc. Even the
sources of a freely downloadable compiler/garbage collector would do,
if nothing else is available).

Thanks in advance,

Fermin Reig
PhD student, Department of Computing Science, University of Glasgow