# HG changeset patch # User Gilles Duboscq # Date 1340722243 -7200 # Node ID 493e8d932148538dcf2e80782ff34bf755b1c991 # Parent 0356d95f01ba2ecb0bb9cf47c4790f6971ec27e8 Make a copy of the probability array when cloning ControlSplitNodes diff -r 0356d95f01ba -r 493e8d932148 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java --- 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 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; + } }