src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/SimplifyingGraphDecoder.java
equal
deleted
inserted
replaced
42 import org.graalvm.compiler.nodes.extended.GuardingNode; |
42 import org.graalvm.compiler.nodes.extended.GuardingNode; |
43 import org.graalvm.compiler.nodes.extended.IntegerSwitchNode; |
43 import org.graalvm.compiler.nodes.extended.IntegerSwitchNode; |
44 import org.graalvm.compiler.nodes.java.ArrayLengthNode; |
44 import org.graalvm.compiler.nodes.java.ArrayLengthNode; |
45 import org.graalvm.compiler.nodes.java.LoadFieldNode; |
45 import org.graalvm.compiler.nodes.java.LoadFieldNode; |
46 import org.graalvm.compiler.nodes.java.LoadIndexedNode; |
46 import org.graalvm.compiler.nodes.java.LoadIndexedNode; |
47 import org.graalvm.compiler.nodes.spi.StampProvider; |
47 import org.graalvm.compiler.nodes.spi.CoreProviders; |
48 import org.graalvm.compiler.nodes.util.GraphUtil; |
48 import org.graalvm.compiler.nodes.util.GraphUtil; |
49 import org.graalvm.compiler.options.OptionValues; |
49 import org.graalvm.compiler.options.OptionValues; |
50 |
50 |
51 import jdk.vm.ci.code.Architecture; |
51 import jdk.vm.ci.code.Architecture; |
52 import jdk.vm.ci.meta.Assumptions; |
52 import jdk.vm.ci.meta.Assumptions; |
59 * during decoding. Additionally, {@link IfNode branches} and {@link IntegerSwitchNode switches} |
59 * during decoding. Additionally, {@link IfNode branches} and {@link IntegerSwitchNode switches} |
60 * with constant conditions are simplified. |
60 * with constant conditions are simplified. |
61 */ |
61 */ |
62 public class SimplifyingGraphDecoder extends GraphDecoder { |
62 public class SimplifyingGraphDecoder extends GraphDecoder { |
63 |
63 |
64 protected final MetaAccessProvider metaAccess; |
64 protected final CoreProviders providers; |
65 protected final ConstantReflectionProvider constantReflection; |
|
66 protected final ConstantFieldProvider constantFieldProvider; |
|
67 protected final StampProvider stampProvider; |
|
68 protected final boolean canonicalizeReads; |
65 protected final boolean canonicalizeReads; |
69 protected final CanonicalizerTool canonicalizerTool; |
66 protected final CanonicalizerTool canonicalizerTool; |
70 |
67 |
71 protected class PECanonicalizerTool implements CanonicalizerTool { |
68 protected class PECanonicalizerTool implements CanonicalizerTool { |
72 |
69 |
83 return options; |
80 return options; |
84 } |
81 } |
85 |
82 |
86 @Override |
83 @Override |
87 public MetaAccessProvider getMetaAccess() { |
84 public MetaAccessProvider getMetaAccess() { |
88 return metaAccess; |
85 return providers.getMetaAccess(); |
89 } |
86 } |
90 |
87 |
91 @Override |
88 @Override |
92 public ConstantReflectionProvider getConstantReflection() { |
89 public ConstantReflectionProvider getConstantReflection() { |
93 return constantReflection; |
90 return providers.getConstantReflection(); |
94 } |
91 } |
95 |
92 |
96 @Override |
93 @Override |
97 public ConstantFieldProvider getConstantFieldProvider() { |
94 public ConstantFieldProvider getConstantFieldProvider() { |
98 return constantFieldProvider; |
95 return providers.getConstantFieldProvider(); |
99 } |
96 } |
100 |
97 |
101 @Override |
98 @Override |
102 public boolean canonicalizeReads() { |
99 public boolean canonicalizeReads() { |
103 return canonicalizeReads; |
100 return canonicalizeReads; |
133 public Node canonical(CanonicalizerTool tool) { |
130 public Node canonical(CanonicalizerTool tool) { |
134 return null; |
131 return null; |
135 } |
132 } |
136 } |
133 } |
137 |
134 |
138 public SimplifyingGraphDecoder(Architecture architecture, StructuredGraph graph, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, |
135 public SimplifyingGraphDecoder(Architecture architecture, StructuredGraph graph, CoreProviders providers, boolean canonicalizeReads) { |
139 ConstantFieldProvider constantFieldProvider, StampProvider stampProvider, |
|
140 boolean canonicalizeReads) { |
|
141 super(architecture, graph); |
136 super(architecture, graph); |
142 this.metaAccess = metaAccess; |
137 this.providers = providers; |
143 this.constantReflection = constantReflection; |
|
144 this.constantFieldProvider = constantFieldProvider; |
|
145 this.stampProvider = stampProvider; |
|
146 this.canonicalizeReads = canonicalizeReads; |
138 this.canonicalizeReads = canonicalizeReads; |
147 this.canonicalizerTool = new PECanonicalizerTool(graph.getAssumptions(), graph.getOptions()); |
139 this.canonicalizerTool = new PECanonicalizerTool(graph.getAssumptions(), graph.getOptions()); |
148 } |
140 } |
149 |
141 |
150 @Override |
142 @Override |