changeset 6692:349127dc59de

fix for bug in GraphBuilderPhase (which caused a NPE in insertLoopProxies)
author Lukas Stadler <lukas.stadler@jku.at>
date Fri, 09 Nov 2012 16:11:12 +0100
parents 9611d0ccb4ec
children 75785a8ba5a3
files graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Fri Nov 09 15:23:35 2012 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Fri Nov 09 16:11:12 2012 +0100
@@ -173,11 +173,16 @@
 
         // finish the start block
         ((StateSplit) lastInstr).setStateAfter(frameState.create(0));
+
+        currentBlock = blockMap.startBlock;
+        blockMap.startBlock.entryState = frameState;
         if (blockMap.startBlock.isLoopHeader) {
+            // TODO(lstadler,gduboscq) createTarget might not be safe at this position, since it expects currentBlock,
+            // etc. to be set up correctly. A better solution to this problem of start blocks that are loop headers
+            // would be to create a dummy block in BciBlockMapping.
             appendGoto(createTarget(blockMap.startBlock, frameState));
         } else {
             blockMap.startBlock.firstInstruction = lastInstr;
-            blockMap.startBlock.entryState = frameState;
         }
 
         for (Block block : blockMap.blocks) {