# HG changeset patch # User Thomas Wuerthinger # Date 1305212103 -7200 # Node ID 405e7947a940a9d3483338a9db8fd2fa6bb35c99 # Parent 440ceca8e3d712b387f1d52fbecf4ac0305c8592 Fixed RegisterFinalizer stateBefore. diff -r 440ceca8e3d7 -r 405e7947a940 graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java --- a/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Wed May 11 18:16:01 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java Thu May 12 16:55:03 2011 +0200 @@ -994,18 +994,10 @@ return operand; } - private FrameState stateBeforeRegisterFinalizer(RegisterFinalizer rf) { - Value object = rf.object(); - FrameStateBuilder builder = new FrameStateBuilder(compilation.method, rf.graph()); - builder.initializeFrom(rf.stateAfter()); - builder.push(object.kind, object); - return builder.create(rf.bci()); - } - @Override public void visitRegisterFinalizer(RegisterFinalizer x) { CiValue receiver = load(x.object()); - LIRDebugInfo info = stateFor(x, stateBeforeRegisterFinalizer(x)); + LIRDebugInfo info = stateFor(x, x.stateBefore()); callRuntime(CiRuntimeCall.RegisterFinalizer, info, receiver); setNoResult(x); } diff -r 440ceca8e3d7 -r 405e7947a940 graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java --- a/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java Wed May 11 18:16:01 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java Thu May 12 16:55:03 2011 +0200 @@ -812,7 +812,9 @@ if (needsCheck) { // append a call to the finalizer registration - append(new RegisterFinalizer(frameState.loadLocal(0), graph)); + RegisterFinalizer r = new RegisterFinalizer(frameState.loadLocal(0), graph); + append(r); + r.setStateBefore(frameState.create(bci())); C1XMetrics.InlinedFinalizerChecks++; } }