boehm.cc (_Jv_MarkObj): Don't follow null pointer to static field...

* boehm.cc (_Jv_MarkObj): Don't follow null pointer to static field,
	which can happen if class is JV_STATE_LOADED but not JV_STATE_PREPARED.

From-SVN: r97128
This commit is contained in:
Per Bothner 2005-03-28 00:09:38 -08:00 committed by Per Bothner
parent 8abb6b2217
commit 551ca039ec
2 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2005-03-28 Per Bothner <per@bothner.com>
* boehm.cc (_Jv_MarkObj): Don't follow null pointer to static field,
which can happen if class is JV_STATE_LOADED but not JV_STATE_PREPARED.
2005-03-27 Andreas Tobler <a.tobler@schweiz.ch>
* Makefile.am (classes.stamp): Add gnu/gcj/tools/gcj_dbtool/Main.java

View File

@ -189,9 +189,11 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void *env)
// mark also the value pointed to. We check for isResolved
// since marking can happen before memory is allocated for
// static members.
if (JvFieldIsRef (field) && field->isResolved())
// Note that field->u.addr may be null if the class c is
// JV_STATE_LOADED but not JV_STATE_PREPARED (initialized).
if (JvFieldIsRef (field) && p && field->isResolved())
{
jobject val = *(jobject*) field->u.addr;
jobject val = *(jobject*) p;
p = (GC_PTR) val;
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c);
}