java-interp.h (class _Jv_InterpMethod): Added JV_MARKOBJ_DECL.
* include/java-interp.h (class _Jv_InterpMethod): Added JV_MARKOBJ_DECL. * boehm.cc (_Jv_MarkObj): Consolidated interpreter code. Also mark `prepared' field of interpreted method. * interpret.cc (compile): Use _Jv_AllocBytes. From-SVN: r59900
This commit is contained in:
parent
377dfc820f
commit
b4d0051bd9
4 changed files with 34 additions and 16 deletions
|
@ -1,3 +1,11 @@
|
|||
2002-12-06 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* include/java-interp.h (class _Jv_InterpMethod): Added
|
||||
JV_MARKOBJ_DECL.
|
||||
* boehm.cc (_Jv_MarkObj): Consolidated interpreter code. Also
|
||||
mark `prepared' field of interpreted method.
|
||||
* interpret.cc (compile): Use _Jv_AllocBytes.
|
||||
|
||||
2002-12-05 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* gnu/gcj/runtime/natStackTrace.cc (fillInStackTrace): Throw
|
||||
|
|
|
@ -39,7 +39,6 @@ extern "C"
|
|||
ptr_t GC_debug_generic_malloc (size_t size, int k, GC_EXTRA_PARAMS);
|
||||
};
|
||||
|
||||
// We must check for plausibility ourselves.
|
||||
#define MAYBE_MARK(Obj, Top, Limit, Source, Exit) \
|
||||
Top=GC_MARK_AND_PUSH((GC_PTR)Obj, Top, Limit, (GC_PTR *)Source)
|
||||
|
||||
|
@ -153,19 +152,6 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */)
|
|||
p = (ptr_t) c->methods[i].signature;
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c,
|
||||
cm2label);
|
||||
|
||||
// FIXME: `ncode' entry?
|
||||
|
||||
#ifdef INTERPRETER
|
||||
// The interpreter installs a heap-allocated
|
||||
// trampoline here, so we'll mark it.
|
||||
if (_Jv_IsInterpretedClass (c))
|
||||
{
|
||||
p = (ptr_t) c->methods[i].ncode;
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c,
|
||||
cm3label);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -221,7 +207,7 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */)
|
|||
#ifdef INTERPRETER
|
||||
if (_Jv_IsInterpretedClass (c))
|
||||
{
|
||||
_Jv_InterpClass* ic = (_Jv_InterpClass*)c;
|
||||
_Jv_InterpClass* ic = (_Jv_InterpClass*) c;
|
||||
|
||||
p = (ptr_t) ic->interpreted_methods;
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, ic, cElabel);
|
||||
|
@ -231,6 +217,26 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */)
|
|||
p = (ptr_t) ic->interpreted_methods[i];
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, ic, \
|
||||
cFlabel);
|
||||
|
||||
// Mark the direct-threaded code.
|
||||
if ((c->methods[i].accflags
|
||||
& java::lang::reflect::Modifier::NATIVE) == 0)
|
||||
{
|
||||
_Jv_InterpMethod *im
|
||||
= (_Jv_InterpMethod *) ic->interpreted_methods[i];
|
||||
if (im)
|
||||
{
|
||||
p = (ptr_t) im->prepared;
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, ic, \
|
||||
cFlabel);
|
||||
}
|
||||
}
|
||||
|
||||
// The interpreter installs a heap-allocated trampoline
|
||||
// here, so we'll mark it.
|
||||
p = (ptr_t) c->methods[i].ncode;
|
||||
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c,
|
||||
cm3label);
|
||||
}
|
||||
|
||||
p = (ptr_t) ic->field_initializers;
|
||||
|
|
|
@ -144,6 +144,10 @@ class _Jv_InterpMethod : public _Jv_MethodBase
|
|||
friend class gnu::gcj::runtime::StackTrace;
|
||||
|
||||
friend void _Jv_PrepareClass(jclass);
|
||||
|
||||
#ifdef JV_MARKOBJ_DECL
|
||||
friend JV_MARKOBJ_DECL;
|
||||
#endif
|
||||
};
|
||||
|
||||
class _Jv_InterpClass : public java::lang::Class
|
||||
|
|
|
@ -312,7 +312,7 @@ _Jv_InterpMethod::compile (const void * const *insn_targets)
|
|||
|
||||
if (! first_pass)
|
||||
{
|
||||
insns = (insn_slot *) _Jv_Malloc (sizeof (insn_slot) * next);
|
||||
insns = (insn_slot *) _Jv_AllocBytes (sizeof (insn_slot) * next);
|
||||
next = 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue