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

Reply via email to