# HG changeset patch # User Lukas Stadler # Date 1352473872 -3600 # Node ID 349127dc59dede47412cb196edbc65a849a5d9c2 # Parent 9611d0ccb4eca209006a32082d30785533889a30 fix for bug in GraphBuilderPhase (which caused a NPE in insertLoopProxies) diff -r 9611d0ccb4ec -r 349127dc59de graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- 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) {