[gclist] Compiler specialized GC's

Henry G. Baker hbaker@netcom.com
Fri, 1 Mar 1996 20:11:25 -0800 (PST)


> Darius Blasband wrote:
> > > Our GC generates a marking routine for each type in the system rather than
> > > interpreting a type description during GC. Makes for quite a fast
> > > traversal.
> >
> > Is you language (hence, type descriptions) more specific ?
> 
> Algol68 is statically typed, so I know where I'm going from every type. I saw
> a 5-fold performance improvement over a table-driven GC where following a
> pointer involved a few indirections to find out what was under it (now a direct
> call). There were other improvements as well which helped such as conflating 
> non-recursive levels of marking into one routine (but this inflates the code 
> size a bit more). Arrays and structures containing structures benefit greatly 
> from this.  I have yet to be ruthless about conflating marking routines for 
> types which have the same pointers out in the same positions but different 
> non-pointer fields.  

I seem to recall reading that Stefan Arnborg's Simula compiler for the
PDP10 generated a specific marking routine for each different kind of object.

One could also compile the the 'type' information inferred by the ML
type system into a set of recursive marking routines that rarely, if
ever, need to consult run-time type info.  Although Appel's paper
mentioned the ability to _reconstruct_ the type information, I don't
recall that he mentioned that the type information _was_ a marking
algorithm for these mutually recursive types.

-- 
Henry Baker
www/ftp directory:
ftp.netcom.com:/pub/hb/hbaker/home.html