31 import java.lang.reflect.Method;
32 import java.lang.reflect.Modifier;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.Map;
36 import java.util.Objects;
37 import java.util.TreeMap;
38
39 import jdk.vm.ci.code.Architecture;
40 import jdk.vm.ci.code.CompilationResult;
41 import jdk.vm.ci.code.InstalledCode;
42 import jdk.vm.ci.common.JVMCIError;
43 import jdk.vm.ci.inittimer.InitTimer;
44 import jdk.vm.ci.meta.JVMCIMetaAccessContext;
45 import jdk.vm.ci.meta.JavaKind;
46 import jdk.vm.ci.meta.JavaType;
47 import jdk.vm.ci.meta.ResolvedJavaType;
48 import jdk.vm.ci.runtime.JVMCI;
49 import jdk.vm.ci.runtime.JVMCIBackend;
50 import jdk.vm.ci.runtime.JVMCICompiler;
51 import jdk.vm.ci.service.Services;
52 import sun.misc.VM;
53
54 //JaCoCo Exclude
55
56 /**
57 * HotSpot implementation of a JVMCI runtime.
58 *
59 * The initialization of this class is very fragile since it's initialized both through
60 * {@link JVMCI#initialize()} or through calling {@link HotSpotJVMCIRuntime#runtime()} and
61 * {@link HotSpotJVMCIRuntime#runtime()} is also called by {@link JVMCI#initialize()}. So this class
62 * can't have a static initializer and any required initialization must be done as part of
63 * {@link #runtime()}. This allows the initialization to funnel back through
64 * {@link JVMCI#initialize()} without deadlocking.
65 */
66 public final class HotSpotJVMCIRuntime implements HotSpotJVMCIRuntimeProvider, HotSpotProxified {
67
68 @SuppressWarnings("try")
69 static class DelayedInit {
70 private static final HotSpotJVMCIRuntime instance;
71
|
31 import java.lang.reflect.Method;
32 import java.lang.reflect.Modifier;
33 import java.util.Collections;
34 import java.util.HashMap;
35 import java.util.Map;
36 import java.util.Objects;
37 import java.util.TreeMap;
38
39 import jdk.vm.ci.code.Architecture;
40 import jdk.vm.ci.code.CompilationResult;
41 import jdk.vm.ci.code.InstalledCode;
42 import jdk.vm.ci.common.JVMCIError;
43 import jdk.vm.ci.inittimer.InitTimer;
44 import jdk.vm.ci.meta.JVMCIMetaAccessContext;
45 import jdk.vm.ci.meta.JavaKind;
46 import jdk.vm.ci.meta.JavaType;
47 import jdk.vm.ci.meta.ResolvedJavaType;
48 import jdk.vm.ci.runtime.JVMCI;
49 import jdk.vm.ci.runtime.JVMCIBackend;
50 import jdk.vm.ci.runtime.JVMCICompiler;
51 import jdk.vm.ci.services.Services;
52 import sun.misc.VM;
53
54 //JaCoCo Exclude
55
56 /**
57 * HotSpot implementation of a JVMCI runtime.
58 *
59 * The initialization of this class is very fragile since it's initialized both through
60 * {@link JVMCI#initialize()} or through calling {@link HotSpotJVMCIRuntime#runtime()} and
61 * {@link HotSpotJVMCIRuntime#runtime()} is also called by {@link JVMCI#initialize()}. So this class
62 * can't have a static initializer and any required initialization must be done as part of
63 * {@link #runtime()}. This allows the initialization to funnel back through
64 * {@link JVMCI#initialize()} without deadlocking.
65 */
66 public final class HotSpotJVMCIRuntime implements HotSpotJVMCIRuntimeProvider, HotSpotProxified {
67
68 @SuppressWarnings("try")
69 static class DelayedInit {
70 private static final HotSpotJVMCIRuntime instance;
71
|