comparison graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/InstanceOfSnippetsTemplates.java @ 6696:2ec25815d84e

When InstanceOfNode is lowered to always true or always false condition, then the no longer used branch needs to be removed from graph.
author Christian Wimmer <christian.wimmer@oracle.com>
date Fri, 09 Nov 2012 16:58:28 -0800
parents 04944369f982
children 41938af2b3d8 8d16b9b2c51e
comparison
equal deleted inserted replaced
6695:dc7cd6885f07 6696:2ec25815d84e
270 assert !merge.isAlive() : merge; 270 assert !merge.isAlive() : merge;
271 assert !phi.isAlive() : phi; 271 assert !phi.isAlive() : phi;
272 } 272 }
273 273
274 private static void connectEnds(MergeNode merge, List<EndNode> ends, BeginNode successor) { 274 private static void connectEnds(MergeNode merge, List<EndNode> ends, BeginNode successor) {
275 if (ends.size() == 1) { 275 if (ends.size() == 0) {
276 // InstanceOf has been lowered to always true or always false - this successor is therefore unreachable.
277 GraphUtil.killCFG(successor);
278 } else if (ends.size() == 1) {
276 EndNode end = ends.get(0); 279 EndNode end = ends.get(0);
277 ((FixedWithNextNode) end.predecessor()).setNext(successor); 280 ((FixedWithNextNode) end.predecessor()).setNext(successor);
278 merge.removeEnd(end); 281 merge.removeEnd(end);
279 GraphUtil.killCFG(end); 282 GraphUtil.killCFG(end);
280 } else { 283 } else {