diff options
author | Bryce McKinlay <bryce@waitaki.otago.ac.nz> | 2001-09-10 01:21:08 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2001-09-10 02:21:08 +0100 |
commit | 7866a458e2c017ced1ae1a01e90d1c25c22d051d (patch) | |
tree | c9cba2a639bc7b4c52507deb032b19f60bb24057 | |
parent | 69971cd850625b888f40dacdb4fc122b57602e9b (diff) | |
download | gcc-7866a458e2c017ced1ae1a01e90d1c25c22d051d.zip gcc-7866a458e2c017ced1ae1a01e90d1c25c22d051d.tar.gz gcc-7866a458e2c017ced1ae1a01e90d1c25c22d051d.tar.bz2 |
jvm.h (_Jv_AllocRawObj): New prototype.
* include/jvm.h (_Jv_AllocRawObj): New prototype.
* boehm.cc (_Jv_AllocRawObj): Implement.
* nogc.cc (_Jv_AllocRawObj): Likewise.
* exception.cc (_Jv_Throw): Use _Jv_AllocRawObj, not GC_malloc.
From-SVN: r45497
-rw-r--r-- | libjava/ChangeLog | 7 | ||||
-rw-r--r-- | libjava/boehm.cc | 8 | ||||
-rw-r--r-- | libjava/exception.cc | 5 | ||||
-rw-r--r-- | libjava/include/jvm.h | 3 | ||||
-rw-r--r-- | libjava/nogc.cc | 7 |
5 files changed, 26 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 6d872b2..8e158ad 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2001-09-10 Bryce McKinlay <bryce@waitaki.otago.ac.nz> + + * include/jvm.h (_Jv_AllocRawObj): New prototype. + * boehm.cc (_Jv_AllocRawObj): Implement. + * nogc.cc (_Jv_AllocRawObj): Likewise. + * exception.cc (_Jv_Throw): Use _Jv_AllocRawObj, not GC_malloc. + 2001-09-06 Anthony Green <green@redhat.com> * java/util/ResourceBundle.java (tryLocalBundle): Eliminate diff --git a/libjava/boehm.cc b/libjava/boehm.cc index 7982eda..27e332b 100644 --- a/libjava/boehm.cc +++ b/libjava/boehm.cc @@ -375,6 +375,14 @@ _Jv_AllocArray (jsize size, jclass klass) return obj; } +/* Allocate space for a new non-Java object, which does not have the usual + Java object header but may contain pointers to other GC'ed objects. */ +void * +_Jv_AllocRawObj (jsize size) +{ + return (void *) GC_MALLOC (size); +} + static void call_finalizer (GC_PTR obj, GC_PTR client_data) { diff --git a/libjava/exception.cc b/libjava/exception.cc index 7522361..a8e6ece 100644 --- a/libjava/exception.cc +++ b/libjava/exception.cc @@ -20,8 +20,6 @@ details. */ #include "unwind.h" -#include <gc.h> - struct alignment_test_struct { @@ -73,9 +71,8 @@ get_exception_header_from_ue (_Unwind_Exception *exc) extern "C" void _Jv_Throw (jthrowable value) { - /* FIXME: Use the proper API to the collector. */ java_exception_header *xh - = static_cast<java_exception_header *>(GC_malloc (sizeof (*xh))); + = static_cast<java_exception_header *>(_Jv_AllocRawObj (sizeof (*xh))); if (value == NULL) value = new java::lang::NullPointerException (); diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h index 3f9071c..936d4c6 100644 --- a/libjava/include/jvm.h +++ b/libjava/include/jvm.h @@ -114,6 +114,9 @@ void *_Jv_AllocPtrFreeObj (jsize size, jclass cl) __attribute__((__malloc__)); void *_Jv_AllocArray (jsize size, jclass cl) __attribute__((__malloc__)); /* Allocate space that is known to be pointer-free. */ void *_Jv_AllocBytes (jsize size) __attribute__((__malloc__)); +/* Allocate space for a new non-Java object, which does not have the usual + Java object header but may contain pointers to other GC'ed objects. */ +void *_Jv_AllocRawObj (jsize size) __attribute__((__malloc__)); /* Explicitly throw an out-of-memory exception. */ void _Jv_ThrowNoMemory() __attribute__((__noreturn__)); /* Allocate an object with a single pointer. The first word is reserved diff --git a/libjava/nogc.cc b/libjava/nogc.cc index 7cdd582..65cc8c3 100644 --- a/libjava/nogc.cc +++ b/libjava/nogc.cc @@ -66,6 +66,13 @@ _Jv_AllocBytes (jsize size) return obj; } +void * +_Jv_AllocRawObj (jsize size) +{ + total += size; + return calloc (size, 1); +} + void _Jv_RegisterFinalizer (void *, _Jv_FinalizerFunc *) { |