[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