< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.nodes/src/org/graalvm/compiler/nodes/graphbuilderconf/GraphBuilderConfiguration.java

Print this page

        

*** 23,68 **** package org.graalvm.compiler.nodes.graphbuilderconf; import java.util.Arrays; import org.graalvm.compiler.core.common.type.StampPair; import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaType; ! public class GraphBuilderConfiguration { public static class Plugins { private final InvocationPlugins invocationPlugins; private NodePlugin[] nodePlugins; private ParameterPlugin[] parameterPlugins; private TypePlugin[] typePlugins; private InlineInvokePlugin[] inlineInvokePlugins; - private LoopExplosionPlugin loopExplosionPlugin; private ClassInitializationPlugin classInitializationPlugin; private InvokeDynamicPlugin invokeDynamicPlugin; private ProfilingPlugin profilingPlugin; /** * Creates a copy of a given set of plugins. The {@link InvocationPlugins} in * {@code copyFrom} become the {@linkplain InvocationPlugins#getParent() default} * {@linkplain #getInvocationPlugins() invocation plugins} in this object. */ ! public Plugins(Plugins copyFrom) { ! this.invocationPlugins = new InvocationPlugins(copyFrom.invocationPlugins); this.nodePlugins = copyFrom.nodePlugins; this.parameterPlugins = copyFrom.parameterPlugins; this.typePlugins = copyFrom.typePlugins; this.inlineInvokePlugins = copyFrom.inlineInvokePlugins; - this.loopExplosionPlugin = copyFrom.loopExplosionPlugin; this.classInitializationPlugin = copyFrom.classInitializationPlugin; this.invokeDynamicPlugin = copyFrom.invokeDynamicPlugin; this.profilingPlugin = copyFrom.profilingPlugin; } /** * Creates a new set of plugins. * * @param invocationPlugins the {@linkplain #getInvocationPlugins() invocation plugins} in * this object --- 23,72 ---- package org.graalvm.compiler.nodes.graphbuilderconf; import java.util.Arrays; + import java.util.Collections; + import java.util.List; import org.graalvm.compiler.core.common.type.StampPair; import jdk.vm.ci.meta.JavaType; import jdk.vm.ci.meta.ResolvedJavaType; ! public final class GraphBuilderConfiguration { public static class Plugins { private final InvocationPlugins invocationPlugins; private NodePlugin[] nodePlugins; private ParameterPlugin[] parameterPlugins; private TypePlugin[] typePlugins; private InlineInvokePlugin[] inlineInvokePlugins; private ClassInitializationPlugin classInitializationPlugin; private InvokeDynamicPlugin invokeDynamicPlugin; private ProfilingPlugin profilingPlugin; /** * Creates a copy of a given set of plugins. The {@link InvocationPlugins} in * {@code copyFrom} become the {@linkplain InvocationPlugins#getParent() default} * {@linkplain #getInvocationPlugins() invocation plugins} in this object. */ ! public Plugins(Plugins copyFrom, InvocationPlugins invocationPlugins) { ! this.invocationPlugins = invocationPlugins != null ? invocationPlugins : new InvocationPlugins(copyFrom.invocationPlugins); this.nodePlugins = copyFrom.nodePlugins; this.parameterPlugins = copyFrom.parameterPlugins; this.typePlugins = copyFrom.typePlugins; this.inlineInvokePlugins = copyFrom.inlineInvokePlugins; this.classInitializationPlugin = copyFrom.classInitializationPlugin; this.invokeDynamicPlugin = copyFrom.invokeDynamicPlugin; this.profilingPlugin = copyFrom.profilingPlugin; } + public Plugins(Plugins copyFrom) { + this(copyFrom, null); + } + /** * Creates a new set of plugins. * * @param invocationPlugins the {@linkplain #getInvocationPlugins() invocation plugins} in * this object
*** 153,170 **** public void clearInlineInvokePlugins() { inlineInvokePlugins = new InlineInvokePlugin[0]; } - public LoopExplosionPlugin getLoopExplosionPlugin() { - return loopExplosionPlugin; - } - - public void setLoopExplosionPlugin(LoopExplosionPlugin plugin) { - this.loopExplosionPlugin = plugin; - } - public ClassInitializationPlugin getClassInitializationPlugin() { return classInitializationPlugin; } public void setClassInitializationPlugin(ClassInitializationPlugin plugin) { --- 157,166 ----
*** 196,212 **** } return null; } } - private static final ResolvedJavaType[] EMPTY = new ResolvedJavaType[]{}; - private final boolean eagerResolving; private final boolean unresolvedIsError; private final BytecodeExceptionMode bytecodeExceptionMode; private final boolean omitAssertions; ! private final ResolvedJavaType[] skippedExceptionTypes; private final boolean insertFullInfopoints; private final boolean trackNodeSourcePosition; private final Plugins plugins; public enum BytecodeExceptionMode { --- 192,206 ---- } return null; } } private final boolean eagerResolving; private final boolean unresolvedIsError; private final BytecodeExceptionMode bytecodeExceptionMode; private final boolean omitAssertions; ! private final List<ResolvedJavaType> skippedExceptionTypes; private final boolean insertFullInfopoints; private final boolean trackNodeSourcePosition; private final Plugins plugins; public enum BytecodeExceptionMode {
*** 227,238 **** * This mode uses profiling information to decide whether to use explicit exception edges. */ Profile } ! protected GraphBuilderConfiguration(boolean eagerResolving, boolean unresolvedIsError, BytecodeExceptionMode bytecodeExceptionMode, boolean omitAssertions, boolean insertFullInfopoints, ! boolean trackNodeSourcePosition, ResolvedJavaType[] skippedExceptionTypes, Plugins plugins) { this.eagerResolving = eagerResolving; this.unresolvedIsError = unresolvedIsError; this.bytecodeExceptionMode = bytecodeExceptionMode; this.omitAssertions = omitAssertions; this.insertFullInfopoints = insertFullInfopoints; --- 221,238 ---- * This mode uses profiling information to decide whether to use explicit exception edges. */ Profile } ! private GraphBuilderConfiguration(boolean eagerResolving, ! boolean unresolvedIsError, ! BytecodeExceptionMode bytecodeExceptionMode, ! boolean omitAssertions, ! boolean insertFullInfopoints, ! boolean trackNodeSourcePosition, ! List<ResolvedJavaType> skippedExceptionTypes, ! Plugins plugins) { this.eagerResolving = eagerResolving; this.unresolvedIsError = unresolvedIsError; this.bytecodeExceptionMode = bytecodeExceptionMode; this.omitAssertions = omitAssertions; this.insertFullInfopoints = insertFullInfopoints;
*** 246,304 **** * this configuration become the {@linkplain InvocationPlugins#getParent() parent} of the * {@link InvocationPlugins} in the copy. */ public GraphBuilderConfiguration copy() { Plugins newPlugins = new Plugins(plugins); ! GraphBuilderConfiguration result = new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, bytecodeExceptionMode, omitAssertions, insertFullInfopoints, trackNodeSourcePosition, ! skippedExceptionTypes, newPlugins); return result; } /** * Set the {@link #unresolvedIsError} flag. This flag can be set independently from * {@link #eagerResolving}, i.e., even if eager resolving fails execution is assumed to be * valid. This allows us for example to process unresolved types/methods/fields even when * eagerly resolving elements. */ public GraphBuilderConfiguration withUnresolvedIsError(boolean newUnresolvedIsError) { ! return new GraphBuilderConfiguration(eagerResolving, newUnresolvedIsError, bytecodeExceptionMode, omitAssertions, insertFullInfopoints, trackNodeSourcePosition, skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withEagerResolving(boolean newEagerResolving) { ! return new GraphBuilderConfiguration(newEagerResolving, unresolvedIsError, bytecodeExceptionMode, omitAssertions, insertFullInfopoints, trackNodeSourcePosition, skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withSkippedExceptionTypes(ResolvedJavaType[] newSkippedExceptionTypes) { ! return new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, bytecodeExceptionMode, omitAssertions, insertFullInfopoints, trackNodeSourcePosition, newSkippedExceptionTypes, plugins); } public GraphBuilderConfiguration withBytecodeExceptionMode(BytecodeExceptionMode newBytecodeExceptionMode) { ! return new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, newBytecodeExceptionMode, omitAssertions, insertFullInfopoints, trackNodeSourcePosition, skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withOmitAssertions(boolean newOmitAssertions) { ! return new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, bytecodeExceptionMode, newOmitAssertions, insertFullInfopoints, trackNodeSourcePosition, skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withFullInfopoints(boolean newInsertFullInfopoints) { ! ResolvedJavaType[] newSkippedExceptionTypes = skippedExceptionTypes == EMPTY ? EMPTY : Arrays.copyOf(skippedExceptionTypes, skippedExceptionTypes.length); ! return new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, bytecodeExceptionMode, omitAssertions, newInsertFullInfopoints, trackNodeSourcePosition, newSkippedExceptionTypes, plugins); } public GraphBuilderConfiguration withNodeSourcePosition(boolean newTrackNodeSourcePosition) { ! ResolvedJavaType[] newSkippedExceptionTypes = skippedExceptionTypes == EMPTY ? EMPTY : Arrays.copyOf(skippedExceptionTypes, skippedExceptionTypes.length); ! return new GraphBuilderConfiguration(eagerResolving, unresolvedIsError, bytecodeExceptionMode, omitAssertions, insertFullInfopoints, newTrackNodeSourcePosition, newSkippedExceptionTypes, plugins); } ! public ResolvedJavaType[] getSkippedExceptionTypes() { return skippedExceptionTypes; } public boolean eagerResolving() { return eagerResolving; --- 246,357 ---- * this configuration become the {@linkplain InvocationPlugins#getParent() parent} of the * {@link InvocationPlugins} in the copy. */ public GraphBuilderConfiguration copy() { Plugins newPlugins = new Plugins(plugins); ! GraphBuilderConfiguration result = new GraphBuilderConfiguration( ! eagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, ! newPlugins); return result; } /** * Set the {@link #unresolvedIsError} flag. This flag can be set independently from * {@link #eagerResolving}, i.e., even if eager resolving fails execution is assumed to be * valid. This allows us for example to process unresolved types/methods/fields even when * eagerly resolving elements. */ public GraphBuilderConfiguration withUnresolvedIsError(boolean newUnresolvedIsError) { ! return new GraphBuilderConfiguration( ! eagerResolving, ! newUnresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withEagerResolving(boolean newEagerResolving) { ! return new GraphBuilderConfiguration( ! newEagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withSkippedExceptionTypes(ResolvedJavaType[] newSkippedExceptionTypes) { ! return new GraphBuilderConfiguration( ! eagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! Collections.unmodifiableList(Arrays.asList(newSkippedExceptionTypes)), plugins); } public GraphBuilderConfiguration withBytecodeExceptionMode(BytecodeExceptionMode newBytecodeExceptionMode) { ! return new GraphBuilderConfiguration(eagerResolving, ! unresolvedIsError, ! newBytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withOmitAssertions(boolean newOmitAssertions) { ! return new GraphBuilderConfiguration( ! eagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! newOmitAssertions, ! insertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withFullInfopoints(boolean newInsertFullInfopoints) { ! return new GraphBuilderConfiguration( ! eagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! newInsertFullInfopoints, ! trackNodeSourcePosition, ! skippedExceptionTypes, plugins); } public GraphBuilderConfiguration withNodeSourcePosition(boolean newTrackNodeSourcePosition) { ! return new GraphBuilderConfiguration( ! eagerResolving, ! unresolvedIsError, ! bytecodeExceptionMode, ! omitAssertions, ! insertFullInfopoints, ! newTrackNodeSourcePosition, ! skippedExceptionTypes, plugins); } ! public List<ResolvedJavaType> getSkippedExceptionTypes() { return skippedExceptionTypes; } public boolean eagerResolving() { return eagerResolving;
*** 319,333 **** public boolean insertFullInfopoints() { return insertFullInfopoints; } public static GraphBuilderConfiguration getDefault(Plugins plugins) { ! return new GraphBuilderConfiguration(false, false, BytecodeExceptionMode.Profile, false, false, false, EMPTY, plugins); } public static GraphBuilderConfiguration getSnippetDefault(Plugins plugins) { ! return new GraphBuilderConfiguration(true, true, BytecodeExceptionMode.OmitAll, false, false, false, EMPTY, plugins); } /** Returns {@code true} if it is an error for a class/field/method resolution to fail. */ public boolean unresolvedIsError() { return unresolvedIsError; --- 372,402 ---- public boolean insertFullInfopoints() { return insertFullInfopoints; } public static GraphBuilderConfiguration getDefault(Plugins plugins) { ! return new GraphBuilderConfiguration( ! /* eagerResolving: */ false, ! /* unresolvedIsError: */ false, ! BytecodeExceptionMode.Profile, ! /* omitAssertions: */ false, ! /* insertFullInfopoints: */ false, ! /* trackNodeSourcePosition: */ false, ! Collections.emptyList(), ! plugins); } public static GraphBuilderConfiguration getSnippetDefault(Plugins plugins) { ! return new GraphBuilderConfiguration( ! /* eagerResolving: */ true, ! /* unresolvedIsError: */ true, ! BytecodeExceptionMode.OmitAll, ! /* omitAssertions: */ false, ! /* insertFullInfopoints: */ false, ! /* trackNodeSourcePosition: */ false, ! Collections.emptyList(), ! plugins); } /** Returns {@code true} if it is an error for a class/field/method resolution to fail. */ public boolean unresolvedIsError() { return unresolvedIsError;
< prev index next >