# HG changeset patch # User Doug Simon # Date 1424090490 -3600 # Node ID 07f2edacfd3f559b66633bab9d458873b9760c82 # Parent 3917abffef8207948781de2b8dc4520597e5e675 copy all plugins when copying a GraphBuilderConfiguration diff -r 3917abffef82 -r 07f2edacfd3f graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Mon Feb 16 12:35:57 2015 +0100 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Mon Feb 16 13:41:30 2015 +0100 @@ -800,8 +800,10 @@ protected PhaseSuite getCustomGraphBuilderSuite(GraphBuilderConfiguration gbConf) { PhaseSuite suite = getDefaultGraphBuilderSuite().copy(); ListIterator> iterator = suite.findPhase(GraphBuilderPhase.class); + GraphBuilderPhase graphBuilderPhase = (GraphBuilderPhase) iterator.previous(); + GraphBuilderConfiguration gbConfCopy = gbConf.copy().copyPluginsFrom(graphBuilderPhase.getGraphBuilderConfig()); iterator.remove(); - iterator.add(new GraphBuilderPhase(gbConf)); + iterator.add(new GraphBuilderPhase(gbConfCopy)); return suite; } diff -r 3917abffef82 -r 07f2edacfd3f graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java Mon Feb 16 12:35:57 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderConfiguration.java Mon Feb 16 13:41:30 2015 +0100 @@ -80,7 +80,7 @@ public GraphBuilderConfiguration copy() { GraphBuilderConfiguration result = new GraphBuilderConfiguration(eagerResolving, omitAllExceptionEdges, debugInfoMode, skippedExceptionTypes, doLivenessAnalysis); - result.loadFieldPlugin = loadFieldPlugin; + result.copyPluginsFrom(this); return result; } @@ -185,4 +185,13 @@ public void setLoopExplosionPlugin(LoopExplosionPlugin loopExplosionPlugin) { this.loopExplosionPlugin = loopExplosionPlugin; } + + public GraphBuilderConfiguration copyPluginsFrom(GraphBuilderConfiguration other) { + this.invocationPlugins.updateFrom(other.getInvocationPlugins()); + this.parameterPlugin = other.parameterPlugin; + this.loadFieldPlugin = other.loadFieldPlugin; + this.inlineInvokePlugin = other.inlineInvokePlugin; + this.loopExplosionPlugin = other.loopExplosionPlugin; + return this; + } } diff -r 3917abffef82 -r 07f2edacfd3f graal/com.oracle.graal.java/src/com/oracle/graal/java/InvocationPlugins.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/InvocationPlugins.java Mon Feb 16 12:35:57 2015 +0100 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/InvocationPlugins.java Mon Feb 16 13:41:30 2015 +0100 @@ -181,6 +181,13 @@ return old; } + /** + * Adds all the plugins from {@code other} to this object. + */ + public void updateFrom(InvocationPlugins other) { + this.plugins.putAll(other.plugins); + } + @Override public String toString() { return plugins.keySet().stream().map(m -> m.format("%H.%n(%p)")).collect(Collectors.joining(", "));