Author: Maciej Fijalkowski <fij...@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): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit