[gclist] Precise GC's performance

Paul R. Wilson wilson@cs.utexas.edu
Wed, 6 Mar 1996 11:50:02 -0600


>From owner-gclist@iecc.com Wed Mar  6 10:57:10 1996
>From: Nick Barnes <nickb@harlequin.co.uk>
>Precedence: bulk
>Reply-To: gclist@iecc.com
>
>- SML/NJ uses CPS and does not keep a stack (so it allocates out the
>  wazoo). 

I think it might be a good idea to introduce a terminological distinction
here.  Appel uses the term "continuation passing style" to talk both
about compiler intermediate representations and runtime representations,
and this is very confusing.

These are very different things.  For example, the T compiler uses
CPS as an intermediate representation, but compiles for a stack.  And
our RScheme compiler does *not* use a CPS representation, but compiles
for a runtime with explicit continuations, much like SML of NJ's.  (We
use a stack cache, though, to filter out most of the short-lived
continuations and avoid stressing the GC and cache memory so much.)

CPS in the compiler and "CPS" runtime systems are almost entirely
independent.  All four combinations exist in different systems.

>- until recently SML/NJ had a GC which was only generational in a
>  primitive sense.

I thought it was primitive, but quite generational.  (Only two generations,
and no guarantee of advancement age, and a really simple write barrier,
but those have never been criteria for whether something is generational.)