--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/Replacements.java 2018-12-11 11:13:30.000000000 -0800 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/spi/Replacements.java 2018-12-11 11:13:30.000000000 -0800 @@ -33,6 +33,7 @@ import org.graalvm.compiler.graph.NodeSourcePosition; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderConfiguration; +import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderPlugin; import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin; import org.graalvm.compiler.options.OptionValues; @@ -52,6 +53,11 @@ GraphBuilderConfiguration.Plugins getGraphBuilderPlugins(); /** + * Gets the plugin type that intrinsifies calls to {@code method}. + */ + Class getIntrinsifyingPlugin(ResolvedJavaMethod method); + + /** * Gets the snippet graph derived from a given method. * * @param args arguments to the snippet if available, otherwise {@code null} @@ -75,7 +81,7 @@ /** * Registers a method as snippet. */ - void registerSnippet(ResolvedJavaMethod method, boolean trackNodeSourcePosition); + void registerSnippet(ResolvedJavaMethod method, ResolvedJavaMethod original, Object receiver, boolean trackNodeSourcePosition); /** * Gets a graph that is a substitution for a given method. @@ -138,4 +144,13 @@ * {@link Replacements#registerSnippetTemplateCache(SnippetTemplateCache)}. */ T getSnippetTemplateCache(Class templatesClass); + + /** + * Notifies this method that no further snippets will be registered via {@link #registerSnippet} + * or {@link #registerSnippetTemplateCache}. + * + * This is a hook for an implementation to check for or forbid late registration. + */ + default void closeSnippetRegistration() { + } }