diff options
| author | ktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-01 10:46:36 +0000 |
|---|---|---|
| committer | ktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-02-01 10:46:36 +0000 |
| commit | 60793b98ef6e646ea52016ec2f2bad5b7bcda582 (patch) | |
| tree | 97d7fe8daa62f82f0826e2248f98c24d3f5d02a4 /libjava/java/lang/reflect/natMethod.cc | |
| parent | 69202565df8ed0f95df9ca6e3ec1bf946ac88f6d (diff) | |
| download | ppe42-gcc-60793b98ef6e646ea52016ec2f2bad5b7bcda582.tar.gz ppe42-gcc-60793b98ef6e646ea52016ec2f2bad5b7bcda582.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183794 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/reflect/natMethod.cc')
| -rw-r--r-- | libjava/java/lang/reflect/natMethod.cc | 7 |
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")); |

