diff 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
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java	Thu Feb 16 18:24:31 2012 +0100
+++ b/graal/com.oracle.max.graal.nodes/src/com/oracle/max/graal/nodes/StructuredGraph.java	Thu Feb 16 18:59:09 2012 +0100
@@ -311,6 +311,14 @@
         EndNode singleEnd = merge.forwardEndAt(0);
         FixedNode sux = merge.next();
         FrameState stateAfter = merge.stateAfter();
+        // evacuateGuards
+        Node prevBegin = singleEnd.predecessor();
+        assert prevBegin != null;
+        while (!(prevBegin instanceof BeginNode)) {
+            prevBegin = prevBegin.predecessor();
+        }
+        merge.replaceAtUsages(prevBegin);
+
         merge.safeDelete();
         if (stateAfter != null && stateAfter.usages().isEmpty()) {
             stateAfter.safeDelete();