aboutsummaryrefslogtreecommitdiff
path: root/libjava/resolve.cc
diff options
context:
space:
mode:
authorRanjit Mathew <rmathew@hotmail.com>2003-02-03 21:07:22 +0000
committerTom Tromey <tromey@gcc.gnu.org>2003-02-03 21:07:22 +0000
commit9762ec767ee8e33089b9d4763cc39ad774b36e43 (patch)
treeb2f1f01798e273a0b7aac27bb966493109f23ab3 /libjava/resolve.cc
parent985d0d50d5656be93b6e5d1dae2e3f7afeaa0bc5 (diff)
downloadgcc-9762ec767ee8e33089b9d4763cc39ad774b36e43.zip
gcc-9762ec767ee8e33089b9d4763cc39ad774b36e43.tar.gz
gcc-9762ec767ee8e33089b9d4763cc39ad774b36e43.tar.bz2
resolve.cc (_Jv_JNIMethod::ncode): Use stdcall calling convention on Win32 to invoke native JNI methods.
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
Diffstat (limited to 'libjava/resolve.cc')
-rw-r--r--libjava/resolve.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/libjava/resolve.cc b/libjava/resolve.cc
index e69341e..aa17ea9 100644
--- a/libjava/resolve.cc
+++ b/libjava/resolve.cc
@@ -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");