[kaffe] CVS kaffe (guilhem): Big GC update + Fixed a few warnings.

Kaffe CVS cvs-commits at kaffe.org
Tue Aug 3 02:20:24 PDT 2004


PatchSet 5035 
Date: 2004/08/02 10:44:53
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Big GC update + Fixed a few warnings.

	* kaffe/kaffevm/Makefile.am
	(libkaffevm_la_SOURCES): Removed gcRefs.c, gcRefs.h.

	* kaffe/kaffevm/boehm-gc/boehm/BCC_MAKEFILE,
	kaffe/kaffevm/boehm-gc/boehm/aix_irix_threads.c,
	kaffe/kaffevm/boehm-gc/boehm/allchblk.c,
	kaffe/kaffevm/boehm-gc/boehm/alloc.c,
	kaffe/kaffevm/boehm-gc/boehm/checksums.c,
	kaffe/kaffevm/boehm-gc/boehm/cord/cordprnt.c,
	kaffe/kaffevm/boehm-gc/boehm/cord/cordtest.c,
	kaffe/kaffevm/boehm-gc/boehm/cord/cordxtra.c,
	kaffe/kaffevm/boehm-gc/boehm/cord/de.c,
	kaffe/kaffevm/boehm-gc/boehm/darwin_stop_world.c,
	kaffe/kaffevm/boehm-gc/boehm/dbg_mlc.c,
	kaffe/kaffevm/boehm-gc/boehm/doc/README,
	kaffe/kaffevm/boehm-gc/boehm/doc/README.changes,
	kaffe/kaffevm/boehm-gc/boehm/doc/README.darwin,
	kaffe/kaffevm/boehm-gc/boehm/doc/README.environment,
	kaffe/kaffevm/boehm-gc/boehm/doc/README.macros,
	kaffe/kaffevm/boehm-gc/boehm/doc/README.win32,
	kaffe/kaffevm/boehm-gc/boehm/doc/debugging.html,
	kaffe/kaffevm/boehm-gc/boehm/doc/gcdescr.html,
	kaffe/kaffevm/boehm-gc/boehm/doc/gcinterface.html,
	kaffe/kaffevm/boehm-gc/boehm/doc/simple_example.html,
	kaffe/kaffevm/boehm-gc/boehm/dyn_load.c,
	kaffe/kaffevm/boehm-gc/boehm/finalize.c,
	kaffe/kaffevm/boehm-gc/boehm/gcj_mlc.c,
	kaffe/kaffevm/boehm-gc/boehm/headers.c,
	kaffe/kaffevm/boehm-gc/boehm/if_not_there.c,
	kaffe/kaffevm/boehm-gc/boehm/include/gc.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_allocator.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_config_macros.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_cpp.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_gcj.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_local_alloc.h,
	kaffe/kaffevm/boehm-gc/boehm/include/gc_mark.h,
	kaffe/kaffevm/boehm-gc/boehm/include/javaxfc.h,
	kaffe/kaffevm/boehm-gc/boehm/include/new_gc_alloc.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/darwin_stop_world.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/dbg_mlc.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_locks.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_pmark.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_priv.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/gcconfig.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/pthread_support.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/solaris_threads.h,
	kaffe/kaffevm/boehm-gc/boehm/include/private/specific.h,
	kaffe/kaffevm/boehm-gc/boehm/mach_dep.c,
	kaffe/kaffevm/boehm-gc/boehm/malloc.c,
	kaffe/kaffevm/boehm-gc/boehm/mallocx.c,
	kaffe/kaffevm/boehm-gc/boehm/mark.c,
	kaffe/kaffevm/boehm-gc/boehm/misc.c,
	kaffe/kaffevm/boehm-gc/boehm/new_hblk.c,
	kaffe/kaffevm/boehm-gc/boehm/os_dep.c,
	kaffe/kaffevm/boehm-gc/boehm/pthread_stop_world.c,
	kaffe/kaffevm/boehm-gc/boehm/pthread_support.c,
	kaffe/kaffevm/boehm-gc/boehm/solaris_pthreads.c,
	kaffe/kaffevm/boehm-gc/boehm/solaris_threads.c,
	kaffe/kaffevm/boehm-gc/boehm/tests/middle.c,
	kaffe/kaffevm/boehm-gc/boehm/tests/test.c,
	kaffe/kaffevm/boehm-gc/boehm/tests/test_cpp.cc,
	kaffe/kaffevm/boehm-gc/boehm/tests/trace_test.c,
	kaffe/kaffevm/boehm-gc/boehm/threadlibs.c,
	kaffe/kaffevm/boehm-gc/boehm/typd_mlc.c,
	kaffe/kaffevm/boehm-gc/boehm/version.h,
	kaffe/kaffevm/boehm-gc/boehm/win32_threads.c:
	Upgraded to gc6.3.

	* kaffe/kaffevm/boehm-gc/Makefile.am
	(libkaffegc_la_SOURCES): Added gc-refs.[ch] and gc-kaffe.[ch].

	* kaffe/kaffevm/boehm-gc/Makefile.frag:
	Define GC_DEFS.

	* kaffe/kaffevm/boehm-gc/gc-kaffe.c,
	kaffe/kaffevm/boehm-gc/gc-kaffe.h: New allocation kind for boehm-gc.

	* kaffe/kaffevm/boehm-gc/gc-refs.c,
	kaffe/kaffevm/boehm-gc/gc-refs.h: New files to handle Java references
	with the GC. Largely inspired from gcRefs.[ch]

	* kaffe/kaffevm/boehm-gc/gc2.c:
	Reimplemented.

	* kaffe/kaffevm/classMethod.h,
	kaffe/kaffevm/classPool.c
	(walkClassEntries): New parameter.

	* kaffe/kaffevm/debug.c:
	(dprintf): If stderr has been closed we must
	exit the main loop because it is a potential infinite
	loop.

	* kaffe/kaffevm/gc.h:
	(walk_func_t): New parameter.
	(KGC_OBJECT_NORMAL, KGC_OBJECT_FIXED): Reindented.
	(GarbageCollectorInterface_Ops): New entries:
	getCollectorName, addRef, rmRef.
	(markAddress, markObject): New parameter.
	(createGC): Removed parameter.
	(KGC_getCollectorName, KGC_addRef, KGC_rmRef):
	New GC call.
	(KGC_markObject): New parameter.

	* kaffe/kaffevm/gcFuncs.c:
	(walkMethods, walkClass, walkRefArray,
	walkObject, walkLoader): New parameter.
	(walkMethods): Removed dead code.
	(initCollector): createGC has no parameter now.

	* kaffe/kaffevm/gcRefs.c,
	kaffe/kaffevm/gcRefs.h: Removed.

	* kaffe/kaffevm/kaffe-gc/Makefile.in,
	kaffe/kaffevm/boehm-gc/Makefile.in,
	kaffe/kaffevm/systems/unix-pthreads/Makefile.in,
	kaffe/kaffevm/Makefile.in:
	Regenerated.

	* kaffe/kaffevm/kaffe-gc/Makefile.am:
	(libkaffegc_la_SOURCES): Added gc-refs.c.
	(noinst_HEADERS): Added gc-refs.h.

	* kaffe/kaffevm/kaffe-gc/Makefile.frag:
	Define GC_DEFS.

	* kaffe/kaffevm/kaffe-gc/gc-incremental.c:
	(walkRootSet): Removed.
	(gcMarkAddress, gcMarkObject): New parameter.
	(KaffeGC_walkConservative): Cleaned up.
	(gcGetObjectBase): Fixed warnings.
	(kaffeGC_WalkMemory): Updated to new API.
	(gcMan): Renamed function call.
	(startGC): Call KaffeGC_walkRefs directly now.
	(gcMalloc): Cleaned up.
	(createGC): Removed parameter.

	* kaffe/kaffevm/kaffe-gc/gc-incremental.h: Fixed a few warnings.

	* kaffe/kaffevm/kaffe-gc/gc-mem.h:
	Fixed a few warnings.

	* kaffe/kaffevm/kaffe-gc/gc-refs.c: New file. Moved from gcRefs.c.

	* kaffe/kaffevm/kaffe-gc/gc-refs.h: New file. Moved from gcRefs.h.

	* kaffe/kaffevm/ksem.c
	(ksemGet, ksemPut): Marked sem as volatile to prevent deadlocks.

	* kaffe/kaffevm/object.c
	(newMultiArrayChecked): Transformed the recursive algorithm
	in an iterative one.

	* kaffe/kaffevm/string.c,
	kaffe/kaffevm/string.h
	(stringWalk): New parameter.

	* kaffe/kaffevm/support.c: Removed dead code.

	* kaffe/kaffevm/systems/unix-pthreads/Makefile.am:
	(AM_CPPFLAGS): Use GC_DEFS from the GC makefile.frag.

	* kaffe/kaffevm/systems/unix-pthreads/lock-impl.c:
        Include "gc.h" if kaffe is compiled with the Boehm-GC.

        * kaffe/kaffevm/systems/unix-pthreads/signal.c
	(detectStackBoundaries): If kaffe is compiled with the Boehm-GC
	use GC_stackbottom to get stack boundaries.

	* kaffe/kaffevm/systems/unix-jthreads/jthread.c,
	kaffe/kaffevm/systems/unix-jthreads/jthread.h,
	kaffe/kaffevm/systems/unix-pthreads/thread-impl.c,
	kaffe/kaffevm/systems/unix-pthreads/thread-internal.h
	(jthread_walkLiveThreads) accept some user data for the
	walk function.

	* kaffe/kaffevm/systems/unix-jthreads/jthread.h
	(jthread_attach_current_thread): Moved the UNUSED attribute before
	bool.

	* kaffe/kaffevm/systems/unix-pthreads/thread-impl.c
	(tInitSignalHandlers): Do not enable SIG_SUSPEND and
	SIG_RESUME if the boehm-gc is enabled.
	(jthread_suspendall, jthread_unsuspendall):
	If the boehm-gc is enabled, use GC_stop_world
	and GC_start_world.

	* kaffe/kaffevm/systems/unix-pthreads/thread-internal.h
	(jthread_on_current_stack): Added some debug trace.

	* kaffe/kaffevm/thread.c
	(dumpJavaThread): jthread_walkLiveThreads has a new parameter.

Members: 
	ChangeLog:1.2593->1.2594 
	kaffe/kaffevm/Makefile.am:1.68->1.69 
	kaffe/kaffevm/Makefile.in:1.172->1.173 
	kaffe/kaffevm/classMethod.h:1.66->1.67 
	kaffe/kaffevm/classPool.c:1.27->1.28 
	kaffe/kaffevm/debug.c:1.54->1.55 
	kaffe/kaffevm/gc.h:1.25->1.26 
	kaffe/kaffevm/gcFuncs.c:1.54->1.55 
	kaffe/kaffevm/gcRefs.c:1.14->1.15(DEAD) 
	kaffe/kaffevm/gcRefs.h:1.2->1.3(DEAD) 
	kaffe/kaffevm/ksem.c:1.6->1.7 
	kaffe/kaffevm/object.c:1.26->1.27 
	kaffe/kaffevm/string.c:1.34->1.35 
	kaffe/kaffevm/stringSupport.h:1.12->1.13 
	kaffe/kaffevm/support.c:1.70->1.71 
	kaffe/kaffevm/thread.c:1.70->1.71 
	kaffe/kaffevm/boehm-gc/Makefile.am:1.4->1.5 
	kaffe/kaffevm/boehm-gc/Makefile.frag:1.1->1.2 
	kaffe/kaffevm/boehm-gc/Makefile.in:1.9->1.10 
	kaffe/kaffevm/boehm-gc/gc-kaffe.c:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/gc-kaffe.h:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/gc-refs.c:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/gc-refs.h:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/gc2.c:1.2->1.3 
	kaffe/kaffevm/boehm-gc/boehm/BCC_MAKEFILE:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/aix_irix_threads.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/allchblk.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/alloc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/checksums.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/darwin_stop_world.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/dbg_mlc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/dyn_load.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/finalize.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/gcj_mlc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/headers.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/if_not_there.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/mach_dep.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/malloc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/mallocx.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/mark.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/misc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/new_hblk.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/os_dep.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/pthread_stop_world.c:1.2->1.3 
	kaffe/kaffevm/boehm-gc/boehm/pthread_support.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/solaris_pthreads.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/solaris_threads.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/threadlibs.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/typd_mlc.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/version.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/win32_threads.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/cord/cordprnt.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/cord/cordtest.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/cord/cordxtra.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/cord/de.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README.changes:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README.darwin:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README.environment:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README.macros:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/README.win32:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/debugging.html:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/gcdescr.html:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/gcinterface.html:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/doc/simple_example.html:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/boehm/include/gc.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_allocator.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_config_macros.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_cpp.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_gcj.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_local_alloc.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/gc_mark.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/javaxfc.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/new_gc_alloc.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/darwin_stop_world.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/dbg_mlc.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_locks.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_pmark.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_priv.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/gcconfig.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/pthread_support.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/solaris_threads.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/include/private/specific.h:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/tests/middle.c:INITIAL->1.1 
	kaffe/kaffevm/boehm-gc/boehm/tests/test.c:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/tests/test_cpp.cc:1.1->1.2 
	kaffe/kaffevm/boehm-gc/boehm/tests/trace_test.c:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/Makefile.am:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/Makefile.frag:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/Makefile.in:1.7->1.8 
	kaffe/kaffevm/kaffe-gc/gc-incremental.c:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/gc-incremental.h:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/gc-mem.h:1.1->1.2 
	kaffe/kaffevm/kaffe-gc/gc-refs.c:INITIAL->1.1 
	kaffe/kaffevm/kaffe-gc/gc-refs.h:INITIAL->1.1 
	kaffe/kaffevm/systems/unix-jthreads/jthread.c:1.116->1.117 
	kaffe/kaffevm/systems/unix-jthreads/jthread.h:1.61->1.62 
	kaffe/kaffevm/systems/unix-pthreads/Makefile.am:1.9->1.10 
	kaffe/kaffevm/systems/unix-pthreads/Makefile.in:1.87->1.88 
	kaffe/kaffevm/systems/unix-pthreads/lock-impl.c:1.8->1.9 
	kaffe/kaffevm/systems/unix-pthreads/signal.c:1.12->1.13 
	kaffe/kaffevm/systems/unix-pthreads/thread-impl.c:1.34->1.35 
	kaffe/kaffevm/systems/unix-pthreads/thread-internal.h:1.16->1.17 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2593 kaffe/ChangeLog:1.2594
--- kaffe/ChangeLog:1.2593	Sun Aug  1 21:34:08 2004
+++ kaffe/ChangeLog	Mon Aug  2 10:44:53 2004
@@ -1,3 +1,198 @@
+2004-08-02  Guilhem Lavaux  <guilhem at kaffe.org>
+
+	* kaffe/kaffevm/Makefile.am
+	(libkaffevm_la_SOURCES): Removed gcRefs.c, gcRefs.h.
+	
+	* kaffe/kaffevm/boehm-gc/boehm/BCC_MAKEFILE,
+	kaffe/kaffevm/boehm-gc/boehm/aix_irix_threads.c,
+	kaffe/kaffevm/boehm-gc/boehm/allchblk.c,
+	kaffe/kaffevm/boehm-gc/boehm/alloc.c,
+	kaffe/kaffevm/boehm-gc/boehm/checksums.c,
+	kaffe/kaffevm/boehm-gc/boehm/cord/cordprnt.c,
+	kaffe/kaffevm/boehm-gc/boehm/cord/cordtest.c,
+	kaffe/kaffevm/boehm-gc/boehm/cord/cordxtra.c,
+	kaffe/kaffevm/boehm-gc/boehm/cord/de.c,
+	kaffe/kaffevm/boehm-gc/boehm/darwin_stop_world.c,
+	kaffe/kaffevm/boehm-gc/boehm/dbg_mlc.c,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README.changes,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README.darwin,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README.environment,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README.macros,
+	kaffe/kaffevm/boehm-gc/boehm/doc/README.win32,
+	kaffe/kaffevm/boehm-gc/boehm/doc/debugging.html,
+	kaffe/kaffevm/boehm-gc/boehm/doc/gcdescr.html,
+	kaffe/kaffevm/boehm-gc/boehm/doc/gcinterface.html,
+	kaffe/kaffevm/boehm-gc/boehm/doc/simple_example.html,
+	kaffe/kaffevm/boehm-gc/boehm/dyn_load.c,
+	kaffe/kaffevm/boehm-gc/boehm/finalize.c,
+	kaffe/kaffevm/boehm-gc/boehm/gcj_mlc.c,
+	kaffe/kaffevm/boehm-gc/boehm/headers.c,
+	kaffe/kaffevm/boehm-gc/boehm/if_not_there.c,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_allocator.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_config_macros.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_cpp.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_gcj.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_local_alloc.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/gc_mark.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/javaxfc.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/new_gc_alloc.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/darwin_stop_world.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/dbg_mlc.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_locks.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_pmark.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/gc_priv.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/gcconfig.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/pthread_support.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/solaris_threads.h,
+	kaffe/kaffevm/boehm-gc/boehm/include/private/specific.h,
+	kaffe/kaffevm/boehm-gc/boehm/mach_dep.c,
+	kaffe/kaffevm/boehm-gc/boehm/malloc.c,
+	kaffe/kaffevm/boehm-gc/boehm/mallocx.c,
+	kaffe/kaffevm/boehm-gc/boehm/mark.c,
+	kaffe/kaffevm/boehm-gc/boehm/misc.c,
+	kaffe/kaffevm/boehm-gc/boehm/new_hblk.c,
+	kaffe/kaffevm/boehm-gc/boehm/os_dep.c,
+	kaffe/kaffevm/boehm-gc/boehm/pthread_stop_world.c,
+	kaffe/kaffevm/boehm-gc/boehm/pthread_support.c,
+	kaffe/kaffevm/boehm-gc/boehm/solaris_pthreads.c,
+	kaffe/kaffevm/boehm-gc/boehm/solaris_threads.c,
+	kaffe/kaffevm/boehm-gc/boehm/tests/middle.c,
+	kaffe/kaffevm/boehm-gc/boehm/tests/test.c,
+	kaffe/kaffevm/boehm-gc/boehm/tests/test_cpp.cc,
+	kaffe/kaffevm/boehm-gc/boehm/tests/trace_test.c,
+	kaffe/kaffevm/boehm-gc/boehm/threadlibs.c,
+	kaffe/kaffevm/boehm-gc/boehm/typd_mlc.c,
+	kaffe/kaffevm/boehm-gc/boehm/version.h,
+	kaffe/kaffevm/boehm-gc/boehm/win32_threads.c:
+	Upgraded to gc6.3.
+
+	* kaffe/kaffevm/boehm-gc/Makefile.am
+	(libkaffegc_la_SOURCES): Added gc-refs.[ch] and gc-kaffe.[ch].
+
+	* kaffe/kaffevm/boehm-gc/Makefile.frag:
+	Define GC_DEFS.
+	
+	* kaffe/kaffevm/boehm-gc/gc-kaffe.c,
+	kaffe/kaffevm/boehm-gc/gc-kaffe.h: New allocation kind for boehm-gc.
+
+	* kaffe/kaffevm/boehm-gc/gc-refs.c,
+	kaffe/kaffevm/boehm-gc/gc-refs.h: New files to handle Java references
+	with the GC. Largely inspired from gcRefs.[ch]
+
+	* kaffe/kaffevm/boehm-gc/gc2.c:
+	Reimplemented.
+	
+	* kaffe/kaffevm/classMethod.h,
+	kaffe/kaffevm/classPool.c
+	(walkClassEntries): New parameter.
+	
+	* kaffe/kaffevm/debug.c:
+	(dprintf): If stderr has been closed we must
+	exit the main loop because it is a potential infinite
+	loop.
+	
+	* kaffe/kaffevm/gc.h:
+	(walk_func_t): New parameter.
+	(KGC_OBJECT_NORMAL, KGC_OBJECT_FIXED): Reindented.
+	(GarbageCollectorInterface_Ops): New entries:
+	getCollectorName, addRef, rmRef.
+	(markAddress, markObject): New parameter.
+	(createGC): Removed parameter.
+	(KGC_getCollectorName, KGC_addRef, KGC_rmRef):
+	New GC call.
+	(KGC_markObject): New parameter.
+	
+	* kaffe/kaffevm/gcFuncs.c:
+	(walkMethods, walkClass, walkRefArray,
+	walkObject, walkLoader): New parameter.
+	(walkMethods): Removed dead code.
+	(initCollector): createGC has no parameter now.
+
+	* kaffe/kaffevm/gcRefs.c,
+	kaffe/kaffevm/gcRefs.h: Removed.
+	
+	* kaffe/kaffevm/kaffe-gc/Makefile.in,
+	kaffe/kaffevm/boehm-gc/Makefile.in,
+	kaffe/kaffevm/systems/unix-pthreads/Makefile.in,
+	kaffe/kaffevm/Makefile.in:
+	Regenerated.
+
+	* kaffe/kaffevm/kaffe-gc/Makefile.am:
+	(libkaffegc_la_SOURCES): Added gc-refs.c.
+	(noinst_HEADERS): Added gc-refs.h.
+	
+	* kaffe/kaffevm/kaffe-gc/Makefile.frag:
+	Define GC_DEFS.
+
+	* kaffe/kaffevm/kaffe-gc/gc-incremental.c:
+	(walkRootSet): Removed.
+	(gcMarkAddress, gcMarkObject): New parameter.
+	(KaffeGC_walkConservative): Cleaned up.
+	(gcGetObjectBase): Fixed warnings.
+	(kaffeGC_WalkMemory): Updated to new API.
+	(gcMan): Renamed function call.
+	(startGC): Call KaffeGC_walkRefs directly now.
+	(gcMalloc): Cleaned up.
+	(createGC): Removed parameter.
+
+	* kaffe/kaffevm/kaffe-gc/gc-incremental.h: Fixed a few warnings.
+	
+	* kaffe/kaffevm/kaffe-gc/gc-mem.h:
+	Fixed a few warnings.
+
+	* kaffe/kaffevm/kaffe-gc/gc-refs.c: New file. Moved from gcRefs.c.
+	
+	* kaffe/kaffevm/kaffe-gc/gc-refs.h: New file. Moved from gcRefs.h.
+
+	* kaffe/kaffevm/ksem.c
+	(ksemGet, ksemPut): Marked sem as volatile to prevent deadlocks.
+        
+	* kaffe/kaffevm/object.c
+	(newMultiArrayChecked): Transformed the recursive algorithm
+	in an iterative one.
+
+	* kaffe/kaffevm/string.c,
+	kaffe/kaffevm/string.h
+	(stringWalk): New parameter.
+
+	* kaffe/kaffevm/support.c: Removed dead code.
+
+	* kaffe/kaffevm/systems/unix-pthreads/Makefile.am:
+	(AM_CPPFLAGS): Use GC_DEFS from the GC makefile.frag.
+
+	* kaffe/kaffevm/systems/unix-pthreads/lock-impl.c:
+        Include "gc.h" if kaffe is compiled with the Boehm-GC.
+	
+        * kaffe/kaffevm/systems/unix-pthreads/signal.c
+	(detectStackBoundaries): If kaffe is compiled with the Boehm-GC
+	use GC_stackbottom to get stack boundaries.
+
+	* kaffe/kaffevm/systems/unix-jthreads/jthread.c,
+	kaffe/kaffevm/systems/unix-jthreads/jthread.h,
+	kaffe/kaffevm/systems/unix-pthreads/thread-impl.c,
+	kaffe/kaffevm/systems/unix-pthreads/thread-internal.h
+	(jthread_walkLiveThreads) accept some user data for the
+	walk function.
+
+	* kaffe/kaffevm/systems/unix-jthreads/jthread.h
+	(jthread_attach_current_thread): Moved the UNUSED attribute before
+	bool.
+	
+	* kaffe/kaffevm/systems/unix-pthreads/thread-impl.c
+	(tInitSignalHandlers): Do not enable SIG_SUSPEND and
+	SIG_RESUME if the boehm-gc is enabled.
+	(jthread_suspendall, jthread_unsuspendall): 
+	If the boehm-gc is enabled, use GC_stop_world
+	and GC_start_world.
+
+	* kaffe/kaffevm/systems/unix-pthreads/thread-internal.h
+	(jthread_on_current_stack): Added some debug trace.
+
+	* kaffe/kaffevm/thread.c
+	(dumpJavaThread): jthread_walkLiveThreads has a new parameter.
+
 2004-08-01  Ito Kazumitsu <kaz at maczuka.gcd.org>
 
 	* configure.ac: Fixed warnings in tests.
Index: kaffe/kaffe/kaffevm/Makefile.am
diff -u kaffe/kaffe/kaffevm/Makefile.am:1.68 kaffe/kaffe/kaffevm/Makefile.am:1.69
--- kaffe/kaffe/kaffevm/Makefile.am:1.68	Fri Jul 30 11:06:21 2004
+++ kaffe/kaffe/kaffevm/Makefile.am	Mon Aug  2 10:44:55 2004
@@ -111,7 +111,6 @@
 	thread.c \
 	utf8const.c \
 	gcFuncs.c \
-	gcRefs.c \
 	reflect.c \
 	$(BINRELOC_SOURCES)
 
@@ -149,7 +148,6 @@
 	stringParsing.h \
 	stringSupport.h \
 	support.h \
-	gcRefs.h \
 	thread.h \
 	threadData.h \
 	utf8const.h \
Index: kaffe/kaffe/kaffevm/Makefile.in
diff -u kaffe/kaffe/kaffevm/Makefile.in:1.172 kaffe/kaffe/kaffevm/Makefile.in:1.173
--- kaffe/kaffe/kaffevm/Makefile.in:1.172	Fri Jul 30 11:06:21 2004
+++ kaffe/kaffe/kaffevm/Makefile.in	Mon Aug  2 10:44:55 2004
@@ -98,7 +98,7 @@
 	hashtab.c inflate.c itypes.c jar.c ksem.c locks.c lookup.c \
 	object.c readClass.c soft.c stackTrace.c stats.c string.c \
 	stringParsing.c support.c thread.c utf8const.c gcFuncs.c \
-	gcRefs.c reflect.c ../../binreloc/prefix.c
+	reflect.c ../../binreloc/prefix.c
 @ENABLE_BINRELOC_TRUE at am__objects_1 = libkaffevm_la-prefix.lo
 am_libkaffevm_la_OBJECTS = libkaffevm_la-access.lo \
 	libkaffevm_la-baseClasses.lo libkaffevm_la-classMethod.lo \
@@ -117,8 +117,7 @@
 	libkaffevm_la-string.lo libkaffevm_la-stringParsing.lo \
 	libkaffevm_la-support.lo libkaffevm_la-thread.lo \
 	libkaffevm_la-utf8const.lo libkaffevm_la-gcFuncs.lo \
-	libkaffevm_la-gcRefs.lo libkaffevm_la-reflect.lo \
-	$(am__objects_1)
+	libkaffevm_la-reflect.lo $(am__objects_1)
 am__objects_2 = libkaffevm_la-md.lo
 nodist_libkaffevm_la_OBJECTS = $(am__objects_2)
 libkaffevm_la_OBJECTS = $(am_libkaffevm_la_OBJECTS) \
@@ -489,7 +488,6 @@
 	thread.c \
 	utf8const.c \
 	gcFuncs.c \
-	gcRefs.c \
 	reflect.c \
 	$(BINRELOC_SOURCES)
 
@@ -527,7 +525,6 @@
 	stringParsing.h \
 	stringSupport.h \
 	support.h \
-	gcRefs.h \
 	thread.h \
 	threadData.h \
 	utf8const.h \
@@ -620,7 +617,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-fp.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-gc.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-gcFuncs.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-gcRefs.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-hashtab.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-inflate.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libkaffevm_la-itypes.Plo at am__quote@
@@ -894,13 +890,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gcFuncs.c' object='libkaffevm_la-gcFuncs.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkaffevm_la_CFLAGS) $(CFLAGS) -c -o libkaffevm_la-gcFuncs.lo `test -f 'gcFuncs.c' || echo '$(srcdir)/'`gcFuncs.c
-
-libkaffevm_la-gcRefs.lo: gcRefs.c
- at am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkaffevm_la_CFLAGS) $(CFLAGS) -MT libkaffevm_la-gcRefs.lo -MD -MP -MF "$(DEPDIR)/libkaffevm_la-gcRefs.Tpo" -c -o libkaffevm_la-gcRefs.lo `test -f 'gcRefs.c' || echo '$(srcdir)/'`gcRefs.c; \
- at am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/libkaffevm_la-gcRefs.Tpo" "$(DEPDIR)/libkaffevm_la-gcRefs.Plo"; else rm -f "$(DEPDIR)/libkaffevm_la-gcRefs.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gcRefs.c' object='libkaffevm_la-gcRefs.lo' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkaffevm_la_CFLAGS) $(CFLAGS) -c -o libkaffevm_la-gcRefs.lo `test -f 'gcRefs.c' || echo '$(srcdir)/'`gcRefs.c
 
 libkaffevm_la-reflect.lo: reflect.c
 @am__fastdepCC_TRUE@	if $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkaffevm_la_CFLAGS) $(CFLAGS) -MT libkaffevm_la-reflect.lo -MD -MP -MF "$(DEPDIR)/libkaffevm_la-reflect.Tpo" -c -o libkaffevm_la-reflect.lo `test -f 'reflect.c' || echo '$(srcdir)/'`reflect.c; \
Index: kaffe/kaffe/kaffevm/classMethod.h
diff -u kaffe/kaffe/kaffevm/classMethod.h:1.66 kaffe/kaffe/kaffevm/classMethod.h:1.67
--- kaffe/kaffe/kaffevm/classMethod.h:1.66	Fri Jul 30 11:06:22 2004
+++ kaffe/kaffe/kaffevm/classMethod.h	Mon Aug  2 10:44:56 2004
@@ -515,7 +515,7 @@
 classEntry*		lookupClassEntryInternal(Utf8Const*,
 				Hjava_lang_ClassLoader*);
 int			removeClassEntries(Hjava_lang_ClassLoader*);
-void 			walkClassEntries(Collector *collector, Hjava_lang_ClassLoader*);
+void 			walkClassEntries(Collector *collector, void *gc_info, Hjava_lang_ClassLoader*);
 
 Collector* 		initCollector(void);
 
Index: kaffe/kaffe/kaffevm/classPool.c
diff -u kaffe/kaffe/kaffevm/classPool.c:1.27 kaffe/kaffe/kaffevm/classPool.c:1.28
--- kaffe/kaffe/kaffevm/classPool.c:1.27	Sat Jul 17 07:57:13 2004
+++ kaffe/kaffe/kaffevm/classPool.c	Mon Aug  2 10:44:56 2004
@@ -166,7 +166,7 @@
 #endif
 
 void
-walkClassEntries(Collector *collector, Hjava_lang_ClassLoader* loader)
+walkClassEntries(Collector *collector, void *gc_info, Hjava_lang_ClassLoader* loader)
 {
         classEntry* entry;
         int ipool;
@@ -176,7 +176,7 @@
                      entry = entry->next)
                 {
                         if (entry->loader == loader && entry->state >= NMS_LOADING) {
-                                KGC_markObject(collector, entry->data.cl);
+                                KGC_markObject(collector, gc_info, entry->data.cl);
                         }
                 }
         }
Index: kaffe/kaffe/kaffevm/debug.c
diff -u kaffe/kaffe/kaffevm/debug.c:1.54 kaffe/kaffe/kaffevm/debug.c:1.55
--- kaffe/kaffe/kaffevm/debug.c:1.54	Thu Jul  8 09:04:56 2004
+++ kaffe/kaffe/kaffevm/debug.c	Mon Aug  2 10:44:56 2004
@@ -26,9 +26,12 @@
 
 #include <stdio.h>
 
+#include <errno.h>
 #include "config.h"
 #include "config-std.h"
 #include "config-mem.h"
+#include "config-io.h"
+#include "config-signal.h"
 #include "kaffe/jni_md.h"
 #include "gtypes.h"
 #include "gc.h"
@@ -420,6 +423,14 @@
 			if (w >= 0)
 				/* ignore errors */
 				max += w;
+			else if (errno != SIGINT)
+			  {
+		            /* Stderr should have been closed by another thread.
+			     * We may only exit without printing anything.
+			     */
+			    break;
+			  }
+			  
 		}
 		bufferBegin = 0;
 	}
Index: kaffe/kaffe/kaffevm/gc.h
diff -u kaffe/kaffe/kaffevm/gc.h:1.25 kaffe/kaffe/kaffevm/gc.h:1.26
--- kaffe/kaffe/kaffevm/gc.h:1.25	Sat Jul 17 07:57:13 2004
+++ kaffe/kaffe/kaffevm/gc.h	Mon Aug  2 10:44:56 2004
@@ -27,12 +27,12 @@
 #undef	KGC_INCREMENTAL
 
 typedef struct _Collector Collector;
-typedef void (*walk_func_t)(struct _Collector*, void*, uint32);
-typedef void (*final_func_t)(struct _Collector*, void*);
-typedef void (*destroy_func_t)(struct _Collector*, void*);
+typedef void (*walk_func_t)(struct _Collector* collector, void* gc_info, void* obj, uint32 size);
+typedef void (*final_func_t)(struct _Collector* collector, void* obj);
+typedef void (*destroy_func_t)(struct _Collector* collector, void* obj);
 
-#define	KGC_OBJECT_NORMAL	((final_func_t)0)
-#define	KGC_OBJECT_FIXED		((final_func_t)1)
+#define	KGC_OBJECT_NORMAL	  ((final_func_t)0)
+#define	KGC_OBJECT_FIXED	  ((final_func_t)1)
 
 /*
  * Garbage collector interface.
@@ -99,7 +99,7 @@
 
 struct GarbageCollectorInterface_Ops {
 
-	void*   reserved1;
+        const char * (*getCollectorName)(Collector *);
 	void*   reserved2;
 	void*   reserved3;
 	void*	(*malloc)(Collector *, size_t size, gc_alloc_type_t type);
@@ -111,16 +111,12 @@
 	void	(*init)(Collector *);
 	void	(*enable)(Collector *);
 
-	void	(*markAddress)(Collector *, const void* addr);
-	void	(*markObject)(Collector *, const void* obj);
+	void	(*markAddress)(Collector *, void *gc_info, const void* addr);
+	void	(*markObject)(Collector *, void *gc_info, const void* obj);
 	uint32	(*getObjectSize)(Collector *, const void* obj);
 	const char* (*getObjectDescription)(Collector *, const void* obj);
 	int	(*getObjectIndex)(Collector *, const void* obj);
-	void*	(*getObjectBase)(Collector *, const void* obj);
-
-	void	(*walkMemory)(Collector *, void *addr);
-	void	(*walkConservative)(Collector *, 
-			const void* addr, uint32 length);
+	void*	(*getObjectBase)(Collector *, void* obj);
 
 	void	(*registerFixedTypeByIndex)(Collector *, 
 			gc_alloc_type_t gc_index, const char *description);
@@ -137,9 +133,12 @@
   
         uintp   (*getHeapLimit)(Collector *);
         uintp   (*getHeapTotal)(Collector *);
+
+        bool    (*addRef)(Collector *, const void *mem);
+        bool    (*rmRef)(Collector *, void *ref);
 };
 
-Collector* createGC(void (*_walkRootSet)(Collector*));
+Collector* createGC(void);
 
 /*
  * Convenience macros
@@ -160,14 +159,18 @@
     ((G)->ops->enable)((Collector*)(G))
 #define KGC_throwOOM(G)		\
     ((G)->ops->throwOOM)((Collector*)(G))
-#define KGC_markAddress(G, addr)		\
-    ((G)->ops->markAddress)((Collector*)(G), (addr))
+#define KGC_markAddress(G, gc_info, addr)		\
+    ((G)->ops->markAddress)((Collector*)(G), (gc_info), (addr))
+#define KGC_addRef(G, addr) \
+    ((G)->ops->addRef)((Collector*)(G), (addr))
+#define KGC_rmRef(G, addr) \
+    ((G)->ops->rmRef)((Collector*)(G), (addr))
 
 #if !defined(KAFFEH)
-static inline void KGC_markObject(void *g, void *addr)
+static inline void KGC_markObject(void *g, void *gc_info, void *addr)
 {
 	if (addr)
-		((Collector*) g)->ops->markObject((Collector*) g, addr);
+		((Collector*) g)->ops->markObject((Collector*) g, gc_info, addr);
 }
 #endif
 
@@ -179,10 +182,6 @@
     ((G)->ops->getObjectIndex)((Collector*)(G), (obj))
 #define KGC_getObjectBase(G, obj)	\
     ((G)->ops->getObjectBase)((Collector*)(G), (obj))
-#define KGC_walkMemory(G, addr)	\
-    ((G)->ops->walkMemory)((Collector*)(G), (addr))
-#define KGC_walkConservative(G, addr, len)		\
-    ((G)->ops->walkConservative)((Collector*)(G), (addr), (len))
 #define KGC_registerFixedTypeByIndex(G, idx, desc)	\
     ((G)->ops->registerFixedTypeByIndex)((Collector*)(G),   \
 				(idx), (desc))
@@ -198,6 +197,8 @@
     ((G)->ops->getHeapLimit)((Collector *)(G));
 #define KGC_getHeapTotal(G) \
     ((G)->ops->getHeapTotal)((Collector *)(G));
+#define KGC_getCollectorName(G) \
+    ((G)->ops->getCollectorName)((Collector *)(G));
 #define KGC_WRITE(a, b)
 
 /*
@@ -209,6 +210,8 @@
 #define	gc_calloc(A,B,C)    KGC_malloc(main_collector,(A)*(B),C)
 #define	gc_realloc(A,B,C)   KGC_realloc(main_collector,(A),(B),C)
 #define	gc_free(A)	    KGC_free(main_collector,(A))
+#define gc_add_ref(A)       KGC_addRef(main_collector, (A))
+#define gc_rm_ref(A)        KGC_rmRef(main_collector, (A))
 
 #define	invokeGC()	    KGC_invoke(main_collector,1)
 #define	adviseGC()	    KGC_invoke(main_collector,0)
@@ -219,6 +222,5 @@
 #define gc_enableGC()	    KGC_enableGC(main_collector)
 #define gc_disableGC()	    KGC_disableGC(main_collector)
 
-#include "gcRefs.h"
 extern char* describeObject(const void* mem);
 #endif
Index: kaffe/kaffe/kaffevm/gcFuncs.c
diff -u kaffe/kaffe/kaffevm/gcFuncs.c:1.54 kaffe/kaffe/kaffevm/gcFuncs.c:1.55
--- kaffe/kaffe/kaffevm/gcFuncs.c:1.54	Sat Jul 17 07:57:13 2004
+++ kaffe/kaffe/kaffevm/gcFuncs.c	Mon Aug  2 10:44:56 2004
@@ -42,7 +42,6 @@
 #include "jni.h"
 #include "soft.h"
 #include "thread.h"
-#include "gcRefs.h"
 #include "methodCache.h"
 #include "jvmpi_kaffe.h"
 
@@ -241,22 +240,10 @@
  */
 static
 void
-walkMethods(Collector* collector, Method* m, int nm)
+walkMethods(Collector* collector, void *gc_info, Method* m, int nm)
 {
         while (nm-- > 0) {
-#if defined(TRANSLATOR) && 0
-                /* walk the block of jitted code conservatively.
-                 * Is this really needed?
- 		 */
-                if (METHOD_TRANSLATED(m) && (m->accflags & ACC_NATIVE) == 0) {
-                        void *mem = m->c.ncode.ncode_start;
-                        if (mem != 0) {
-				KGC_walkConservative(collector, mem,
-					KGC_getObjectSize(collector, mem));
-                        }
-                }
-#endif
-                KGC_markObject(collector, m->class);
+                KGC_markObject(collector, gc_info, m->class);
 
                 /* walk exception table in order to keep resolved catch types
                    alive */
@@ -267,7 +254,7 @@
                         for (i = 0; i < m->exception_table->length; i++) {
                                 Hjava_lang_Class* c = eptr[i].catch_type;
                                 if (c != 0 && c != UNRESOLVABLE_CATCHTYPE) {
-                                        KGC_markObject(collector, c);
+                                        KGC_markObject(collector, gc_info, c);
                                 }
                         }
                 }
@@ -279,7 +266,7 @@
  * Walk a class object.
  */
 static void
-walkClass(Collector* collector, void* base, uint32 size UNUSED)
+walkClass(Collector* collector, void *gc_info, void* base, uint32 size UNUSED)
 {
         Hjava_lang_Class* class;
         Field* fld;
@@ -294,7 +281,7 @@
     )
 
         if (class->state >= CSTATE_PREPARED) {
-                KGC_markObject(collector, class->superclass);
+                KGC_markObject(collector, gc_info, class->superclass);
         }
 
         /* walk constant pool - only resolved classes and strings count */
@@ -303,10 +290,10 @@
                 switch (pool->tags[idx]) {
                 case CONSTANT_ResolvedClass:
 			assert(!CLASS_IS_PRIMITIVE(CLASS_CLASS(idx, pool)));
-                        KGC_markObject(collector, CLASS_CLASS(idx, pool));
+                        KGC_markObject(collector, gc_info, CLASS_CLASS(idx, pool));
                         break;
                 case CONSTANT_ResolvedString:
-                        KGC_markObject(collector, (void*)pool->data[idx]);
+                        KGC_markObject(collector, gc_info, (void*)pool->data[idx]);
                         break;
                 }
         }
@@ -335,7 +322,7 @@
 				&& !CLASS_IS_PRIMITIVE(fld->type))
 			{
 				if (!CLASS_GCJ(fld->type)) {
-					KGC_markObject(collector, fld->type);
+					KGC_markObject(collector, gc_info, fld->type);
 				}
                         } /* else it's an Utf8Const that is not subject to gc */
                         fld++;
@@ -358,10 +345,10 @@
 				if (FIELD_TYPE(fld) == StringClass) {
 					KGC_markAddress(collector, *faddr);
 				} else {
-					KGC_markObject(collector, *faddr);
+					KGC_markObject(collector, gc_info, *faddr);
 				}
 #else
-				KGC_markObject(collector, *faddr);
+				KGC_markObject(collector, gc_info, *faddr);
 #endif
                         }
                         fld++;
@@ -373,22 +360,22 @@
         if (!CLASS_IS_ARRAY(class)) {
                 /* mark interfaces referenced by this class */
                 for (n = 0; n < class->total_interface_len; n++) {
-                        KGC_markObject(collector, class->interfaces[n]);
+                        KGC_markObject(collector, gc_info, class->interfaces[n]);
                 }
         } else {
                 /* array classes should keep their element type alive */
 		Hjava_lang_Class *etype = CLASS_ELEMENT_TYPE(class);
 		if (etype && !CLASS_IS_PRIMITIVE(etype)) {
-			KGC_markObject(collector, etype);
+			KGC_markObject(collector, gc_info, etype);
 		}
         }
 
         /* CLASS_METHODS only points to the method array for non-array and
          * non-primitive classes */
         if (!CLASS_IS_PRIMITIVE(class) && !CLASS_IS_ARRAY(class) && CLASS_METHODS(class) != 0) {
-                walkMethods(collector, CLASS_METHODS(class), CLASS_NMETHODS(class));
+                walkMethods(collector, gc_info, CLASS_METHODS(class), CLASS_NMETHODS(class));
         }
-        KGC_markObject(collector, class->loader);
+        KGC_markObject(collector, gc_info, class->loader);
 }
 
 /*****************************************************************************
@@ -399,7 +386,7 @@
  */
 static
 void
-walkRefArray(Collector* collector, void* base, uint32 size UNUSED)
+walkRefArray(Collector* collector, void *gc_info, void* base, uint32 size UNUSED)
 {
         Hjava_lang_Object* arr;
         int i;
@@ -414,7 +401,7 @@
         /* mark class only if not a system class (which would be anchored
          * anyway.)  */
         if (arr->vtable->class->loader != 0) {
-                KGC_markObject(collector, arr->vtable->class);
+                KGC_markObject(collector, gc_info, arr->vtable->class);
         }
 
         for (i = ARRAY_SIZE(arr); --i>= 0; ) {
@@ -423,7 +410,7 @@
 		 * NB: This would break if some objects (i.e. class objects)
 		 * are not gc-allocated.
 		 */
-		KGC_markObject(collector, el);
+		KGC_markObject(collector, gc_info, el);
         }
 }
 
@@ -432,7 +419,7 @@
  */
 static
 void
-walkObject(Collector* collector, void* base, uint32 size)
+walkObject(Collector* collector, void *gc_info, void* base, uint32 size)
 {
         Hjava_lang_Object *obj = (Hjava_lang_Object*)base;
         Hjava_lang_Class *clazz;
@@ -454,7 +441,7 @@
          * bother marking them.
          */
         if (clazz->loader != 0) {
-                KGC_markObject(collector, clazz);
+                KGC_markObject(collector, gc_info, clazz);
         }
 
         layout = clazz->gc_layout;
@@ -490,7 +477,7 @@
                                  * to a "real" Java object.
                                  */
 				void *p = *(void **)mem;
-				KGC_markObject(collector, p);
+				KGC_markObject(collector, gc_info, p);
                         }
                         i++;
                         l <<= 1;
@@ -505,10 +492,10 @@
  */
 static
 void
-walkLoader(Collector* collector, void* base, uint32 size)
+walkLoader(Collector* collector, void *gc_info, void* base, uint32 size)
 {
-        walkObject(collector, base, size);
-        walkClassEntries(collector, (Hjava_lang_ClassLoader*)base);
+        walkObject(collector, gc_info, base, size);
+        walkClassEntries(collector, gc_info, (Hjava_lang_ClassLoader*)base);
 }
 
 static
@@ -601,7 +588,7 @@
 Collector*
 initCollector(void)
 {
-	Collector *gc = createGC(gc_walk_refs);
+	Collector *gc = createGC();
 
 	DBG(INIT, dprintf("initCollector()\n"); )
 
===================================================================
Checking out kaffe/kaffe/kaffevm/gcRefs.c
RCS:  /home/cvs/kaffe/kaffe/kaffe/kaffevm/Attic/gcRefs.c,v
VERS: 1.14
***************
--- kaffe/kaffe/kaffevm/gcRefs.c	Tue Aug  3 09:20:23 2004
+++ /dev/null	Sun Aug  4 19:57:58 2002
@@ -1,195 +0,0 @@
-/* gcRefs.c
- * Maintain set of references in the garbage collector root set.
- * This is independent of the actual collection mechanism
- *
- * Copyright (c) 1996, 1997, 1998, 1999
- *	Transvirtual Technologies, Inc.  All rights reserved.
- *
- * See the file "license.terms" for information on usage and redistribution 

*** Patch too long, truncated ***



More information about the kaffe mailing list