# HG changeset patch # User Josef Eisl # Date 1416475975 -3600 # Node ID d68ab3959fec16863c503dfed1095c8f225a4104 # Parent 6014e40b07f8fff95fd9afc9e52d82de608c58dd Remove static id from VirtualStackSlot. diff -r 6014e40b07f8 -r d68ab3959fec graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java Wed Nov 19 17:31:31 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/VirtualStackSlot.java Thu Nov 20 10:32:55 2014 +0100 @@ -27,12 +27,11 @@ public abstract class VirtualStackSlot extends StackSlotValue { private static final long serialVersionUID = 2823688688873398219L; - private static int idCounter = 0; private final int id; - public VirtualStackSlot(LIRKind lirKind) { + public VirtualStackSlot(int id, LIRKind lirKind) { super(lirKind); - id = idCounter++; + this.id = id; } public int getId() { diff -r 6014e40b07f8 -r d68ab3959fec graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java Wed Nov 19 17:31:31 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/FrameMapBuilderImpl.java Thu Nov 20 10:32:55 2014 +0100 @@ -39,6 +39,7 @@ protected final FrameMap frameMap; private final List stackSlots; private final List calls; + private int numStackSlots; public FrameMapBuilderImpl(FrameMap frameMap, CodeCacheProvider codeCache, RegisterConfig registerConfig) { assert registerConfig != null : "No register config!"; @@ -48,12 +49,13 @@ this.stackSlots = new ArrayList<>(); this.calls = new ArrayList<>(); this.mappables = new ArrayList<>(); + this.numStackSlots = 0; } private final List mappables; public VirtualStackSlot allocateSpillSlot(LIRKind kind) { - SimpleVirtualStackSlot slot = new SimpleVirtualStackSlot(kind); + SimpleVirtualStackSlot slot = new SimpleVirtualStackSlot(numStackSlots++, kind); stackSlots.add(slot); return slot; } @@ -65,7 +67,7 @@ if (outObjectStackSlots != null) { throw GraalInternalError.unimplemented(); } - VirtualStackSlotRange slot = new VirtualStackSlotRange(slots, objects); + VirtualStackSlotRange slot = new VirtualStackSlotRange(numStackSlots++, slots, objects); stackSlots.add(slot); return slot; } @@ -78,6 +80,14 @@ return codeCache; } + /** + * Returns the number of {@link VirtualStackSlot}s created by this {@link FrameMapBuilder}. Can + * be used as an upper bound for an array indexed by {@link VirtualStackSlot#getId()}. + */ + public int getNumberOfStackSlots() { + return numStackSlots; + } + public void callsMethod(CallingConvention cc) { calls.add(cc); } diff -r 6014e40b07f8 -r d68ab3959fec graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java Wed Nov 19 17:31:31 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/SimpleVirtualStackSlot.java Thu Nov 20 10:32:55 2014 +0100 @@ -32,8 +32,8 @@ private static final long serialVersionUID = 7654295701165421750L; - public SimpleVirtualStackSlot(LIRKind lirKind) { - super(lirKind); + public SimpleVirtualStackSlot(int id, LIRKind lirKind) { + super(id, lirKind); } } diff -r 6014e40b07f8 -r d68ab3959fec graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Wed Nov 19 17:31:31 2014 +0100 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/framemap/VirtualStackSlotRange.java Thu Nov 20 10:32:55 2014 +0100 @@ -37,8 +37,8 @@ private final BitSet objects; private final int slots; - public VirtualStackSlotRange(int slots, BitSet objects) { - super(LIRKind.reference(Kind.Object)); + public VirtualStackSlotRange(int id, int slots, BitSet objects) { + super(id, LIRKind.reference(Kind.Object)); this.slots = slots; this.objects = (BitSet) objects.clone(); }