aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
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;
}