Mercurial > hg > truffle
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 { |