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());