resolve.cc (_Jv_JNIMethod::ncode): Use stdcall calling convention on Win32 to invoke...
authorRanjit Mathew <rmathew@hotmail.com>
Mon, 3 Feb 2003 21:07:22 +0000 (21:07 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Mon, 3 Feb 2003 21:07:22 +0000 (21:07 +0000)
2003-02-03  Ranjit Mathew <rmathew@hotmail.com>

* resolve.cc (_Jv_JNIMethod::ncode): Use stdcall calling
convention on Win32 to invoke native JNI methods.

From-SVN: r62345

libjava/ChangeLog
libjava/resolve.cc

index 72c1793..11ba2ed 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-03  Ranjit Mathew <rmathew@hotmail.com>
+
+       * resolve.cc (_Jv_JNIMethod::ncode): Use stdcall calling
+       convention on Win32 to invoke native JNI methods.
+
 2003-02-03  Andrew Haley  <aph@redhat.com>
 
        * configure.host (x86_64): Enable interpreter.
index e69341e..aa17ea9 100644 (file)
@@ -1003,7 +1003,14 @@ _Jv_JNIMethod::ncode ()
   memcpy (&jni_arg_types[offset], &closure->arg_types[0],
          arg_count * sizeof (ffi_type *));
 
-  if (ffi_prep_cif (&jni_cif, FFI_DEFAULT_ABI,
+  // NOTE: This must agree with the JNICALL definition in jni.h
+#ifdef WIN32
+#define FFI_JNI_ABI FFI_STDCALL
+#else
+#define FFI_JNI_ABI FFI_DEFAULT_ABI
+#endif
+
+  if (ffi_prep_cif (&jni_cif, FFI_JNI_ABI,
                    extra_args + arg_count, rtype,
                    jni_arg_types) != FFI_OK)
     throw_internal_error ("ffi_prep_cif failed for JNI function");