[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