aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>2000-05-05 04:46:26 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-05-05 04:46:26 +0000
commita52dee2f3621b84e269a38a64f0a86975ba93e40 (patch)
tree1f7b855d9b5317e1e2813fec65731e6489b4ea7a /libjava
parent652f25043a2497f8f7d0449ba4c964c0faa49164 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--libjava/boehm.cc11
-rw-r--r--libjava/gcj/field.h4
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