Mercurial > hg > graal-compiler
changeset 19417:042f0a8ebce2
completed integration of AnnotatedInvocationPlugin
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 16 Feb 2015 21:10:14 +0100 |
parents | d4f37673849d |
children | 7d3140f2de2e |
files | graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java |
diffstat | 2 files changed, 34 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java Mon Feb 16 21:05:31 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java Mon Feb 16 21:10:14 2015 +0100 @@ -26,6 +26,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.java.GraphBuilderPlugin.AnnotatedInvocationPlugin; import com.oracle.graal.java.GraphBuilderPlugin.InlineInvokePlugin; import com.oracle.graal.java.GraphBuilderPlugin.LoadFieldPlugin; import com.oracle.graal.java.GraphBuilderPlugin.LoopExplosionPlugin; @@ -44,6 +45,7 @@ private LoadFieldPlugin loadFieldPlugin; private ParameterPlugin parameterPlugin; private InlineInvokePlugin inlineInvokePlugin; + private AnnotatedInvocationPlugin annotatedInvocationPlugin; private LoopExplosionPlugin loopExplosionPlugin; public static enum DebugInfoMode { @@ -105,12 +107,20 @@ return invocationPlugins; } + public AnnotatedInvocationPlugin getAnnotatedInvocationPlugin() { + return annotatedInvocationPlugin; + } + + public void setAnnotatedInvocationPlugin(AnnotatedInvocationPlugin plugin) { + this.annotatedInvocationPlugin = plugin; + } + public LoadFieldPlugin getLoadFieldPlugin() { return loadFieldPlugin; } - public void setLoadFieldPlugin(LoadFieldPlugin loadFieldPlugin) { - this.loadFieldPlugin = loadFieldPlugin; + public void setLoadFieldPlugin(LoadFieldPlugin plugin) { + this.loadFieldPlugin = plugin; } public ResolvedJavaType[] getSkippedExceptionTypes() { @@ -166,24 +176,24 @@ return parameterPlugin; } - public void setParameterPlugin(ParameterPlugin parameterPlugin) { - this.parameterPlugin = parameterPlugin; + public void setParameterPlugin(ParameterPlugin plugin) { + this.parameterPlugin = plugin; } public InlineInvokePlugin getInlineInvokePlugin() { return inlineInvokePlugin; } - public void setInlineInvokePlugin(InlineInvokePlugin inlineInvokePlugin) { - this.inlineInvokePlugin = inlineInvokePlugin; + public void setInlineInvokePlugin(InlineInvokePlugin plugin) { + this.inlineInvokePlugin = plugin; } public LoopExplosionPlugin getLoopExplosionPlugin() { return loopExplosionPlugin; } - public void setLoopExplosionPlugin(LoopExplosionPlugin loopExplosionPlugin) { - this.loopExplosionPlugin = loopExplosionPlugin; + public void setLoopExplosionPlugin(LoopExplosionPlugin plugin) { + this.loopExplosionPlugin = plugin; } public GraphBuilderConfiguration copyPluginsFrom(GraphBuilderConfiguration other) { @@ -192,6 +202,7 @@ this.loadFieldPlugin = other.loadFieldPlugin; this.inlineInvokePlugin = other.inlineInvokePlugin; this.loopExplosionPlugin = other.loopExplosionPlugin; + this.annotatedInvocationPlugin = other.annotatedInvocationPlugin; return this; } }
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Feb 16 21:05:31 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Feb 16 21:10:14 2015 +0100 @@ -47,6 +47,7 @@ import com.oracle.graal.java.BciBlockMapping.BciBlock; import com.oracle.graal.java.BciBlockMapping.ExceptionDispatchBlock; import com.oracle.graal.java.BciBlockMapping.LocalLiveness; +import com.oracle.graal.java.GraphBuilderPlugin.AnnotatedInvocationPlugin; import com.oracle.graal.java.GraphBuilderPlugin.InlineInvokePlugin; import com.oracle.graal.java.GraphBuilderPlugin.InvocationPlugin; import com.oracle.graal.java.GraphBuilderPlugin.LoopExplosionPlugin; @@ -860,11 +861,15 @@ } if (tryInvocationPlugin(args, targetMethod, resultType)) { - if (TraceInlineDuringParsing.getValue()) { - for (int i = 0; i < this.currentDepth; ++i) { - TTY.print(' '); - } - TTY.println("Used invocation plugin for " + targetMethod); + if (GraalOptions.TraceInlineDuringParsing.getValue()) { + TTY.println(format("%sUsed invocation plugin for %s", nSpaces(currentDepth), targetMethod)); + } + return; + } + + if (tryAnnotatedInvocationPlugin(args, targetMethod)) { + if (GraalOptions.TraceInlineDuringParsing.getValue()) { + TTY.println(format("%sUsed annotated invocation plugin for %s", nSpaces(currentDepth), targetMethod)); } return; } @@ -905,6 +910,11 @@ return false; } + private boolean tryAnnotatedInvocationPlugin(ValueNode[] args, ResolvedJavaMethod targetMethod) { + AnnotatedInvocationPlugin plugin = graphBuilderConfig.getAnnotatedInvocationPlugin(); + return plugin != null && plugin.apply(this, targetMethod, args); + } + private boolean containsNullCheckOf(NodeIterable<Node> nodes, Node value) { for (Node n : nodes) { if (n instanceof GuardingPiNode) {