Mercurial > hg > truffle
diff graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java @ 7705:96a596d751ab
remove successorProbabilities from SwitchNode
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Mon, 04 Feb 2013 18:18:16 +0100 |
parents | 5e3d1a68664e |
children | ae815a4c112a |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Mon Feb 04 15:33:43 2013 +0100 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java Mon Feb 04 18:18:16 2013 +0100 @@ -35,7 +35,6 @@ public abstract class SwitchNode extends ControlSplitNode { @Successor protected final NodeSuccessorList<BeginNode> successors; - protected double[] successorProbabilities; @Input private ValueNode value; private double[] keyProbabilities; private int[] keySuccessors; @@ -46,9 +45,8 @@ * @param value the instruction that provides the value to be switched over * @param successors the list of successors of this switch */ - public SwitchNode(ValueNode value, BeginNode[] successors, double[] successorProbabilities, int[] keySuccessors, double[] keyProbabilities) { + public SwitchNode(ValueNode value, BeginNode[] successors, int[] keySuccessors, double[] keyProbabilities) { super(StampFactory.forVoid()); - this.successorProbabilities = successorProbabilities; assert keySuccessors.length == keyProbabilities.length; this.successors = new NodeSuccessorList<>(this, successors); this.value = value; @@ -59,9 +57,9 @@ @Override public double probability(BeginNode successor) { double sum = 0; - for (int i = 0; i < successors.size(); i++) { - if (successors.get(i) == successor) { - sum += successorProbabilities[i]; + for (int i = 0; i < keySuccessors.length; i++) { + if (successors.get(keySuccessors[i]) == successor) { + sum += keyProbabilities[i]; } } return sum; @@ -133,23 +131,9 @@ return defaultSuccessorIndex() == -1 ? null : successors.get(defaultSuccessorIndex()); } - /** - * Helper function that sums up the probabilities of all keys that lead to a specific successor. - * - * @return an array of size successorCount with the accumulated probability for each successor. - */ - public static double[] successorProbabilites(int successorCount, int[] keySuccessors, double[] keyProbabilities) { - double[] probability = new double[successorCount]; - for (int i = 0; i < keySuccessors.length; i++) { - probability[keySuccessors[i]] += keyProbabilities[i]; - } - return probability; - } - @Override public SwitchNode clone(Graph into) { SwitchNode newSwitch = (SwitchNode) super.clone(into); - newSwitch.successorProbabilities = Arrays.copyOf(successorProbabilities, successorProbabilities.length); newSwitch.keyProbabilities = Arrays.copyOf(keyProbabilities, keyProbabilities.length); newSwitch.keySuccessors = Arrays.copyOf(keySuccessors, keySuccessors.length); return newSwitch;