Mercurial > hg > graal-compiler
changeset 22762:8523434db559
Delay HotSpotBackendFactory registration.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Tue, 06 Oct 2015 16:23:50 +0200 |
parents | f46cada70621 |
children | 948369884428 |
files | graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackendFactory.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java |
diffstat | 4 files changed, 26 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java Tue Oct 06 15:52:06 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java Tue Oct 06 16:23:50 2015 +0200 @@ -33,7 +33,6 @@ import jdk.internal.jvmci.code.Register; import jdk.internal.jvmci.code.RegisterConfig; import jdk.internal.jvmci.code.TargetDescription; -import jdk.internal.jvmci.compiler.StartupEventListener; import jdk.internal.jvmci.hotspot.HotSpotCodeCacheProvider; import jdk.internal.jvmci.hotspot.HotSpotConstantReflectionProvider; import jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider; @@ -69,11 +68,11 @@ import com.oracle.graal.phases.util.Providers; import com.oracle.graal.replacements.amd64.AMD64GraphBuilderPlugins; -@ServiceProvider(StartupEventListener.class) -public class AMD64HotSpotBackendFactory implements HotSpotBackendFactory, StartupEventListener { +@ServiceProvider(HotSpotBackendFactory.class) +public class AMD64HotSpotBackendFactory implements HotSpotBackendFactory { @Override - public void beforeJVMCIStartup() { + public void register() { DefaultHotSpotGraalCompilerFactory.registerBackend(AMD64.class, this); }
--- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Tue Oct 06 15:52:06 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackendFactory.java Tue Oct 06 16:23:50 2015 +0200 @@ -30,7 +30,6 @@ import jdk.internal.jvmci.code.Register; import jdk.internal.jvmci.code.RegisterConfig; import jdk.internal.jvmci.code.TargetDescription; -import jdk.internal.jvmci.compiler.StartupEventListener; import jdk.internal.jvmci.hotspot.HotSpotCodeCacheProvider; import jdk.internal.jvmci.hotspot.HotSpotConstantReflectionProvider; import jdk.internal.jvmci.hotspot.HotSpotJVMCIRuntimeProvider; @@ -66,11 +65,11 @@ import com.oracle.graal.phases.util.Providers; import com.oracle.graal.replacements.sparc.SPARCGraphBuilderPlugins; -@ServiceProvider(StartupEventListener.class) -public class SPARCHotSpotBackendFactory implements HotSpotBackendFactory, StartupEventListener { +@ServiceProvider(HotSpotBackendFactory.class) +public class SPARCHotSpotBackendFactory implements HotSpotBackendFactory { @Override - public void beforeJVMCIStartup() { + public void register() { DefaultHotSpotGraalCompilerFactory.registerBackend(SPARC.class, this); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackendFactory.java Tue Oct 06 15:52:06 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotBackendFactory.java Tue Oct 06 16:23:50 2015 +0200 @@ -28,5 +28,7 @@ public interface HotSpotBackendFactory { + void register(); + HotSpotBackend createBackend(HotSpotGraalRuntimeProvider runtime, CompilerConfiguration compilerConfiguration, HotSpotJVMCIRuntimeProvider jvmciRuntime, HotSpotBackend host); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java Tue Oct 06 15:52:06 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalCompilerFactory.java Tue Oct 06 16:23:50 2015 +0200 @@ -32,6 +32,7 @@ import jdk.internal.jvmci.options.OptionType; import jdk.internal.jvmci.options.OptionValue; import jdk.internal.jvmci.runtime.JVMCIRuntime; +import jdk.internal.jvmci.service.Services; import com.oracle.graal.phases.tiers.CompilerConfiguration; @@ -46,6 +47,22 @@ } + @SuppressWarnings("try") + private static class Lazy { + + static { + try (InitTimer t = timer("HotSpotBackendFactory.register")) { + for (HotSpotBackendFactory backend : Services.load(HotSpotBackendFactory.class)) { + backend.register(); + } + } + } + + static void registerBackends() { + // force run of static initializer + } + } + protected abstract HotSpotBackendFactory getBackendFactory(Architecture arch); protected abstract CompilerConfiguration createCompilerConfiguration(); @@ -55,6 +72,7 @@ public Compiler createCompiler(JVMCIRuntime runtime) { HotSpotJVMCIRuntime jvmciRuntime = (HotSpotJVMCIRuntime) runtime; try (InitTimer t = timer("HotSpotGraalRuntime.<init>")) { + Lazy.registerBackends(); HotSpotGraalRuntime graalRuntime = new HotSpotGraalRuntime(jvmciRuntime, this); HotSpotGraalVMEventListener.addRuntime(graalRuntime); return new HotSpotGraalCompiler(jvmciRuntime, graalRuntime);