@Override public boolean hasSubstitution(ResolvedJavaMethod method, int invokeBci) { InvocationPlugin plugin = graphBuilderPlugins.getInvocationPlugins().lookupInvocation(method); return plugin != null && (!plugin.inlineOnly() || invokeBci >= 0); }
protected void notifyBeforeInline(ResolvedJavaMethod inlinedMethod) { for (InlineInvokePlugin plugin : graphBuilderConfig.getPlugins().getInlineInvokePlugins()) { plugin.notifyBeforeInline(inlinedMethod); } }
private boolean tryNodePluginForInvocation(ValueNode[] args, ResolvedJavaMethod targetMethod) { for (NodePlugin plugin : graphBuilderConfig.getPlugins().getNodePlugins()) { if (plugin.handleInvoke(this, targetMethod, args)) { return true; } } return false; }
Plugin_SubstrateIntrinsics_runtimeCall__2(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(java.lang.Object.class, false); } }
private static GraphBuilderConfiguration buildLambdaParserConfig() { Plugins plugins = new Plugins(new InvocationPlugins()); plugins.setClassInitializationPlugin(new NoClassInitializationPlugin()); return GraphBuilderConfiguration.getDefault(plugins).withEagerResolving(true); }
@Override public boolean execute(GraphBuilderContext b, ResolvedJavaMethod targetMethod, InvocationPlugin.Receiver receiver, ValueNode[] argsIncludingReceiver) { ResolvedJavaMethod subst = getSubstitute(b.getMetaAccess()); return b.intrinsify(bytecodeProvider, targetMethod, subst, receiver, argsIncludingReceiver); }
protected void notifyAfterInline(ResolvedJavaMethod inlinedMethod) { for (InlineInvokePlugin plugin : graphBuilderConfig.getPlugins().getInlineInvokePlugins()) { plugin.notifyAfterInline(inlinedMethod); } }
@Override public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode object) { b.genCheckcastDynamic(object, receiver.get()); return true; }
protected void register(InvocationPlugin plugin, boolean isOptional, boolean allowOverwrite, Type declaringClass, String name, Type... argumentTypes) { boolean isStatic = argumentTypes.length == 0 || argumentTypes[0] != InvocationPlugin.Receiver.class; if (!isStatic) { argumentTypes[0] = declaringClass; } Binding binding = put(plugin, isStatic, allowOverwrite, declaringClass, name, argumentTypes); assert Checks.check(this, declaringClass, binding); assert Checks.checkResolvable(isOptional, declaringClass, binding); }
public StampPair getOverridingStamp(GraphBuilderTool b, JavaType type, boolean nonNull) { for (TypePlugin plugin : getTypePlugins()) { StampPair stamp = plugin.interceptType(b, type, nonNull); if (stamp != null) { return stamp; } } return null; } }
Plugin_AllocationSnippets_callSlowNewPinnedInstance(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(java.lang.Object.class, false); } }
Plugin_NewObjectSnippets_newArrayOrNull(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(java.lang.Object.class, false); } }
Plugin_NewObjectSnippets_newMultiArray(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(java.lang.Object.class, true); } }
Plugin_HotSpotReplacementsUtil_identityHashCode(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(int.class, false); } }
Plugin_HotSpotReplacementsUtil_loadKlassFromObjectIntrinsic(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(org.graalvm.compiler.hotspot.word.KlassPointer.class, false); } }
Plugin_HotSpotReplacementsUtil_registerAsWord(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(org.graalvm.compiler.word.Word.class, false); } }
Plugin_HotSpotReplacementsUtil_verifyOopStub(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(java.lang.Object.class, false); } }
Plugin_ProbabilisticProfileSnippets_methodInvocationEvent(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(void.class, false); } }
Plugin_AESCryptSubstitutions_decryptBlockWithOriginalKeyStub(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(void.class, false); } }
Plugin_AESCryptSubstitutions_encryptBlockStub(NodeIntrinsicPluginFactory.InjectionProvider injection) { this.injectedForeignCallsProvider = injection.getInjectedArgument(org.graalvm.compiler.core.common.spi.ForeignCallsProvider.class); this.snippetReflection = injection.getInjectedArgument(org.graalvm.compiler.api.replacements.SnippetReflectionProvider.class); this.stamp = injection.getInjectedStamp(void.class, false); } }