diff options
Diffstat (limited to 'libjava/java/lang/reflect/natMethod.cc')
-rw-r--r-- | libjava/java/lang/reflect/natMethod.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libjava/java/lang/reflect/natMethod.cc b/libjava/java/lang/reflect/natMethod.cc index 8e3b7b2140d..95801e87570 100644 --- a/libjava/java/lang/reflect/natMethod.cc +++ b/libjava/java/lang/reflect/natMethod.cc @@ -156,6 +156,13 @@ java::lang::reflect::Method::invoke (jobject obj, jobjectArray args) // of the object. meth = _Jv_LookupDeclaredMethod (k, meth->name, meth->signature); } + else + { + // We have to initialize a static class. It is safe to do this + // here and not in _Jv_CallAnyMethodA because JNI initializes a + // class whenever a method lookup is done. + _Jv_InitClass (declaringClass); + } return _Jv_CallAnyMethodA (obj, return_type, meth, false, parameter_types, args); @@ -405,8 +412,6 @@ _Jv_CallAnyMethodA (jobject obj, p += tsize; } - // FIXME: initialize class here. - using namespace java::lang; using namespace java::lang::reflect; |