hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java Fri Aug 11 23:12:11 2017 +0000
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java Fri Aug 11 17:36:26 2017 -0700
@@ -30,10 +30,13 @@
import static org.graalvm.compiler.debug.DebugContext.DEFAULT_LOG_STREAM;
import java.util.ArrayList;
+import java.util.EnumMap;
import java.util.List;
+import java.util.Map;
import org.graalvm.compiler.api.replacements.SnippetReflectionProvider;
import org.graalvm.compiler.api.runtime.GraalRuntime;
+import org.graalvm.compiler.core.CompilationWrapper.ExceptionAction;
import org.graalvm.compiler.core.common.CompilationIdentifier;
import org.graalvm.compiler.core.common.GraalOptions;
import org.graalvm.compiler.core.target.Backend;
@@ -95,6 +98,7 @@
private final OptionValues options;
private final DiagnosticsOutputDirectory outputDirectory;
+ private final Map<ExceptionAction, Integer> compilationProblemsPerAction;
private final HotSpotGraalMBean mBean;
/**
@@ -114,11 +118,12 @@
}
outputDirectory = new DiagnosticsOutputDirectory(options);
+ compilationProblemsPerAction = new EnumMap<>(ExceptionAction.class);
snippetCounterGroups = GraalOptions.SnippetCounters.getValue(options) ? new ArrayList<>() : null;
CompilerConfiguration compilerConfiguration = compilerConfigurationFactory.createCompilerConfiguration();
HotSpotGraalCompiler compiler = new HotSpotGraalCompiler(jvmciRuntime, this, initialOptions);
- this.mBean = HotSpotGraalMBean.create(compiler);
+ this.mBean = createHotSpotGraalMBean(compiler);
BackendMap backendMap = compilerConfigurationFactory.createBackendMap();
@@ -167,6 +172,14 @@
bootstrapJVMCI = config.getFlag("BootstrapJVMCI", Boolean.class);
}
+ private static HotSpotGraalMBean createHotSpotGraalMBean(HotSpotGraalCompiler compiler) {
+ try {
+ return HotSpotGraalMBean.create(compiler);
+ } catch (LinkageError ex) {
+ return null;
+ }
+ }
+
private HotSpotBackend registerBackend(HotSpotBackend backend) {
Class<? extends Architecture> arch = backend.getTarget().arch.getClass();
HotSpotBackend oldValue = backends.put(arch, backend);
@@ -192,12 +205,12 @@
@Override
public OptionValues getOptions() {
- return mBean.optionsFor(options, null);
+ return mBean == null ? options : mBean.optionsFor(options, null);
}
@Override
public OptionValues getOptions(ResolvedJavaMethod forMethod) {
- return mBean.optionsFor(options, forMethod);
+ return mBean == null ? options : mBean.optionsFor(options, forMethod);
}
@Override
@@ -298,4 +311,9 @@
public DiagnosticsOutputDirectory getOutputDirectory() {
return outputDirectory;
}
+
+ @Override
+ public Map<ExceptionAction, Integer> getCompilationProblemsPerAction() {
+ return compilationProblemsPerAction;
+ }
}