]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/runtime/RuntimeModule.java
Simupedia tuning step 2
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / runtime / RuntimeModule.java
index 2e35427cdcda7014e7bacd12cb10c6c7de9312fa..9955c77aac46fb76e8549548c9e78d55a64ce423 100644 (file)
@@ -35,7 +35,7 @@ public class RuntimeModule {
     private static final Logger LOGGER = LoggerFactory.getLogger(RuntimeModule.class);
     
     public static final boolean VALIDATE_CLASS_NAMES = true;
-    public static final boolean TRACE_CLASS_CREATION = true;
+    public static final boolean TRACE_CLASS_CREATION = false;
     
     Module module;
     ModuleClassLoader classLoader;
@@ -131,7 +131,9 @@ public class RuntimeModule {
         
         private Class<?> getClass(String name) throws ClassNotFoundException {
             
-            System.out.println(moduleName + ":getClass " + name);
+            Class<?> clazz = findLoadedClass(name);
+            if(clazz != null)
+                return clazz;
             
             // If the class is not generated from SCL, use parent class loader
             if(!name.startsWith(SCL_PACKAGE_PREFIX)) {
@@ -388,7 +390,6 @@ public class RuntimeModule {
             ClassVisitor cv1 = new ClassVisitor(ASM5) {};
             ClassVisitor cv = new ClassRemapper(cv1, m);
             cr.accept(cv, ClassReader.SKIP_DEBUG);
-            System.err.println(className + " refs: " + referencedClasses);
             return referencedClasses;
         } catch (Exception e) {
             e.printStackTrace();
@@ -396,22 +397,24 @@ public class RuntimeModule {
         return null;
     }
     
-    public void loadReferences() {
-        ConcreteModule cm = (ConcreteModule)module;
-        try {
-            for(String className : cm.getClasses().keySet()) {
-                Set<String> refs = classReferences(className);
-                for(String s : refs) {
-                    String internalName = s.replace('/', '.');
-                    try {
-                        classLoader.loadClass(internalName);
-                    } catch (Throwable e) {
-                        e.printStackTrace();
+    public void loadClasses() {
+        if(module instanceof ConcreteModule) {
+            ConcreteModule cm = (ConcreteModule)module;
+            try {
+                for(String className : cm.getClasses().keySet()) {
+                    Set<String> refs = classReferences(className);
+                    for(String s : refs) {
+                        String internalName = s.replace('/', '.');
+                        try {
+                            classLoader.getClass(internalName);
+                        } catch (Throwable e) {
+                            e.printStackTrace();
+                        }
                     }
                 }
+            } catch (Throwable e) {
+                e.printStackTrace();
             }
-        } catch (Throwable e) {
-            e.printStackTrace();
         }
     }