[gclist] Precise GC's performance

Darius Blasband darius@phidani.be
Fri, 1 Mar 1996 18:43:07 +0100 (MET)


> Could you explain in a bit more detail what the GC-related code you generate
> is?

It is basically very simple:

  - Whenever I enter a method (procedure), the addresses of all the locals
    and formals are pushed on a stack, which state is restored when exiting
    the method. This is what I call the "reference stack".
  - I also keep a "value stack" for short lived variables, while evaluating
    expressions.
    
All the things which can be seen as globals are accessible through static
tables.    
    
These stacks and tables are used when actually performing the GC which 
considers them as the root set - Be careful: I am not entirely sure whether    
this is what the rest of the literature refers to as the root set.
    
There are several optimizations which have been applied to limit the number
of accesses to these stacks, some local, some global.

The measure I made were related to the time spent in pushing data on
these stacks and restoring its state, applied to a system where only
local optimizations are performed. 

Does this answer the question ? I can go into more details, but
it gets quite boring...

Regards...

Darius