changeset 5694:493e8d932148

Make a copy of the probability array when cloning ControlSplitNodes
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 26 Jun 2012 16:50:43 +0200
parents 0356d95f01ba
children a63ed5993987
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java	Tue Jun 26 16:43:51 2012 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java	Tue Jun 26 16:50:43 2012 +0200
@@ -31,8 +31,8 @@
  * The {@code ControlSplitNode} is a base class for all instructions that split the control flow (ie. have more than one successor).
  */
 public abstract class ControlSplitNode extends FixedNode {
-
     @Successor private final NodeSuccessorList<BeginNode> blockSuccessors;
+    protected double[] branchProbability;
 
     public BeginNode blockSuccessor(int index) {
         return blockSuccessors.get(index);
@@ -46,8 +46,6 @@
         return blockSuccessors.size();
     }
 
-    protected final double[] branchProbability;
-
     public ControlSplitNode(Stamp stamp, BeginNode[] blockSuccessors, double[] branchProbability) {
         super(stamp);
         assert branchProbability.length == blockSuccessors.length;
@@ -113,4 +111,11 @@
         }
         return idx;
     }
+
+    @Override
+    public ControlSplitNode clone(Graph into) {
+        ControlSplitNode csn = (ControlSplitNode) super.clone(into);
+        csn.branchProbability = Arrays.copyOf(branchProbability, branchProbability.length);
+        return csn;
+    }
 }