Mercurial > hg > graal-compiler
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); }