summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/java/lang/natClass.cc6
2 files changed, 12 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index e856e4b65d7..08d4faa1314 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-12 Kai Tietz <ktietz@redhat.com>
+
+ PR libgcj/50053
+ * java/lang/natClass.cc (java::lang::Class::newInstance): Special case
+ member-call for 32-bit IA native Window target.
+
2011-11-24 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/50888
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index ec4a18f1b51..b5ad91f2252 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;
}