src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/SimplifyingGraphDecoder.java
changeset 54328 37648a9c4a6a
parent 52910 583fd71c47d6
child 58299 6df94ce3ab2f
equal deleted inserted replaced
54327:a4d19817609c 54328:37648a9c4a6a
    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