From 8c5abaa8a3c110f1cf4235f9f1bc7203aa55ec50 Mon Sep 17 00:00:00 2001 From: bryce Date: Thu, 30 Oct 2003 21:09:45 +0000 Subject: * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Don't use vtable dispatch for final methods. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73101 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/reflect/natMethod.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libjava/java') diff --git a/libjava/java/lang/reflect/natMethod.cc b/libjava/java/lang/reflect/natMethod.cc index 525a4a0e9c9..ed122ea2441 100644 --- a/libjava/java/lang/reflect/natMethod.cc +++ b/libjava/java/lang/reflect/natMethod.cc @@ -343,6 +343,8 @@ _Jv_CallAnyMethodA (jobject obj, jvalue *result, jboolean is_jni_call) { + using namespace java::lang::reflect; + #ifdef USE_LIBFFI JvAssert (! is_constructor || ! obj); JvAssert (! is_constructor || return_type); @@ -351,7 +353,7 @@ _Jv_CallAnyMethodA (jobject obj, // constructor does need a `this' argument, but it is one we create. jboolean needs_this = false; if (is_constructor - || ! java::lang::reflect::Modifier::isStatic(meth->accflags)) + || ! Modifier::isStatic(meth->accflags)) needs_this = true; int param_count = parameter_types->length; @@ -464,7 +466,7 @@ _Jv_CallAnyMethodA (jobject obj, void *ncode; - if (is_virtual_call) + if (is_virtual_call && ! Modifier::isFinal (meth->accflags)) { _Jv_VTable *vtable = *(_Jv_VTable **) obj; ncode = vtable->get_method (meth->index); -- cgit v1.2.3