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) {