Mercurial > hg > graal-jvmci-8
diff c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java @ 2055:99ad52189524
Refactorings to get towards less CRI overhead.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Thu, 13 Jan 2011 17:45:17 +0100 |
parents | 177398c6147d |
children | f21664b3dd1c 569d3fe7d65c |
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java Wed Jan 12 19:14:32 2011 +0100 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTypeUnresolved.java Thu Jan 13 17:45:17 2011 +0100 @@ -28,9 +28,9 @@ * * @author Thomas Wuerthinger, Lukas Stadler */ -public class HotSpotTypeUnresolved implements HotSpotType { +public class HotSpotTypeUnresolved extends HotSpotType { - public final String name; + public final String simpleName; public final int dimensions; /** @@ -48,35 +48,33 @@ dimensions++; } assert name.charAt(startIndex) == 'L'; - name = name.substring(startIndex + 1, name.length() - 1); + this.simpleName = name.substring(startIndex + 1, name.length() - 1); + this.name = name; + } else { + this.simpleName = name; + this.name = getFullName(name, dimensions); } - this.name = name; this.dimensions = dimensions; } public HotSpotTypeUnresolved(String name, int dimensions) { assert dimensions >= 0; - this.name = name; + this.simpleName = name; this.dimensions = dimensions; + this.name = getFullName(name, dimensions); } - @Override - public String name() { + private String getFullName(String name, int dimensions) { StringBuilder str = new StringBuilder(); for (int i = 0; i < dimensions; i++) { str.append('['); } - str.append('L').append(name).append(';'); + str.append('L').append(simpleName).append(';'); return str.toString(); } @Override - public String simpleName() { - return name; - } - - @Override public RiType uniqueConcreteSubtype() { throw unresolved("uniqueConcreteSubtype"); } @@ -144,7 +142,7 @@ @Override public RiType componentType() { assert isArrayClass() : "no array class" + name(); - return new HotSpotTypeUnresolved(name, dimensions - 1); + return new HotSpotTypeUnresolved(simpleName, dimensions - 1); } @Override @@ -154,7 +152,7 @@ @Override public RiType arrayOf() { - return new HotSpotTypeUnresolved(name, dimensions + 1); + return new HotSpotTypeUnresolved(simpleName, dimensions + 1); } @Override @@ -168,12 +166,12 @@ } private CiUnresolvedException unresolved(String operation) { - throw new CiUnresolvedException(operation + " not defined for unresolved class " + name); + throw new CiUnresolvedException(operation + " not defined for unresolved class " + simpleName); } @Override public int hashCode() { - return name.hashCode(); + return simpleName.hashCode(); } @Override @@ -183,7 +181,7 @@ @Override public String toString() { - return "HotSpotType<" + name + ", unresolved>"; + return "HotSpotType<" + simpleName + ", unresolved>"; } @Override