summaryrefslogtreecommitdiff
path: root/libjava/java/lang/reflect/natMethod.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/reflect/natMethod.cc')
-rw-r--r--libjava/java/lang/reflect/natMethod.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libjava/java/lang/reflect/natMethod.cc b/libjava/java/lang/reflect/natMethod.cc
index d95c92f8468..8ac87fcb42a 100644
--- a/libjava/java/lang/reflect/natMethod.cc
+++ b/libjava/java/lang/reflect/natMethod.cc
@@ -436,7 +436,12 @@ _Jv_CallAnyMethodA (jobject obj,
p += size_per_arg;
}
- if (ffi_prep_cif (&cif, FFI_DEFAULT_ABI, param_count,
+ ffi_abi cabi = FFI_DEFAULT_ABI;
+#if defined (X86_WIN32) && !defined (__CYGWIN__)
+ if (needs_this)
+ cabi = FFI_THISCALL;
+#endif
+ if (ffi_prep_cif (&cif, cabi, param_count,
rtype, argtypes) != FFI_OK)
throw new java::lang::VirtualMachineError(JvNewStringLatin1("internal error: ffi_prep_cif failed"));