changeset 20884:dc41766b35e1

ensure Graal's GenericInvocationPlugin is used by Truffle FastPE
author Doug Simon <doug.simon@oracle.com>
date Fri, 10 Apr 2015 13:10:56 +0200
parents 7f4339cca304
children 0e647427eee4 c4691265275a 2402d5534773
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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));