Author: Maciej Fijalkowski <[email protected]>
Branch: resume-refactor
Changeset: r68847:4dbef4926427
Date: 2014-01-17 18:55 +0100
http://bitbucket.org/pypy/pypy/changeset/4dbef4926427/
Log: finish this test
diff --git a/rpython/jit/resume/reader.py b/rpython/jit/resume/reader.py
--- a/rpython/jit/resume/reader.py
+++ b/rpython/jit/resume/reader.py
@@ -110,6 +110,9 @@
jitcode = self.staticdata.alljitcodes[self.read_short(pos + 3)]
self.enter_frame(pc, jitcode)
pos += 5
+ elif op == rescode.LEAVE_FRAME:
+ self.leave_frame()
+ pos += 1
elif op == rescode.RESUME_PUT:
encoded = self.read_short(pos + 1)
frame_pos = self.read(pos + 3)
diff --git a/rpython/jit/resume/test/test_frontend.py
b/rpython/jit/resume/test/test_frontend.py
--- a/rpython/jit/resume/test/test_frontend.py
+++ b/rpython/jit/resume/test/test_frontend.py
@@ -111,24 +111,22 @@
def test_nested_call(self):
jitcode1 = JitCode("jitcode")
jitcode1.setup(num_regs_i=13, num_regs_r=0, num_regs_f=0)
+ jitcode1.global_index = 0
jitcode2 = JitCode("jitcode2")
jitcode2.setup(num_regs_i=9, num_regs_r=0, num_regs_f=0)
- resume_loop = parse("""
- []
- enter_frame(-1, descr=jitcode1)
- resume_put(11, 0, 2)
- enter_frame(12, descr=jitcode2)
- resume_put(12, 1, 3)
- resume_put(8, 0, 4)
- leave_frame()
- resume_put(10, 0, 1)
- leave_frame()
- """, namespace={'jitcode1': jitcode1, 'jitcode2': jitcode2})
+ jitcode2.global_index = 1
+ builder = ResumeBytecodeBuilder()
+ builder.enter_frame(-1, jitcode1)
+ builder.resume_put(TAGBOX | (11 << 2), 0, 2)
+ builder.enter_frame(12, jitcode2)
+ builder.resume_put(TAGBOX | (12 << 2), 1, 3)
+ builder.resume_put(TAGBOX | (8 << 2), 0, 4)
metainterp = MockMetaInterp()
+ metainterp.staticdata = MockStaticData([jitcode1, jitcode2], [])
metainterp.cpu = MockCPU()
descr = Descr()
- descr.rd_resume_bytecode = ResumeBytecode(resume_loop.operations)
- descr.rd_bytecode_position = 5
+ descr.rd_resume_bytecode = ResumeBytecode(builder.build(), [])
+ descr.rd_bytecode_position = len(descr.rd_resume_bytecode.opcodes)
rebuild_from_resumedata(metainterp, "myframe", descr)
assert len(metainterp.framestack) == 2
f = metainterp.framestack[-1]
@@ -138,8 +136,13 @@
assert f.registers_i[3].getint() == 12 + 3
assert f2.registers_i[4].getint() == 8 + 3
assert f2.registers_i[2].getint() == 11 + 3
+
+ builder.leave_frame()
+ builder.resume_put(TAGBOX | (10 << 2), 0, 1)
- descr.rd_bytecode_position = 7
+ descr.rd_resume_bytecode = ResumeBytecode(builder.build(), [])
+ descr.rd_bytecode_position = len(descr.rd_resume_bytecode.opcodes)
+
metainterp.framestack = []
rebuild_from_resumedata(metainterp, "myframe", descr)
assert len(metainterp.framestack) == 1
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit