re PR libgcj/14296 (3.4 regression: Method.Invoke)

2004-02-25  Andrew Haley  <aph@redhat.com>

	PR java/14296:
	* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Make sure
	we have a valid method index.

From-SVN: r78504
This commit is contained in:
Andrew Haley 2004-02-26 15:22:20 +00:00
parent d0c8fd2aa3
commit 50106e8f8d
1 changed files with 10 additions and 1 deletions

View File

@ -466,7 +466,16 @@ _Jv_CallAnyMethodA (jobject obj,
void *ncode;
if (is_virtual_call && ! Modifier::isFinal (meth->accflags))
// FIXME: If a vtable index is -1 at this point it is invalid, so we
// have to use the ncode.
//
// This can happen because methods in final classes don't have
// vtable entries, but _Jv_isVirtualMethod() doesn't know that. We
// could solve this problem by allocating a vtable index for methods
// in final classes.
if (is_virtual_call
&& ! Modifier::isFinal (meth->accflags)
&& (_Jv_ushort)-1 != meth->index)
{
_Jv_VTable *vtable = *(_Jv_VTable **) obj;
ncode = vtable->get_method (meth->index);