# HG changeset patch # User Josef Eisl # Date 1417538341 -3600 # Node ID 66e31efead2f6ff83c2f17a31e1382ea555a41d7 # Parent 6383574293f94846c6c50181bba1c6a6ae6c7b4f Make ReferenceMap Clonable. diff -r 6383574293f9 -r 66e31efead2f graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/ReferenceMap.java --- 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(); } diff -r 6383574293f9 -r 66e31efead2f graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotReferenceMap.java --- 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) {