Mercurial > hg > truffle
changeset 18608:66e31efead2f
Make ReferenceMap Clonable.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Tue, 02 Dec 2014 17:39:01 +0100 |
parents | 6383574293f9 |
children | c7fe48cd8087 |
files | graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java |
diffstat | 2 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java Wed Dec 03 17:16:08 2014 +0100 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java Tue Dec 02 17:39:01 2014 +0100 @@ -25,7 +25,7 @@ import com.oracle.graal.api.code.CodeUtil.RefMapFormatter; import com.oracle.graal.api.meta.*; -public interface ReferenceMap { +public interface ReferenceMap extends Cloneable { void setRegister(int idx, LIRKind kind); @@ -42,4 +42,6 @@ void appendRegisterMap(StringBuilder sb, RefMapFormatter formatterArg); void appendFrameMap(StringBuilder sb, RefMapFormatter formatterArg); + + ReferenceMap clone(); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Wed Dec 03 17:16:08 2014 +0100 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java Tue Dec 02 17:39:01 2014 +0100 @@ -79,6 +79,17 @@ this.target = target; } + private HotSpotReferenceMap(HotSpotReferenceMap other) { + this.registerRefMap = (BitSet) other.registerRefMap.clone(); + this.frameRefMap = (BitSet) other.frameRefMap.clone(); + this.target = other.target; + } + + @Override + public ReferenceMap clone() { + return new HotSpotReferenceMap(this); + } + // setters private static void setOop(BitSet map, int startIdx, LIRKind kind) {