# HG changeset patch # User Thomas Wuerthinger # Date 1423016561 -3600 # Node ID 036c0b9bd4f5d36a18550327505befc35cef89c2 # Parent 4f30f1e7e1e6d73226484e3e4f2d74642b467f1e# Parent 02bfa27477290801986e258e114d7830203f2347 Merge. diff -r 4f30f1e7e1e6 -r 036c0b9bd4f5 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 Wed Feb 04 03:19:37 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Wed Feb 04 03:22:41 2015 +0100 @@ -781,19 +781,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 4f30f1e7e1e6 -r 036c0b9bd4f5 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 Wed Feb 04 03:19:37 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPlugins.java Wed Feb 04 03:22:41 2015 +0100 @@ -85,6 +85,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); }