# HG changeset patch # User Christian Haeubl # Date 1331148544 28800 # Node ID 7770a465fb7339c3dd9da7063ace983720c14342 # Parent 63869930666fc5858a65031f5365b7e7bd8be71c# Parent 2eb3c0920cf16698bf6760fba10207661c3188fa Merge diff -r 63869930666f -r 7770a465fb73 graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Wed Mar 07 11:14:00 2012 -0800 +++ b/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Wed Mar 07 11:29:04 2012 -0800 @@ -1260,14 +1260,12 @@ */ private BeginNode createBlockTarget(double probability, Block block, FrameStateBuilder stateAfter) { assert probability >= 0 && probability <= 1; - if (probability == 0) { - FrameStateBuilder state = stateAfter.copy(); - state.clearNonLiveLocals(block.localsLiveIn); - + if (probability == 0 && config.useBranchPrediction()) { BeginNode begin = currentGraph.add(new BeginNode()); DeoptimizeNode deopt = currentGraph.add(new DeoptimizeNode(DeoptAction.InvalidateReprofile)); begin.setNext(deopt); - begin.setStateAfter(state.create(block.startBci)); + // Note: We are not allowed to set the stateAfter of the begin node, because we have to deoptimize to + // a bci _before_ the actual if, so that the interpreter can update the profiling information. return begin; }