# HG changeset patch # User Doug Simon # Date 1428664256 -7200 # Node ID dc41766b35e11348281b76fd70b456b6ba3cf7e9 # Parent 7f4339cca3042aed6fd3ddbd1808a1f5c3184747 ensure Graal's GenericInvocationPlugin is used by Truffle FastPE diff -r 7f4339cca304 -r dc41766b35e1 graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Fri Apr 10 12:00:38 2015 +0200 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java Fri Apr 10 13:10:56 2015 +0200 @@ -95,9 +95,14 @@ ResolvedJavaType[] skippedExceptionTypes = getSkippedExceptionTypes(providers.getMetaAccess()); GraphBuilderPhase phase = (GraphBuilderPhase) backend.getSuites().getDefaultGraphBuilderSuite().findPhase(GraphBuilderPhase.class).previous(); - InvocationPlugins invocationPlugins = new InvocationPlugins(phase.getGraphBuilderConfig().getPlugins().getInvocationPlugins()); + Plugins graalPlugins = phase.getGraphBuilderConfig().getPlugins(); + InvocationPlugins invocationPlugins = new InvocationPlugins(graalPlugins.getInvocationPlugins()); Plugins plugins = new Plugins(invocationPlugins); this.config = GraphBuilderConfiguration.getDefault(plugins).withSkippedExceptionTypes(skippedExceptionTypes); + // Since invocationPlugins may include MethodSubstitutionPlugins, we + // need to copy the GenericInvocationPlugins so that @NodeIntrinsics + // and Word methods in method substitutions are handled correctly. + plugins.setGenericInvocationPlugin(graalPlugins.getGenericInvocationPlugin()); this.partialEvaluator = new PartialEvaluator(providers, config, Graal.getRequiredCapability(SnippetReflectionProvider.class));