aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2011-12-12 11:40:27 +0100
committerKai Tietz <ktietz@gcc.gnu.org>2011-12-12 11:40:27 +0100
commit7520518f731935ae46aeb4f1d276585d7aa8e0ba (patch)
tree45f24ba912850002c07771d6cfe99c3baf36f6eb /libjava/java
parent9c25bb25a88048f3b650c7e036ba6d05d5437425 (diff)
downloadgcc-7520518f731935ae46aeb4f1d276585d7aa8e0ba.zip
gcc-7520518f731935ae46aeb4f1d276585d7aa8e0ba.tar.gz
gcc-7520518f731935ae46aeb4f1d276585d7aa8e0ba.tar.bz2
re PR libgcj/50053 (jc1 doesn't emit static initializer or initializer code for super class without -findirect-dispatch.)
PR libgcj/50053 * java/lang/natClass.cc (java::lang::Class::newInstance): Special case member-call for 32-bit IA native Window target. From-SVN: r182225
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/natClass.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index ec4a18f..b5ad91f 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -661,7 +661,13 @@ java::lang::Class::newInstance (void)
throw new java::lang::InstantiationException (getName());
jobject r = _Jv_AllocObject (this);
+ /* Class constructors/destructors have __thiscall calling
+ convention for 32-bit native Windows ABI. */
+#if defined (__MINGW32__) && defined (__i386__)
+ ((void (__thiscall *) (jobject)) meth->ncode) (r);
+#else
((void (*) (jobject)) meth->ncode) (r);
+#endif
return r;
}