Mercurial > hg > truffle
changeset 20168:f0f725496f2a
account for InvocationPlugins that don't return true when using them for late inlining
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Sun, 05 Apr 2015 09:45:58 +0200 |
parents | 6b119b6362de |
children | 65d29fa81397 |
files | graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java |
diffstat | 2 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java Sat Apr 04 22:59:19 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/IntrinsicGraphBuilder.java Sun Apr 05 09:45:58 2015 +0200 @@ -200,9 +200,11 @@ public StructuredGraph buildGraph(InvocationPlugin plugin) { Receiver receiver = method.isStatic() ? null : this; - InvocationPlugin.execute(this, method, plugin, receiver, arguments); - assert (returnValue != null) == (method.getSignature().getReturnKind() != Kind.Void); - append(new ReturnNode(returnValue)); - return graph; + if (InvocationPlugin.execute(this, method, plugin, receiver, arguments)) { + assert (returnValue != null) == (method.getSignature().getReturnKind() != Kind.Void) : method; + append(new ReturnNode(returnValue)); + return graph; + } + return null; } }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Sat Apr 04 22:59:19 2015 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Sun Apr 05 09:45:58 2015 +0200 @@ -340,7 +340,10 @@ if (!fromBytecodeOnly) { InvocationPlugin plugin = graphBuilderPlugins.getInvocationPlugins().lookupInvocation(original); if (plugin != null) { - return new IntrinsicGraphBuilder(providers, snippetReflection, original).buildGraph(plugin); + StructuredGraph graph = new IntrinsicGraphBuilder(providers, snippetReflection, original).buildGraph(plugin); + if (graph != null) { + return graph; + } } } ClassReplacements cr = getClassReplacements(original.getDeclaringClass().getName());