[gclist] Stack scanning & callee-save registers
Tue, 5 Sep 2000 23:58:23 -0700
The same algorithm is sketched in
"C--: a portable assembly language that supports garbage collection"
to which Fermin was implicitly referring (he's a co author).
David, I didn't know about your implementation, and I feel bad that
we did not cite it. Is it published anywhere?
| -----Original Message-----
| From: David Chase [mailto:firstname.lastname@example.org]
| Sent: 06 September 2000 05:01
| To: email@example.com
| Subject: Re: [gclist] Stack scanning & callee-save registers
| At 11:55 PM 9/5/00 +0000, firstname.lastname@example.org 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