Merged with tip.
[cacao.git] / src / vmcore / linker.c
index 4beb2952176a5366b53f283107b2cb2d4d24ac23..37e8daeb7d362077aa0b5ea88a392d0b2dea373e 100644 (file)
@@ -41,7 +41,7 @@
 #include "vm/access.h"
 #include "vm/array.h"
 #include "vm/exceptions.h"
-#include "vm/primitive.h"
+#include "vm/primitive.hpp"
 #include "vm/stringlocal.h"
 #include "vm/vm.h"
 
@@ -268,7 +268,7 @@ void linker_init(void)
        if (!link_class(class_java_lang_Throwable))
                vm_abort("linker_init: linking failed");
 
-#if defined(WITH_CLASSPATH_GNU)
+#if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
        if (!link_class(class_java_lang_VMSystem))
                vm_abort("linker_init: linking failed");
 
@@ -305,7 +305,7 @@ void linker_init(void)
        if (!link_class(class_java_lang_reflect_Method))
                vm_abort("linker_init: linking failed");
 
-# if defined(WITH_CLASSPATH_GNU)
+# if defined(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
        if (!link_class(class_java_lang_reflect_VMConstructor))
                vm_abort("linker_init: linking failed");
 
@@ -325,7 +325,7 @@ void linker_init(void)
        if (!link_class(class_java_util_HashMap))
                vm_abort("linker_init: linking failed");
 
-# if defined(WITH_CLASSPATH_SUN)
+# if defined(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
        if (!link_class(class_sun_reflect_MagicAccessorImpl))
                vm_abort("linker_init: linking failed");
 # endif
@@ -489,8 +489,8 @@ static bool linker_overwrite_method(methodinfo *mg,
        classinfo *cg;
        classinfo *cs;
 
-       cg = mg->class;
-       cs = ms->class;
+       cg = mg->clazz;
+       cs = ms->clazz;
 
        /* overriding a final method is illegal */
 
@@ -523,6 +523,15 @@ static bool linker_overwrite_method(methodinfo *mg,
 
        if ((ms->flags & ACC_METHOD_IMPLEMENTED) && ms->name != utf_init) {
                do {
+
+#if defined(ENABLE_TLH)
+                       if (mg->flags & ACC_METHOD_MONOMORPHY_USED) {
+                               printf("%s/%s is evil! the siner is %s/%s\n", mg->clazz->name->text, mg->name->text,
+                                       ms->clazz->name->text, ms->name->text);
+                               ms->flags |= ACC_METHOD_PARENT_MONOMORPHY_USED;                                 
+                       }
+#endif
+
                        if (mg->flags & ACC_METHOD_IMPLEMENTED) {
                                /* this adds another implementation */
 
@@ -787,7 +796,7 @@ static classinfo *link_class_intern(classinfo *c)
                                        MCOPY(am, im, methodinfo, 1);
 
                                        am->vftblindex  = (vftbllength++);
-                                       am->class       = c;
+                                       am->clazz       = c;
                                        am->flags      |= ACC_MIRANDA;
 
                                noabstractmethod2:
@@ -828,7 +837,7 @@ static classinfo *link_class_intern(classinfo *c)
                                         (interfacetablelength - 1) * (interfacetablelength > 1));
 
        c->vftbl                = v;
-       v->class                = c;
+       v->clazz                = c;
        v->vftbllength          = vftbllength;
        v->interfacetablelength = interfacetablelength;
        v->arraydesc            = arraydesc;
@@ -1176,10 +1185,6 @@ static void linker_compute_subclasses(classinfo *c)
 {
        LOCK_MONITOR_ENTER(linker_classrenumber_lock);
 
-#if 0 && defined(ENABLE_THREADS) && !defined(DISABLE_GC)
-       threads_stopworld();
-#endif
-
        if (!(c->flags & ACC_INTERFACE)) {
                c->nextsub = NULL;
                c->sub     = NULL;
@@ -1197,10 +1202,6 @@ static void linker_compute_subclasses(classinfo *c)
        linker_compute_class_values(class_java_lang_Object);
 
        LOCK_MONITOR_EXIT(linker_classrenumber_lock);
-
-#if 0 && defined(ENABLE_THREADS) && !defined(DISABLE_GC)
-       threads_startworld();
-#endif
 }