diff options
author | Kai Tietz <ktietz@redhat.com> | 2012-02-01 11:46:36 +0100 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2012-02-01 11:46:36 +0100 |
commit | 76a3962fe967dfde16d1b16460149d42680651b0 (patch) | |
tree | 97d7fe8daa62f82f0826e2248f98c24d3f5d02a4 /libjava/interpret.cc | |
parent | 337c6e076cb4b9a2ad374859ca2248067d64e514 (diff) | |
download | gcc-76a3962fe967dfde16d1b16460149d42680651b0.zip gcc-76a3962fe967dfde16d1b16460149d42680651b0.tar.gz gcc-76a3962fe967dfde16d1b16460149d42680651b0.tar.bz2 |
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
Diffstat (limited to 'libjava/interpret.cc')
-rw-r--r-- | libjava/interpret.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libjava/interpret.cc b/libjava/interpret.cc index ab28836..78686fd 100644 --- a/libjava/interpret.cc +++ b/libjava/interpret.cc @@ -1303,7 +1303,12 @@ _Jv_init_cif (_Jv_Utf8Const* signature, if (ptr != (unsigned char*)signature->chars() + signature->len()) throw_internal_error ("did not find end of signature"); - if (ffi_prep_cif (cif, FFI_DEFAULT_ABI, + ffi_abi cabi = FFI_DEFAULT_ABI; +#if defined (X86_WIN32) && !defined (__CYGWIN__) + if (!staticp) + cabi = FFI_THISCALL; +#endif + if (ffi_prep_cif (cif, cabi, arg_count, rtype, arg_types) != FFI_OK) throw_internal_error ("ffi_prep_cif failed"); |