mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-19 08:30:28 +08:00
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:
parent
337c6e076c
commit
76a3962fe9
@ -1,3 +1,13 @@
|
||||
2012-02-01 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
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.
|
||||
|
||||
2012-01-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gnu/gcj/convert/Convert.java (version): Update copyright notice
|
||||
|
@ -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");
|
||||
|
||||
|
@ -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"));
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user