hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/HotSpotGraalRuntime.java
changeset 46807 8b2c620d7092
parent 46680 2894e4262fd6
--- 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;
+    }
 }