< 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




 111 import jdk.vm.ci.meta.JavaConstant;
 112 import jdk.vm.ci.meta.JavaKind;
 113 import jdk.vm.ci.meta.MetaAccessProvider;
 114 import jdk.vm.ci.meta.ResolvedJavaMethod;
 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      * @param stampProvider
 128      */
 129     public static Plugins create(GraalHotSpotVMConfig config, HotSpotWordTypes wordTypes, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection,
 130                     SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, StampProvider stampProvider, ReplacementsImpl replacements) {
 131         InvocationPlugins invocationPlugins = new HotSpotInvocationPlugins(config, metaAccess);
 132 
 133         Plugins plugins = new Plugins(invocationPlugins);
 134         NodeIntrinsificationProvider nodeIntrinsificationProvider = new NodeIntrinsificationProvider(metaAccess, snippetReflection, foreignCalls, wordTypes);
 135         HotSpotWordOperationPlugin wordOperationPlugin = new HotSpotWordOperationPlugin(snippetReflection, wordTypes);
 136         HotSpotNodePlugin nodePlugin = new HotSpotNodePlugin(wordOperationPlugin);
 137 
 138         plugins.appendTypePlugin(nodePlugin);
 139         plugins.appendNodePlugin(nodePlugin);
 140         if (GeneratePIC.getValue()) {
 141             // AOT needs to filter out bad invokes
 142             plugins.prependNodePlugin(new NodePlugin() {
 143                 @Override
 144                 public boolean handleInvoke(GraphBuilderContext b, ResolvedJavaMethod method, ValueNode[] args) {
 145                     if (b.parsingIntrinsic()) {
 146                         return false;
 147                     }
 148                     // check if the holder has a valid fingerprint
 149                     if (FingerprintUtil.getFingerprint((HotSpotResolvedObjectType) method.getDeclaringClass()) == 0) {
 150                         // Deopt otherwise
 151                         b.append(new DeoptimizeNode(InvalidateRecompile, Unresolved));




 111 import jdk.vm.ci.meta.JavaConstant;
 112 import jdk.vm.ci.meta.JavaKind;
 113 import jdk.vm.ci.meta.MetaAccessProvider;
 114 import jdk.vm.ci.meta.ResolvedJavaMethod;
 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      * @param stampProvider
 128      */
 129     public static Plugins create(GraalHotSpotVMConfig config, HotSpotWordTypes wordTypes, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection,
 130                     SnippetReflectionProvider snippetReflection, ForeignCallsProvider foreignCalls, StampProvider stampProvider, ReplacementsImpl replacements) {
 131         InvocationPlugins invocationPlugins = new HotSpotInvocationPlugins(config);
 132 
 133         Plugins plugins = new Plugins(invocationPlugins);
 134         NodeIntrinsificationProvider nodeIntrinsificationProvider = new NodeIntrinsificationProvider(metaAccess, snippetReflection, foreignCalls, wordTypes);
 135         HotSpotWordOperationPlugin wordOperationPlugin = new HotSpotWordOperationPlugin(snippetReflection, wordTypes);
 136         HotSpotNodePlugin nodePlugin = new HotSpotNodePlugin(wordOperationPlugin);
 137 
 138         plugins.appendTypePlugin(nodePlugin);
 139         plugins.appendNodePlugin(nodePlugin);
 140         if (GeneratePIC.getValue()) {
 141             // AOT needs to filter out bad invokes
 142             plugins.prependNodePlugin(new NodePlugin() {
 143                 @Override
 144                 public boolean handleInvoke(GraphBuilderContext b, ResolvedJavaMethod method, ValueNode[] args) {
 145                     if (b.parsingIntrinsic()) {
 146                         return false;
 147                     }
 148                     // check if the holder has a valid fingerprint
 149                     if (FingerprintUtil.getFingerprint((HotSpotResolvedObjectType) method.getDeclaringClass()) == 0) {
 150                         // Deopt otherwise
 151                         b.append(new DeoptimizeNode(InvalidateRecompile, Unresolved));


< prev index next >