comparison graal/GraalCompiler/src/com/sun/c1x/gen/LIRGenerator.java @ 2669:405e7947a940

Fixed RegisterFinalizer stateBefore.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Thu, 12 May 2011 16:55:03 +0200
parents 194d93d089bd
children 50b181d88c9f
comparison
equal deleted inserted replaced
2662:440ceca8e3d7 2669:405e7947a940
992 CiVariable operand = newVariable(x.kind); 992 CiVariable operand = newVariable(x.kind);
993 setResult(x, operand); 993 setResult(x, operand);
994 return operand; 994 return operand;
995 } 995 }
996 996
997 private FrameState stateBeforeRegisterFinalizer(RegisterFinalizer rf) {
998 Value object = rf.object();
999 FrameStateBuilder builder = new FrameStateBuilder(compilation.method, rf.graph());
1000 builder.initializeFrom(rf.stateAfter());
1001 builder.push(object.kind, object);
1002 return builder.create(rf.bci());
1003 }
1004
1005 @Override 997 @Override
1006 public void visitRegisterFinalizer(RegisterFinalizer x) { 998 public void visitRegisterFinalizer(RegisterFinalizer x) {
1007 CiValue receiver = load(x.object()); 999 CiValue receiver = load(x.object());
1008 LIRDebugInfo info = stateFor(x, stateBeforeRegisterFinalizer(x)); 1000 LIRDebugInfo info = stateFor(x, x.stateBefore());
1009 callRuntime(CiRuntimeCall.RegisterFinalizer, info, receiver); 1001 callRuntime(CiRuntimeCall.RegisterFinalizer, info, receiver);
1010 setNoResult(x); 1002 setNoResult(x);
1011 } 1003 }
1012 1004
1013 private void visitSwitchRanges(SwitchRange[] x, CiValue value, BlockBegin defaultSux) { 1005 private void visitSwitchRanges(SwitchRange[] x, CiValue value, BlockBegin defaultSux) {