changeset 19106:02bfa2747729

moved dispatch for plugin to be within InvocationPlugin
author Doug Simon <doug.simon@oracle.com>
date Wed, 04 Feb 2015 01:31:23 +0100
parents b4441fd15166
children 036c0b9bd4f5
files graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPlugins.java
diffstat 2 files changed, 15 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Tue Feb 03 21:24:16 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Wed Feb 04 01:31:23 2015 +0100
@@ -777,19 +777,7 @@
                         InvocationPlugin plugin = graphBuilderPlugins.lookupInvocation(targetMethod);
                         if (plugin != null) {
                             int beforeStackSize = frameState.stackSize;
-                            boolean handled;
-                            if (args.length == 0) {
-                                handled = plugin.apply(this);
-                            } else if (args.length == 1) {
-                                handled = plugin.apply(this, args[0]);
-                            } else if (args.length == 2) {
-                                handled = plugin.apply(this, args[0], args[1]);
-                            } else if (args.length == 3) {
-                                handled = plugin.apply(this, args[0], args[1], args[2]);
-                            } else {
-                                throw GraalInternalError.shouldNotReachHere();
-                            }
-                            if (handled) {
+                            if (plugin.apply(this, args)) {
                                 assert beforeStackSize + resultType.getSlotCount() == frameState.stackSize;
                                 return;
                             }
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPlugins.java	Tue Feb 03 21:24:16 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPlugins.java	Wed Feb 04 01:31:23 2015 +0100
@@ -76,6 +76,20 @@
             throw invalidHandler(builder, arg1, arg2, arg3);
         }
 
+        default boolean apply(GraphBuilderContext builder, ValueNode[] args) {
+            if (args.length == 0) {
+                return apply(builder);
+            } else if (args.length == 1) {
+                return apply(builder, args[0]);
+            } else if (args.length == 2) {
+                return apply(builder, args[0], args[1]);
+            } else if (args.length == 3) {
+                return apply(builder, args[0], args[1], args[2]);
+            } else {
+                throw invalidHandler(builder, args);
+            }
+        }
+
         default Error invalidHandler(@SuppressWarnings("unused") GraphBuilderContext builder, ValueNode... args) {
             return new GraalInternalError("Invocation plugin %s does not handle invocations with %d arguments", getClass().getSimpleName(), args.length);
         }