# HG changeset patch # User Doug Simon # Date 1423009883 -3600 # Node ID 02bfa27477290801986e258e114d7830203f2347 # Parent b4441fd15166cd9fb98c6dda375b278f610f2901 moved dispatch for plugin to be within InvocationPlugin diff -r b4441fd15166 -r 02bfa2747729 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- 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; } diff -r b4441fd15166 -r 02bfa2747729 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPlugins.java --- 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); }