Mercurial > hg > truffle
comparison graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java @ 4622:00e01f401c03
Add checkcast for type-guarded inlining
for polymorphic inlining, do not share stateAfter the invoke with the stateAfter for the merge
also evacuate guards when reducing a trivial merge
fix bug in killUnusedFloatingInputs
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Thu, 16 Feb 2012 18:59:09 +0100 |
parents | 2ab543f06630 |
children |
comparison
equal
deleted
inserted
replaced
4621:2ab543f06630 | 4622:00e01f401c03 |
---|---|
309 phi.safeDelete(); | 309 phi.safeDelete(); |
310 } | 310 } |
311 EndNode singleEnd = merge.forwardEndAt(0); | 311 EndNode singleEnd = merge.forwardEndAt(0); |
312 FixedNode sux = merge.next(); | 312 FixedNode sux = merge.next(); |
313 FrameState stateAfter = merge.stateAfter(); | 313 FrameState stateAfter = merge.stateAfter(); |
314 // evacuateGuards | |
315 Node prevBegin = singleEnd.predecessor(); | |
316 assert prevBegin != null; | |
317 while (!(prevBegin instanceof BeginNode)) { | |
318 prevBegin = prevBegin.predecessor(); | |
319 } | |
320 merge.replaceAtUsages(prevBegin); | |
321 | |
314 merge.safeDelete(); | 322 merge.safeDelete(); |
315 if (stateAfter != null && stateAfter.usages().isEmpty()) { | 323 if (stateAfter != null && stateAfter.usages().isEmpty()) { |
316 stateAfter.safeDelete(); | 324 stateAfter.safeDelete(); |
317 } | 325 } |
318 if (sux == null) { | 326 if (sux == null) { |