changeset 18850:3a59e1411192

Make sure the JSRData is cloned when the BciBlock is cloned.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Tue, 13 Jan 2015 01:55:12 +0100
parents 55a30b4beb5f
children 4b4421dafcaa
files graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java	Mon Jan 12 21:24:26 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java	Tue Jan 13 01:55:12 2015 +0100
@@ -97,13 +97,21 @@
         public long loops;
         public JSRData jsrData;
 
-        public static class JSRData {
+        public static class JSRData implements Cloneable {
             public HashMap<JsrScope, BciBlock> jsrAlternatives;
             public JsrScope jsrScope = JsrScope.EMPTY_SCOPE;
             public BciBlock jsrSuccessor;
             public int jsrReturnBci;
             public BciBlock retSuccessor;
             public boolean endsWithRet = false;
+
+            public JSRData copy() {
+                try {
+                    return (JSRData) this.clone();
+                } catch (CloneNotSupportedException e) {
+                    return null;
+                }
+            }
         }
 
         public BciBlock() {
@@ -127,6 +135,9 @@
         public BciBlock copy() {
             try {
                 BciBlock block = (BciBlock) super.clone();
+                if (block.jsrData != null) {
+                    block.jsrData = block.jsrData.copy();
+                }
                 block.successors = new ArrayList<>(successors);
                 return block;
             } catch (CloneNotSupportedException e) {