< prev index next >

src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCICompilerConfig.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -23,10 +23,11 @@
 package jdk.vm.ci.hotspot;
 
 import jdk.vm.ci.code.CompilationRequest;
 import jdk.vm.ci.code.CompilationRequestResult;
 import jdk.vm.ci.common.JVMCIError;
+import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.Option;
 import jdk.vm.ci.runtime.JVMCICompiler;
 import jdk.vm.ci.runtime.JVMCICompilerFactory;
 import jdk.vm.ci.runtime.JVMCIRuntime;
 import jdk.vm.ci.services.Services;
 

@@ -45,32 +46,40 @@
         public JVMCICompiler createCompiler(JVMCIRuntime runtime) {
             return this;
         }
     }
 
-    private static JVMCICompilerFactory compilerFactory;
+    /**
+     * Factory of the selected system compiler.
+     */
+    private static final JVMCICompilerFactory compilerFactory;
 
     /**
-     * Selects the system compiler.
-     *
-     * Called from VM. This method has an object return type to allow it to be called with a VM
-     * utility function used to call other static initialization methods.
+     * Selects the system compiler by using the system property {@code jvmci.compiler}.
      */
-    static Boolean selectCompiler(String compilerName) {
-        assert compilerFactory == null;
-        for (JVMCICompilerFactory factory : Services.load(JVMCICompilerFactory.class)) {
-            if (factory.getCompilerName().equals(compilerName)) {
-                compilerFactory = factory;
-                return Boolean.TRUE;
+    static {
+        JVMCICompilerFactory factory = null;
+        String compilerName = Option.Compiler.getString();
+        if (compilerName != null) {
+            for (JVMCICompilerFactory f : Services.load(JVMCICompilerFactory.class)) {
+                if (f.getCompilerName().equals(compilerName)) {
+                    factory = f;
             }
         }
-
+            if (factory == null) {
         throw new JVMCIError("JVMCI compiler '%s' not found", compilerName);
     }
+        } else {
+            factory = new DummyCompilerFactory();
+        }
+        compilerFactory = factory;
+    }
 
+    /**
+     * Gets the selected system compiler factory.
+     *
+     * @return the selected system compiler factory
+     */
     static JVMCICompilerFactory getCompilerFactory() {
-        if (compilerFactory == null) {
-            compilerFactory = new DummyCompilerFactory();
-        }
         return compilerFactory;
     }
 }
< prev index next >