diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c3c16e3f481..45bea02cccb 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2000-05-04 Tom Tromey + + * 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 * java/lang/natClass.cc (isInstance): Use __builtin_expect. diff --git a/libjava/boehm.cc b/libjava/boehm.cc index 62b9a86fc97..34e95105887 100644 --- a/libjava/boehm.cc +++ b/libjava/boehm.cc @@ -16,6 +16,7 @@ details. */ #include #include +#include #include // 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 62663d64e64..4413fa30793 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