changeset 2669:405e7947a940

Fixed RegisterFinalizer stateBefore.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Thu, 12 May 2011 16:55:03 +0200
parents 440ceca8e3d7
children 50b181d88c9f
files graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java
diffstat 2 files changed, 4 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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);
     }
--- 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++;
         }
     }