JNI in GCJ 3.2 for Win32
Fri Nov 8 11:53:00 GMT 2002
>>>>> "Ranjit" == Ranjit Mathew <firstname.lastname@example.org> writes:
Ranjit> I can probably add another argument to _Jv_LookupJNIMethod( )
Ranjit> passing it the value of "args_raw_size" of the _Jv_JNIMethod
Ranjit> object "_this" in _Jv_JNIMethod::call( ).
Ranjit> Would that be acceptable?
I misspoke earlier: _Jv_JNIMethod::call is used as the JNI stub for
In compiled classes, the compiler itself generates a call to
_Jv_LookupJNIMethod and then directly calls the returned method.
Now, the _Jv_LookupJNIMethod API is already wrong in some cases :-(.
In particular the compiler-generated stubs aren't thread safe.
I think your idea makes sense. You'll just need to update the
compiler as well. The function you want is build_jni_stub in
If we're going to change _Jv_LookupJNIMethod, let's solve the other
problem at the same time. I think it could look like this:
void _Jv_LookupJNIMethod (jclass klass, _Jv_Utf8Const *name,
void (**function) (), int arg_size);
The new implementation would synchronize on something, and would fill
in *FUNCTION with the pointer to the function it found.
If you do this you'll also need to change the declaration of
_Jv_LookupJNIMethod in decl.c (to change the return type).
More information about the Java