diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-05-05 04:46:26 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-05-05 04:46:26 +0000 |
commit | a52dee2f3621b84e269a38a64f0a86975ba93e40 (patch) | |
tree | 1f7b855d9b5317e1e2813fec65731e6489b4ea7a /libjava | |
parent | 652f25043a2497f8f7d0449ba4c964c0faa49164 (diff) | |
download | gcc-a52dee2f3621b84e269a38a64f0a86975ba93e40.zip gcc-a52dee2f3621b84e269a38a64f0a86975ba93e40.tar.gz gcc-a52dee2f3621b84e269a38a64f0a86975ba93e40.tar.bz2 |
field.h (JvFieldIsRef): Return false for gnu.gcj.RawData field.
* gcj/field.h (JvFieldIsRef): Return false for gnu.gcj.RawData
field.
* boehm.cc (_Jv_MarkObj): Removed dead code. Use `STATIC', not
`0x0008'.
Include Modifier.h.
From-SVN: r33702
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/boehm.cc | 11 | ||||
-rw-r--r-- | libjava/gcj/field.h | 4 |
3 files changed, 13 insertions, 10 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c3c16e3..45bea02 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2000-05-04 Tom Tromey <tromey@cygnus.com> + + * gcj/field.h (JvFieldIsRef): Return false for gnu.gcj.RawData + field. + * boehm.cc (_Jv_MarkObj): Removed dead code. Use `STATIC', not + `0x0008'. + Include Modifier.h. + 2000-05-05 Bryce McKinlay <bryce@albatross.co.nz> * java/lang/natClass.cc (isInstance): Use __builtin_expect. diff --git a/libjava/boehm.cc b/libjava/boehm.cc index 62b9a86fc9..34e9510 100644 --- a/libjava/boehm.cc +++ b/libjava/boehm.cc @@ -16,6 +16,7 @@ details. */ #include <gcj/cni.h> #include <java/lang/Class.h> +#include <java/lang/reflect/Modifier.h> #include <java-interp.h> // More nastiness: the GC wants to define TRUE and FALSE. We don't @@ -102,14 +103,6 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /*env*/) { jclass c = (jclass) addr; -#if 0 - // The next field should probably not be marked, since this is - // only used in the class hash table. Marking this field - // basically prohibits class unloading. --Kresten - p = (ptr_t) c->next; - MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, c2label); -#endif - p = (ptr_t) c->name; MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, c3label); p = (ptr_t) c->superclass; @@ -182,7 +175,7 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /*env*/) // For the interpreter, we also need to mark the memory // containing static members - if (field->flags & 0x0008) + if ((field->flags & java::lang::reflect::Modifier::STATIC)) { p = (ptr_t) field->u.addr; MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, c8clabel); diff --git a/libjava/gcj/field.h b/libjava/gcj/field.h index 62663d6..4413fa3 100644 --- a/libjava/gcj/field.h +++ b/libjava/gcj/field.h @@ -175,7 +175,9 @@ JvNumStaticFields (jclass klass) extern inline jboolean JvFieldIsRef (jfieldID field) { - return field->isRef (); + // gnu.gcj.RawData.class is _CL_Q33gnu3gcj7RawData + extern java::lang::Class _CL_Q33gnu3gcj7RawData; + return field->isRef () && field->type != &_CL_Q33gnu3gcj7RawData; } extern inline jobject |