Mercurial > hg > graal-compiler
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) { |