moss@ibis.cs.umass.edu (Eliot Moss) (02/26/90)
I wanted to follow up on just one idea that Paul Wilson mentioned, namely designating specific registers to "raw" pointers, other to hold tagged quantities, etc. Such conventions make things eaiser for the run-time system of course, but they may lead to suboptimal use of resources since you have split a colleciton of uniform resources (registers) into two or more separate collections so that you can run out of one first with plenty of the other left. The approach I am taking in a current research project is to have the compiler generate tabular information about how it used registers (and stack slots for that matter) so that the garbage collector can figure it out. That way the compiler is not very constrained but everything can work. The research aspect is figuring out how to achieve compact tables that can be used by the garbage collector quickly enough, and whether the scheme is worthwhile in the first place (I think it is, but perhaps primarily because it simplifies the compiler's job in optimization). I know Paul, and I, and Ralph Johnson for that matter, enjoy arguing about these things anyway :-) ... cheers .. Eliot -- J. Eliot B. Moss, Assistant Professor Department of Computer and Information Science Lederle Graduate Research Center University of Massachusetts Amherst, MA 01003 (413) 545-4206; Moss@cs.umass.edu