mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-21 21:22:38 +08:00
bf3b8e42e2
2000-09-30 Hans Boehm <boehm@acm.org> Bryce McKinlay <bryce@albatross.co.nz> Implement bitmap descriptor based marking for Boehm GC. * configure.in: Define JC1GCSPEC. Set it if boehm-gc is used. * configure: Rebuilt. * libgcj.spec.in: Pass JC1GCSPEC to jc1. * include/jvm.h (struct _Jv_VTable): New field `gc_descr'. New inline method get_finalizer(). (struct _Jv_ArrayVTable): Ditto. Declare method array with NUM_OBJECT_METHODS elements instead of NUM_OBJECT_METHODS + 1. (_Jv_AllocObj): Add new jclass parameter. (_Jv_AllocArray): Ditto. (_Jv_BuildGCDescr): New prototype. * prims.cc (_Jv_AllocObject): Rename parameter `c' to `klass'. Pass `klass' to _Jv_AllocObj. Don't set the new object's vtable. Use get_finalizer() instead of direct finalizer vtable offset. (_Jv_NewObjectArray): Rename parameter `clas' to `klass'. Pass `klass' to _Jv_AllocArray. Don't set the new array's vtable. (_Jv_NewPrimArray): Call _Jv_FindArrayClass before _Jv_AllocObj. Pass `klass' to _Jv_AllocObj. Don't set the new array's vtable. * resolve.cc (METHOD_NOT_THERE, METHOD_INACCESSIBLE): New #defines. (_Jv_ResolvePoolEntry): Use METHOD_NOT_THERE and METHOD_INACCESSIBLE. (_Jv_DetermineVTableIndex): Ditto. (_Jv_PrepareClass): Ditto. Remove offset-by-one adjustments from vtable calculations to account for new gc_descr field. * boehm.cc: #include gc_gcj.h. (obj_kind_x, obj_free_list): `#if 0'-ed away. (_Jv_MarkObj): Check that vtable doesn't point to a cleared object. New commentary from HB. Mark the classes vtable. (_Jv_MarkArray): Check that vtable doesn't point to a cleared object. (GC_DEFAULT_DESCR): New #define. (_Jv_BuildGCDescr): New function. Use GC_DEFAULT_DESCR, for now. (_Jv_AllocObj): New parameter `klass'. Use GC_GCJ_MALLOC (). (_Jv_AllocArray): New parameter `klass'. Allocate with GC_MALLOC and scan conservativly if size is less than min_heap_addr. Set vtable pointer of new object before returning. (_Jv_AllocBytes): Use GC_MALLOC_ATOMIC, not GC_GENERIC_MALLOC. (_Jv_InitGC): Call GC_init_gcj_malloc(). Don't set up marking and allocation for obj_kind_x. * nogc.cc (_Jv_BuildGCDescr): New function. Return 0. (_Jv_AllocObj): Set vtable on returned object. (_Jv_AllocArray): Ditto. * java/lang/Class.h (_Jv_NewObjectArray): No longer a friend. (_Jv_NewPrimArray): Ditto. (_Jv_AllocObj): Declare as a friend. (_Jv_AllocArray): Ditto. * java/lang/natClassLoader.cc (_Jv_FindArrayClass): Copy gc_descr from &ObjectClass into new array class. Remove offset-by-one adjustments from `method' size calculations to account for gc_descr field. Co-Authored-By: Bryce McKinlay <bryce@albatross.co.nz> From-SVN: r36679 |
||
---|---|---|
.. | ||
doc | ||
gcj | ||
gnu | ||
include | ||
java | ||
libltdl | ||
scripts | ||
sysdep | ||
testsuite | ||
acconfig.h | ||
acinclude.m4 | ||
aclocal.m4 | ||
addr2name.awk | ||
boehm.cc | ||
ChangeLog | ||
ChangeLog-1999 | ||
chartables.pl | ||
configure | ||
configure.host | ||
configure.in | ||
COPYING | ||
defineclass.cc | ||
exception.cc | ||
gij.cc | ||
interpret.cc | ||
jni.cc | ||
LIBGCJ_LICENSE | ||
libgcj-test.spec.in | ||
libgcj.spec.in | ||
libgcjdata.c | ||
libtool-version | ||
Makefile.am | ||
Makefile.in | ||
mauve-libgcj | ||
name-finder.cc | ||
NEWS | ||
no-threads.cc | ||
nogc.cc | ||
posix-threads.cc | ||
posix.cc | ||
prims.cc | ||
README | ||
resolve.cc | ||
THANKS | ||
win32-threads.cc |
This is libgcj: the runtime library for gcj, the GNU Compiler for Java. libgcj provides a partial implementation of the Java Class Libraries. libgcj is free software. See the file LIBGCJ_LICENSE for copying permission. DOCUMENTATION ============= All documentation, including detailed installation and usage instructions, can be found on the gcj web pages at this URL: http://sourceware.cygnus.com/java/ REQUIREMENTS ============ libgcj must be built with a compatible version of the gcc compiler. libgcj releases are usually numbered according to their corresponding gcc release. For example, if this is "libgcj 2.95.3", you need to build it using "gcc 2.95.3". QUICK INSTALLATION ================== > mkdir build > cd build > ../libgcj/configure --enable-threads=<THREADS_TYPE> --prefix=<DIR> > make > make install where: <THREADS_TYPE> specifies the threads library to be used by libgcj. Currently the possible values are "posix" and "none". This value must be the same as the value used when configuring gcc itself. <DIR> specifies the installation directory. This should be the same location as where gcc is installed. Consult the gcj web pages for additional "configure" arguments. NOTE: libgcj can not be built in the same directory as `configure'. You must create a separate build directory. BUGS ==== Please submit bug reports via this URL: http://sourceware.cygnus.com/cgi-bin/gnatsweb.pl?database=java