re PR libgcj/51500 (106 unexpected libjava testsuite failures with mingw32)

PR target/51500
	* interpret.cc (_Jv_init_cif): Handle thiscall
	convention for 32-bit Windows.
	* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA):
	Likewise.
	* java/lang/reflect/natVMProxy.cc (invoke_t): Add
	thiscall-attribute for 32-bit Windows.

From-SVN: r183794
This commit is contained in:
Kai Tietz
2012-02-01 11:46:36 +01:00
committed by Kai Tietz
parent 337c6e076c
commit 76a3962fe9
4 changed files with 27 additions and 3 deletions
+6 -1
View File
@@ -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"));
+5 -1
View File
@@ -79,7 +79,11 @@ typedef void (*closure_fun) (ffi_cif*, void*, void**, void*);
static void *ncode (int method_index, jclass klass, _Jv_Method *self, closure_fun fun);
static void run_proxy (ffi_cif*, void*, void**, void*);
typedef jobject invoke_t (jobject, Proxy *, Method *, JArray< jobject > *);
typedef jobject
#if defined (X86_WIN32) && !defined (__CYGWIN__)
__attribute__ ((thiscall))
#endif
invoke_t (jobject, Proxy *, Method *, JArray< jobject > *);
// True if pc points to a proxy frame.