22 */ |
22 */ |
23 |
23 |
24 |
24 |
25 package org.graalvm.compiler.java; |
25 package org.graalvm.compiler.java; |
26 |
26 |
27 import org.graalvm.compiler.core.common.spi.ConstantFieldProvider; |
|
28 import org.graalvm.compiler.nodes.StructuredGraph; |
27 import org.graalvm.compiler.nodes.StructuredGraph; |
29 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration; |
28 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration; |
30 import org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext; |
29 import org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext; |
31 import org.graalvm.compiler.nodes.spi.StampProvider; |
30 import org.graalvm.compiler.nodes.spi.CoreProviders; |
32 import org.graalvm.compiler.phases.BasePhase; |
31 import org.graalvm.compiler.phases.BasePhase; |
33 import org.graalvm.compiler.phases.OptimisticOptimizations; |
32 import org.graalvm.compiler.phases.OptimisticOptimizations; |
34 import org.graalvm.compiler.phases.tiers.HighTierContext; |
33 import org.graalvm.compiler.phases.tiers.HighTierContext; |
35 |
34 |
36 import jdk.vm.ci.meta.ConstantReflectionProvider; |
|
37 import jdk.vm.ci.meta.MetaAccessProvider; |
|
38 import jdk.vm.ci.meta.ResolvedJavaMethod; |
35 import jdk.vm.ci.meta.ResolvedJavaMethod; |
39 |
36 |
40 /** |
37 /** |
41 * Parses the bytecodes of a method and builds the IR graph. |
38 * Parses the bytecodes of a method and builds the IR graph. |
42 */ |
39 */ |
53 return false; |
50 return false; |
54 } |
51 } |
55 |
52 |
56 @Override |
53 @Override |
57 protected void run(StructuredGraph graph, HighTierContext context) { |
54 protected void run(StructuredGraph graph, HighTierContext context) { |
58 new Instance(context.getMetaAccess(), context.getStampProvider(), context.getConstantReflection(), context.getConstantFieldProvider(), graphBuilderConfig, context.getOptimisticOptimizations(), |
55 new Instance(context, graphBuilderConfig, context.getOptimisticOptimizations(), null).run(graph); |
59 null).run(graph); |
|
60 } |
56 } |
61 |
57 |
62 public GraphBuilderConfiguration getGraphBuilderConfig() { |
58 public GraphBuilderConfiguration getGraphBuilderConfig() { |
63 return graphBuilderConfig; |
59 return graphBuilderConfig; |
64 } |
60 } |
65 |
61 |
66 // Fully qualified name is a workaround for JDK-8056066 |
62 // Fully qualified name is a workaround for JDK-8056066 |
67 public static class Instance extends org.graalvm.compiler.phases.Phase { |
63 public static class Instance extends org.graalvm.compiler.phases.Phase { |
68 |
64 |
69 protected final MetaAccessProvider metaAccess; |
65 protected final CoreProviders providers; |
70 protected final StampProvider stampProvider; |
|
71 protected final ConstantReflectionProvider constantReflection; |
|
72 protected final ConstantFieldProvider constantFieldProvider; |
|
73 protected final GraphBuilderConfiguration graphBuilderConfig; |
66 protected final GraphBuilderConfiguration graphBuilderConfig; |
74 protected final OptimisticOptimizations optimisticOpts; |
67 protected final OptimisticOptimizations optimisticOpts; |
75 private final IntrinsicContext initialIntrinsicContext; |
68 private final IntrinsicContext initialIntrinsicContext; |
76 |
69 |
77 public Instance(MetaAccessProvider metaAccess, StampProvider stampProvider, ConstantReflectionProvider constantReflection, ConstantFieldProvider constantFieldProvider, |
70 public Instance(CoreProviders providers, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts, IntrinsicContext initialIntrinsicContext) { |
78 GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts, IntrinsicContext initialIntrinsicContext) { |
|
79 this.graphBuilderConfig = graphBuilderConfig; |
71 this.graphBuilderConfig = graphBuilderConfig; |
80 this.optimisticOpts = optimisticOpts; |
72 this.optimisticOpts = optimisticOpts; |
81 this.metaAccess = metaAccess; |
73 this.providers = providers; |
82 this.stampProvider = stampProvider; |
|
83 this.constantReflection = constantReflection; |
|
84 this.constantFieldProvider = constantFieldProvider; |
|
85 this.initialIntrinsicContext = initialIntrinsicContext; |
74 this.initialIntrinsicContext = initialIntrinsicContext; |
86 } |
75 } |
87 |
76 |
88 @Override |
77 @Override |
89 public boolean checkContract() { |
78 public boolean checkContract() { |