[comp.lang.scheme] How to find GC roots on the CPU control stack

gjc@mitech.COM (11/04/90)

>From: Scott Layson Burson <gyro@cymbal.reasoning.com>
>Subject: Memory allocation mechanism
>>   Date: 1 Nov 90 14:34:06 GMT
>>   From: Holger Muenx <mcsun!unido!laura!heike.informatik.uni-dortmund.de!muenx@uunet.uu.net>
>>   discussion of garbage collection issues...

>You are basically on the right track.  The only improvement that I know
>of to the approach you are taking is to arrange to be able to scan the
>CPU control stack and registers to find roots, so they do not have to be
>kept on a separate stack. 

>I don't know of anyone who has successfully
>done this without writing their own native-code compiler (and even then
>it can be quite tricky to get right, as you might imagine).

SIOD version 2.4 does this. It uses the regular C procedure call
stack and registers for argument passing yet is able to scan
both the CPU control stack and registers to find "roots" to mark.

It works fine on VAX, 68xxx, and SPARC machines. But is hopeless in
something like the interpreted SABER-C environment.

-gjc