27 import static org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext.CompilationContext.INLINE_AFTER_PARSING;
28
29 import jdk.internal.vm.compiler.collections.EconomicMap;
30 import org.graalvm.compiler.bytecode.BytecodeProvider;
31 import org.graalvm.compiler.debug.DebugContext;
32 import org.graalvm.compiler.graph.SourceLanguagePositionProvider;
33 import org.graalvm.compiler.java.GraphBuilderPhase;
34 import org.graalvm.compiler.nodes.EncodedGraph;
35 import org.graalvm.compiler.nodes.GraphEncoder;
36 import org.graalvm.compiler.nodes.StructuredGraph;
37 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
38 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
39 import org.graalvm.compiler.nodes.graphbuilderconf.InlineInvokePlugin;
40 import org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext;
41 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
42 import org.graalvm.compiler.nodes.graphbuilderconf.LoopExplosionPlugin;
43 import org.graalvm.compiler.nodes.graphbuilderconf.NodePlugin;
44 import org.graalvm.compiler.nodes.graphbuilderconf.ParameterPlugin;
45 import org.graalvm.compiler.phases.OptimisticOptimizations;
46 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
47 import org.graalvm.compiler.phases.common.ConvertDeoptimizeToGuardPhase;
48 import org.graalvm.compiler.phases.tiers.PhaseContext;
49 import org.graalvm.compiler.phases.util.Providers;
50
51 import jdk.vm.ci.code.Architecture;
52 import jdk.vm.ci.meta.ResolvedJavaMethod;
53
54 /**
55 * A graph decoder that provides all necessary encoded graphs on-the-fly (by parsing the methods and
56 * encoding the graphs).
57 */
58 public class CachingPEGraphDecoder extends PEGraphDecoder {
59
60 protected final Providers providers;
61 protected final GraphBuilderConfiguration graphBuilderConfig;
62 protected final OptimisticOptimizations optimisticOpts;
63 private final AllowAssumptions allowAssumptions;
64 private final EconomicMap<ResolvedJavaMethod, EncodedGraph> graphCache;
65
66 public CachingPEGraphDecoder(Architecture architecture, StructuredGraph graph, Providers providers, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts,
67 AllowAssumptions allowAssumptions, LoopExplosionPlugin loopExplosionPlugin, InvocationPlugins invocationPlugins, InlineInvokePlugin[] inlineInvokePlugins,
|
27 import static org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext.CompilationContext.INLINE_AFTER_PARSING;
28
29 import jdk.internal.vm.compiler.collections.EconomicMap;
30 import org.graalvm.compiler.bytecode.BytecodeProvider;
31 import org.graalvm.compiler.debug.DebugContext;
32 import org.graalvm.compiler.graph.SourceLanguagePositionProvider;
33 import org.graalvm.compiler.java.GraphBuilderPhase;
34 import org.graalvm.compiler.nodes.EncodedGraph;
35 import org.graalvm.compiler.nodes.GraphEncoder;
36 import org.graalvm.compiler.nodes.StructuredGraph;
37 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions;
38 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration;
39 import org.graalvm.compiler.nodes.graphbuilderconf.InlineInvokePlugin;
40 import org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext;
41 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
42 import org.graalvm.compiler.nodes.graphbuilderconf.LoopExplosionPlugin;
43 import org.graalvm.compiler.nodes.graphbuilderconf.NodePlugin;
44 import org.graalvm.compiler.nodes.graphbuilderconf.ParameterPlugin;
45 import org.graalvm.compiler.phases.OptimisticOptimizations;
46 import org.graalvm.compiler.phases.common.CanonicalizerPhase;
47 import org.graalvm.compiler.loop.phases.ConvertDeoptimizeToGuardPhase;
48 import org.graalvm.compiler.phases.tiers.PhaseContext;
49 import org.graalvm.compiler.phases.util.Providers;
50
51 import jdk.vm.ci.code.Architecture;
52 import jdk.vm.ci.meta.ResolvedJavaMethod;
53
54 /**
55 * A graph decoder that provides all necessary encoded graphs on-the-fly (by parsing the methods and
56 * encoding the graphs).
57 */
58 public class CachingPEGraphDecoder extends PEGraphDecoder {
59
60 protected final Providers providers;
61 protected final GraphBuilderConfiguration graphBuilderConfig;
62 protected final OptimisticOptimizations optimisticOpts;
63 private final AllowAssumptions allowAssumptions;
64 private final EconomicMap<ResolvedJavaMethod, EncodedGraph> graphCache;
65
66 public CachingPEGraphDecoder(Architecture architecture, StructuredGraph graph, Providers providers, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts,
67 AllowAssumptions allowAssumptions, LoopExplosionPlugin loopExplosionPlugin, InvocationPlugins invocationPlugins, InlineInvokePlugin[] inlineInvokePlugins,
|