< 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 >