]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/internal/Activator.java
Speeding up platform startup time
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / internal / Activator.java
index b629e08d96817dc7d2935259ec8354af7c534edf..4642fb5a40d48922d1b46d8854cac9a6e69a5486 100644 (file)
@@ -1,18 +1,25 @@
 package org.simantics.scl.osgi.internal;
 
 import java.util.Hashtable;
+import java.util.concurrent.ForkJoinPool;
 
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
+import org.simantics.scl.compiler.errors.Failable;
+import org.simantics.scl.compiler.module.Module;
 import org.simantics.scl.compiler.module.repository.ModuleRepository;
 import org.simantics.scl.compiler.module.repository.UpdateListener;
 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;
 import org.simantics.scl.compiler.source.repository.ProceduralModuleSourceRepository;
 import org.simantics.scl.compiler.source.repository.SourceRepositories;
 import org.simantics.scl.osgi.SCLOsgi;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class Activator implements BundleActivator {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(Activator.class);
+
     public static final String PLUGIN_ID = "org.simantics.scl.osgi";
 
     private static BundleContext context;
@@ -37,6 +44,13 @@ public class Activator implements BundleActivator {
                     }
                 },
                 properties);
+        // Let's try to compile StandardLibrary asynchronously to speed up
+        // the compilation when we actually need it the first time
+        LOGGER.info("Warming up SCL-compiler with StandardLibrary");
+        ForkJoinPool.commonPool().submit(() -> {
+            Failable<Module> module = SCLOsgi.MODULE_REPOSITORY.getModule("StandardLibrary");
+            LOGGER.info("StandardLibrary compiled {}", module);
+        });
     }
 
     public void stop(BundleContext bundleContext) throws Exception {