# HG changeset patch # User Christian Wimmer # Date 1431645403 25200 # Node ID f9024b74dd9ebf693c869469019331ece89190a7 # Parent 77a775ebd6d4dbaea982a61bc4cf827052522700 Allow subclasses of LocationIdentity to provide immuatability information diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/LocationIdentity.java Thu May 14 16:16:43 2015 -0700 @@ -54,26 +54,18 @@ */ public static final LocationIdentity ARRAY_LENGTH_LOCATION = NamedLocationIdentity.immutable("[].length"); - protected final boolean immutable; - public static LocationIdentity any() { return ANY_LOCATION; } - protected LocationIdentity(boolean immutable) { - this.immutable = immutable; - } - /** * Denotes a location is unchanging in all cases. Not that this is different than the Java * notion of final which only requires definite assignment. */ - public final boolean isImmutable() { - return immutable; - } + public abstract boolean isImmutable(); public final boolean isMutable() { - return !immutable; + return !isImmutable(); } public final boolean isAny() { diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java --- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/NamedLocationIdentity.java Thu May 14 16:16:43 2015 -0700 @@ -46,11 +46,12 @@ } } - protected final String name; + private final String name; + private final boolean immutable; private NamedLocationIdentity(String name, boolean immutable) { - super(immutable); this.name = name; + this.immutable = immutable; } /** @@ -87,6 +88,11 @@ } @Override + public boolean isImmutable() { + return immutable; + } + + @Override public String toString() { return name + (isImmutable() ? ":final" : ""); } diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInvocationPlugins.java Thu May 14 16:16:43 2015 -0700 @@ -36,7 +36,6 @@ import com.oracle.graal.graphbuilderconf.MethodIdMap.Receiver; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.phases.*; -import com.oracle.graal.hotspot.replacements.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.CallTargetNode.InvokeKind; import com.oracle.graal.nodes.type.*; diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaFieldImpl.java Thu May 14 16:16:43 2015 -0700 @@ -54,11 +54,15 @@ HotSpotResolvedJavaField inner; public FieldLocationIdentity(HotSpotResolvedJavaFieldImpl inner) { - super(false); this.inner = inner; } @Override + public boolean isImmutable() { + return false; + } + + @Override public boolean equals(Object obj) { if (this == obj) { return true; diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethodImpl.java Thu May 14 16:16:43 2015 -0700 @@ -36,7 +36,6 @@ import com.oracle.graal.debug.*; import com.oracle.graal.graphbuilderconf.*; import com.oracle.graal.hotspot.*; -import com.oracle.graal.hotspot.debug.*; import com.oracle.graal.nodes.*; /** diff -r 77a775ebd6d4 -r f9024b74dd9e graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java --- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java Thu May 14 16:14:41 2015 -0700 +++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/ObjectLocationIdentity.java Thu May 14 16:16:43 2015 -0700 @@ -53,11 +53,15 @@ } private ObjectLocationIdentity(JavaConstant object) { - super(false); this.object = object; } @Override + public boolean isImmutable() { + return false; + } + + @Override public String toString() { return "Identity(" + object + ")"; }