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 }