Rewriting byte codes
Mon Apr 1 03:41:34 PST 2002
> I'd like to make some changes to Kaffe to make it simpler to do more
> precise GC.
Just for reference, so everyone's on the same page, Kaffe already does
precise walking of Java objects (see gcFuncs.c:walkObject()). It does
not precisely walk stacks. I believe it walks many native objects
(like jthreads, etc) conservatively.
The big problem with walking the stack isn't the Java stack as much as
the native stack. You could walk the Java parts precisely, and the
native bits conservatively, but I don't know what you'd win anything
by doing this.
Getting Kaffe to the point where the native stacks are mapped for
precise GC would be a very significant effort.
As I understand GC trade-offs, the big win for precise GC is the
ability to update pointers and thus implement a compacting collector.
Is there something else you're hoping to get out of precise stack
Another approach to consider is to implement GC-safe points (e.g., on
method calls and backwards branches in Java code). Then you only have
to track and update the stack maps at each safe point, this also makes
writing GC-safe native code simpler, I think. I'm not sure if GC-safe
points would have much of an effect on the stack maps, but it might be
something to consider.
----- ----- ---- --- --- -- - - - - -
Pat Tullmann email@example.com
If Gates got a dime each time Windows crashed... Oh, nevermind...
More information about the kaffe