< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java

Print this page
rev 52509 : [mq]: graal


  74 import org.graalvm.compiler.nodes.LogicNode;
  75 import org.graalvm.compiler.nodes.NamedLocationIdentity;
  76 import org.graalvm.compiler.nodes.NodeView;
  77 import org.graalvm.compiler.nodes.ValueNode;
  78 import org.graalvm.compiler.nodes.calc.AddNode;
  79 import org.graalvm.compiler.nodes.calc.IntegerConvertNode;
  80 import org.graalvm.compiler.nodes.calc.LeftShiftNode;
  81 import org.graalvm.compiler.nodes.graphbuilderconf.ForeignCallPlugin;
  82 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
  83 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;
  84 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
  85 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin.Receiver;
  86 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
  87 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration;
  88 import org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory;
  89 import org.graalvm.compiler.nodes.java.InstanceOfDynamicNode;
  90 import org.graalvm.compiler.nodes.memory.HeapAccess.BarrierType;
  91 import org.graalvm.compiler.nodes.memory.ReadNode;
  92 import org.graalvm.compiler.nodes.memory.address.AddressNode;
  93 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode;
  94 import org.graalvm.compiler.nodes.spi.LoweringProvider;
  95 import org.graalvm.compiler.nodes.spi.StampProvider;
  96 import org.graalvm.compiler.nodes.util.GraphUtil;
  97 import org.graalvm.compiler.options.OptionValues;
  98 import org.graalvm.compiler.phases.tiers.CompilerConfiguration;
  99 import org.graalvm.compiler.replacements.InlineDuringParsingPlugin;
 100 import org.graalvm.compiler.replacements.MethodHandlePlugin;
 101 import org.graalvm.compiler.replacements.NodeIntrinsificationProvider;
 102 import org.graalvm.compiler.replacements.ReplacementsImpl;
 103 import org.graalvm.compiler.replacements.StandardGraphBuilderPlugins;
 104 import org.graalvm.compiler.serviceprovider.GraalServices;
 105 import org.graalvm.compiler.word.WordOperationPlugin;
 106 import org.graalvm.compiler.word.WordTypes;
 107 import jdk.internal.vm.compiler.word.LocationIdentity;
 108 
 109 import jdk.vm.ci.code.CodeUtil;
 110 import jdk.vm.ci.meta.ConstantReflectionProvider;
 111 import jdk.vm.ci.meta.DeoptimizationAction;
 112 import jdk.vm.ci.meta.DeoptimizationReason;
 113 import jdk.vm.ci.meta.JavaKind;
 114 import jdk.vm.ci.meta.MetaAccessProvider;
 115 import jdk.vm.ci.meta.ResolvedJavaMethod;
 116 import sun.misc.Unsafe;
 117 
 118 /**
 119  * Defines the {@link Plugins} used when running on HotSpot.
 120  */
 121 public class HotSpotGraphBuilderPlugins {
 122 
 123     /**
 124      * Creates a {@link Plugins} object that should be used when running on HotSpot.
 125      *
 126      * @param constantReflection
 127      * @param snippetReflection
 128      * @param foreignCalls
 129      * @param stampProvider
 130      */
 131     public static Plugins create(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, HotSpotWordTypes wordTypes, MetaAccessProvider metaAccess,
 132                     ConstantReflectionProvider constantReflection, SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, LoweringProvider lowerer,
 133                     StampProvider stampProvider, ReplacementsImpl replacements) {
 134         InvocationPlugins invocationPlugins = new HotSpotInvocationPlugins(config, compilerConfiguration);
 135 
 136         Plugins plugins = new Plugins(invocationPlugins);
 137         NodeIntrinsificationProvider nodeIntrinsificationProvider = new NodeIntrinsificationProvider(metaAccess, snippetReflection, foreignCalls, lowerer, wordTypes);
 138         HotSpotWordOperationPlugin wordOperationPlugin = new HotSpotWordOperationPlugin(snippetReflection, wordTypes);
 139         HotSpotNodePlugin nodePlugin = new HotSpotNodePlugin(wordOperationPlugin);
 140 
 141         plugins.appendTypePlugin(nodePlugin);
 142         plugins.appendNodePlugin(nodePlugin);
 143         OptionValues options = replacements.getOptions();
 144         if (!GeneratePIC.getValue(options)) {
 145             plugins.appendNodePlugin(new MethodHandlePlugin(constantReflection.getMethodHandleAccess(), true));
 146         }
 147         plugins.appendInlineInvokePlugin(replacements);
 148         if (InlineDuringParsing.getValue(options)) {
 149             plugins.appendInlineInvokePlugin(new InlineDuringParsingPlugin());
 150         }
 151 
 152         if (GeneratePIC.getValue(options)) {
 153             plugins.setClassInitializationPlugin(new HotSpotClassInitializationPlugin());
 154             if (TieredAOT.getValue(options)) {
 155                 plugins.setProfilingPlugin(new HotSpotAOTProfilingPlugin());
 156             }
 157         }




  74 import org.graalvm.compiler.nodes.LogicNode;
  75 import org.graalvm.compiler.nodes.NamedLocationIdentity;
  76 import org.graalvm.compiler.nodes.NodeView;
  77 import org.graalvm.compiler.nodes.ValueNode;
  78 import org.graalvm.compiler.nodes.calc.AddNode;
  79 import org.graalvm.compiler.nodes.calc.IntegerConvertNode;
  80 import org.graalvm.compiler.nodes.calc.LeftShiftNode;
  81 import org.graalvm.compiler.nodes.graphbuilderconf.ForeignCallPlugin;
  82 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration.Plugins;
  83 import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;
  84 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;
  85 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin.Receiver;
  86 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;
  87 import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins.Registration;
  88 import org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory;
  89 import org.graalvm.compiler.nodes.java.InstanceOfDynamicNode;
  90 import org.graalvm.compiler.nodes.memory.HeapAccess.BarrierType;
  91 import org.graalvm.compiler.nodes.memory.ReadNode;
  92 import org.graalvm.compiler.nodes.memory.address.AddressNode;
  93 import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode;


  94 import org.graalvm.compiler.nodes.util.GraphUtil;
  95 import org.graalvm.compiler.options.OptionValues;
  96 import org.graalvm.compiler.phases.tiers.CompilerConfiguration;
  97 import org.graalvm.compiler.replacements.InlineDuringParsingPlugin;
  98 import org.graalvm.compiler.replacements.MethodHandlePlugin;
  99 import org.graalvm.compiler.replacements.NodeIntrinsificationProvider;
 100 import org.graalvm.compiler.replacements.ReplacementsImpl;
 101 import org.graalvm.compiler.replacements.StandardGraphBuilderPlugins;
 102 import org.graalvm.compiler.serviceprovider.GraalServices;
 103 import org.graalvm.compiler.word.WordOperationPlugin;
 104 import org.graalvm.compiler.word.WordTypes;
 105 import jdk.internal.vm.compiler.word.LocationIdentity;
 106 
 107 import jdk.vm.ci.code.CodeUtil;
 108 import jdk.vm.ci.meta.ConstantReflectionProvider;
 109 import jdk.vm.ci.meta.DeoptimizationAction;
 110 import jdk.vm.ci.meta.DeoptimizationReason;
 111 import jdk.vm.ci.meta.JavaKind;
 112 import jdk.vm.ci.meta.MetaAccessProvider;
 113 import jdk.vm.ci.meta.ResolvedJavaMethod;
 114 import sun.misc.Unsafe;
 115 
 116 /**
 117  * Defines the {@link Plugins} used when running on HotSpot.
 118  */
 119 public class HotSpotGraphBuilderPlugins {
 120 
 121     /**
 122      * Creates a {@link Plugins} object that should be used when running on HotSpot.
 123      *
 124      * @param constantReflection
 125      * @param snippetReflection
 126      * @param foreignCalls

 127      */
 128     public static Plugins create(CompilerConfiguration compilerConfiguration, GraalHotSpotVMConfig config, HotSpotWordTypes wordTypes, MetaAccessProvider metaAccess,
 129                     ConstantReflectionProvider constantReflection, SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, ReplacementsImpl replacements) {

 130         InvocationPlugins invocationPlugins = new HotSpotInvocationPlugins(config, compilerConfiguration);
 131 
 132         Plugins plugins = new Plugins(invocationPlugins);
 133         NodeIntrinsificationProvider nodeIntrinsificationProvider = new NodeIntrinsificationProvider(metaAccess, snippetReflection, foreignCalls, wordTypes);
 134         HotSpotWordOperationPlugin wordOperationPlugin = new HotSpotWordOperationPlugin(snippetReflection, wordTypes);
 135         HotSpotNodePlugin nodePlugin = new HotSpotNodePlugin(wordOperationPlugin);
 136 
 137         plugins.appendTypePlugin(nodePlugin);
 138         plugins.appendNodePlugin(nodePlugin);
 139         OptionValues options = replacements.getOptions();
 140         if (!GeneratePIC.getValue(options)) {
 141             plugins.appendNodePlugin(new MethodHandlePlugin(constantReflection.getMethodHandleAccess(), true));
 142         }
 143         plugins.appendInlineInvokePlugin(replacements);
 144         if (InlineDuringParsing.getValue(options)) {
 145             plugins.appendInlineInvokePlugin(new InlineDuringParsingPlugin());
 146         }
 147 
 148         if (GeneratePIC.getValue(options)) {
 149             plugins.setClassInitializationPlugin(new HotSpotClassInitializationPlugin());
 150             if (TieredAOT.getValue(options)) {
 151                 plugins.setProfilingPlugin(new HotSpotAOTProfilingPlugin());
 152             }
 153         }


< prev index next >