[pypy-commit] pypy resume-refactor: (fijal, rguillebert) finish the test_backend

fijal noreply at buildbot.pypy.org
Fri Jan 17 17:33:32 CET 2014


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: resume-refactor
Changeset: r68726:e1f1d329aa41
Date: 2014-01-17 17:32 +0100
http://bitbucket.org/pypy/pypy/changeset/e1f1d329aa41/

Log:	(fijal, rguillebert) finish the test_backend

diff --git a/rpython/jit/resume/backend.py b/rpython/jit/resume/backend.py
--- a/rpython/jit/resume/backend.py
+++ b/rpython/jit/resume/backend.py
@@ -111,8 +111,7 @@
                     else:
                         loc_pos = inputlocs[i].get_jitframe_position()
                         i += 1
-                        self.frontend_pos[box] = (ConstInt(frame_pos),
-                                                  ConstInt(pos_in_frame))
+                        self.frontend_pos[box] = (frame_pos, pos_in_frame)
                         all[box] = None
                     if box not in self.current_attachment:
                         self.current_attachment[box] = loc_pos
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
@@ -59,13 +59,8 @@
     def decode(self, pos):
         return pos & 0x3, pos >> rescode.TAGOFFSET
 
-    def resume_put(self, jitframe_pos_box, frame_no, frontend_position):
-        XXX
-        if isinstance(jitframe_pos_box, Box):
-            jitframe_pos = self.encode_virtual(jitframe_pos_box)
-        else:
-            jitframe_pos = self.encode_box(jitframe_pos_box.getint())
-        self.framestack[frame_no].registers[frontend_position] = jitframe_pos
+    def resume_put(self, encoded_pos, frame_no, frontend_position):
+        self.framestack[frame_no].registers[frontend_position] = encoded_pos
 
     def encode(self, box):
         xxx
@@ -83,12 +78,9 @@
         self.virtuals[box].fields[descr] = self.encode(fieldbox)
 
     def resume_clear(self, frame_no, frontend_position):
+        xxx
         self.framestack[frame_no].registers[frontend_position] = -1
 
-    def resume_put_const(self, const, frame_no, frontend_position):
-        pos = self.encode_const(const)
-        self.framestack[frame_no].registers[frontend_position] = pos
-
     def resume_set_pc(self, pc):
         self.framestack[-1].pc = pc
 
@@ -98,7 +90,7 @@
     def _rebuild_until(self, rb, position):
         if rb.parent is not None:
             self._rebuild_until(rb.parent, rb.parent_position)
-        self.interpret_until(rb.opcodes, position)
+        self.interpret_until(rb, position)
 
     def read(self, pos):
         return ord(self.bytecode.opcodes[pos])
diff --git a/rpython/jit/resume/test/test_backend.py b/rpython/jit/resume/test/test_backend.py
--- a/rpython/jit/resume/test/test_backend.py
+++ b/rpython/jit/resume/test/test_backend.py
@@ -131,6 +131,7 @@
 
     def test_bridge(self):
         jitcode = JitCode("name")
+        jitcode.global_index = 0
         jitcode.setup(num_regs_i=1, num_regs_r=0, num_regs_f=0)
         loop = parse("""
         [i0]
@@ -152,14 +153,12 @@
         force_spill(i0)
         guard_false(i0)
         """)
-        locs = rebuild_locs_from_resumedata(descr)
+        staticdata = MockStaticData([jitcode], [])
+        locs = rebuild_locs_from_resumedata(descr, staticdata)
         self.cpu.compile_bridge(None, descr, [bridge.inputargs], locs,
                                 bridge.operations, looptoken)
 
         descr = bridge.operations[-1].getdescr()
-        expected_resume = parse("""
-        []
-        resume_put(28, 0, 0)
-        """)
-        equaloplists(descr.rd_resume_bytecode.opcodes,
-                     expected_resume.operations)
+        res = descr.rd_resume_bytecode.dump(staticdata,
+                                            descr.rd_bytecode_position)
+        assert res == "resume_put (3, 28) 0 0"
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
@@ -3,7 +3,7 @@
 from rpython.jit.codewriter.jitcode import JitCode
 from rpython.jit.metainterp.history import AbstractDescr, Const, INT, Stats
 from rpython.jit.resume.frontend import rebuild_from_resumedata
-from rpython.jit.resume.rescode import ResumeBytecode
+from rpython.jit.resume.rescode import ResumeBytecode, TAGBOX
 from rpython.jit.resume.reader import AbstractResumeReader
 from rpython.jit.metainterp.resoperation import rop
 from rpython.jit.codewriter.format import unformat_assembler
@@ -66,11 +66,16 @@
         return index + 3
 
 class RebuildingResumeReader(AbstractResumeReader):
+    def unpack(self, r):
+        tag, index = self.decode(r)
+        assert tag == TAGBOX
+        return index
+    
     def finish(self):
-        return [f.registers for f in self.framestack]
+        return [[self.unpack(r) for r in f.registers] for f in self.framestack]
 
-def rebuild_locs_from_resumedata(faildescr):
-    return RebuildingResumeReader().rebuild(faildescr)
+def rebuild_locs_from_resumedata(faildescr, staticdata):
+    return RebuildingResumeReader(staticdata).rebuild(faildescr)
 
 class TestResumeDirect(object):
     def test_box_resume_reader(self):


More information about the pypy-commit mailing list