Mercurial > hg > truffle
comparison graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java @ 18993:480bd3b1adcd
Rename BeginNode => AbstractBeginNode.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Wed, 28 Jan 2015 00:50:31 +0100 |
parents | f57d86eb036f |
children | 7e2c87dae93e |
comparison
equal
deleted
inserted
replaced
18992:b1c03c2bfa40 | 18993:480bd3b1adcd |
---|---|
39 @NodeInfo | 39 @NodeInfo |
40 public class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { | 40 public class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable { |
41 | 41 |
42 protected final int[] keys; | 42 protected final int[] keys; |
43 | 43 |
44 public IntegerSwitchNode(ValueNode value, BeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { | 44 public IntegerSwitchNode(ValueNode value, AbstractBeginNode[] successors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { |
45 super(value, successors, keySuccessors, keyProbabilities); | 45 super(value, successors, keySuccessors, keyProbabilities); |
46 assert keySuccessors.length == keys.length + 1; | 46 assert keySuccessors.length == keys.length + 1; |
47 assert keySuccessors.length == keyProbabilities.length; | 47 assert keySuccessors.length == keyProbabilities.length; |
48 this.keys = keys; | 48 this.keys = keys; |
49 assert value.stamp() instanceof PrimitiveStamp && value.stamp().getStackKind().isNumericInteger(); | 49 assert value.stamp() instanceof PrimitiveStamp && value.stamp().getStackKind().isNumericInteger(); |
56 } | 56 } |
57 return true; | 57 return true; |
58 } | 58 } |
59 | 59 |
60 public IntegerSwitchNode(ValueNode value, int successorCount, int[] keys, double[] keyProbabilities, int[] keySuccessors) { | 60 public IntegerSwitchNode(ValueNode value, int successorCount, int[] keys, double[] keyProbabilities, int[] keySuccessors) { |
61 this(value, new BeginNode[successorCount], keys, keyProbabilities, keySuccessors); | 61 this(value, new AbstractBeginNode[successorCount], keys, keyProbabilities, keySuccessors); |
62 } | 62 } |
63 | 63 |
64 @Override | 64 @Override |
65 public boolean isSorted() { | 65 public boolean isSorted() { |
66 return true; | 66 return true; |
128 } | 128 } |
129 if (validKeys == 0) { | 129 if (validKeys == 0) { |
130 tool.addToWorkList(defaultSuccessor()); | 130 tool.addToWorkList(defaultSuccessor()); |
131 graph().removeSplitPropagate(this, defaultSuccessor()); | 131 graph().removeSplitPropagate(this, defaultSuccessor()); |
132 } else if (validKeys != keys.length) { | 132 } else if (validKeys != keys.length) { |
133 ArrayList<BeginNode> newSuccessors = new ArrayList<>(blockSuccessorCount()); | 133 ArrayList<AbstractBeginNode> newSuccessors = new ArrayList<>(blockSuccessorCount()); |
134 int[] newKeys = new int[validKeys]; | 134 int[] newKeys = new int[validKeys]; |
135 int[] newKeySuccessors = new int[validKeys + 1]; | 135 int[] newKeySuccessors = new int[validKeys + 1]; |
136 double[] newKeyProbabilities = new double[validKeys + 1]; | 136 double[] newKeyProbabilities = new double[validKeys + 1]; |
137 double totalProbability = 0; | 137 double totalProbability = 0; |
138 int current = 0; | 138 int current = 0; |
161 newKeyProbabilities[i] = 1.0 / current; | 161 newKeyProbabilities[i] = 1.0 / current; |
162 } | 162 } |
163 } | 163 } |
164 | 164 |
165 for (int i = 0; i < blockSuccessorCount(); i++) { | 165 for (int i = 0; i < blockSuccessorCount(); i++) { |
166 BeginNode successor = blockSuccessor(i); | 166 AbstractBeginNode successor = blockSuccessor(i); |
167 if (!newSuccessors.contains(successor)) { | 167 if (!newSuccessors.contains(successor)) { |
168 tool.deleteBranch(successor); | 168 tool.deleteBranch(successor); |
169 } | 169 } |
170 setBlockSuccessor(i, null); | 170 setBlockSuccessor(i, null); |
171 } | 171 } |
172 | 172 |
173 BeginNode[] successorsArray = newSuccessors.toArray(new BeginNode[newSuccessors.size()]); | 173 AbstractBeginNode[] successorsArray = newSuccessors.toArray(new AbstractBeginNode[newSuccessors.size()]); |
174 IntegerSwitchNode newSwitch = graph().add(new IntegerSwitchNode(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); | 174 IntegerSwitchNode newSwitch = graph().add(new IntegerSwitchNode(value(), successorsArray, newKeys, newKeyProbabilities, newKeySuccessors)); |
175 ((FixedWithNextNode) predecessor()).setNext(newSwitch); | 175 ((FixedWithNextNode) predecessor()).setNext(newSwitch); |
176 GraphUtil.killWithUnusedFloatingInputs(this); | 176 GraphUtil.killWithUnusedFloatingInputs(this); |
177 } | 177 } |
178 } | 178 } |