Author: Maciej Fijalkowski <fij...@gmail.com> Branch: kill-gen-store-back-in Changeset: r62773:de81399b8ba6 Date: 2013-03-25 17:28 -0700 http://bitbucket.org/pypy/pypy/changeset/de81399b8ba6/
Log: write a test diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py --- a/rpython/jit/backend/test/runner_test.py +++ b/rpython/jit/backend/test/runner_test.py @@ -348,7 +348,7 @@ i0 = BoxInt() class UntouchableFailDescr(AbstractFailDescr): final_descr = True - + def __setattr__(self, name, value): if (name == 'index' or name == '_carry_around_for_tests' or name == '_TYPE' or name == '_cpu'): @@ -3375,7 +3375,7 @@ calldescr = self.cpu.calldescrof(FUNC, FUNC.ARGS, FUNC.RESULT, effectinfo) testcases = [(4.0, 2.0), (6.25, 2.5)] for arg, expected in testcases: - res = self.execute_operation(rop.CALL, + res = self.execute_operation(rop.CALL, [funcbox, boxfloat(arg)], 'float', descr=calldescr) assert res.getfloat() == expected @@ -3729,7 +3729,7 @@ # memory assert values[0] == 0 - def test_compile_bridge_while_running(self): + def test_compile_bridge_while_running(self): def func(): bridge = parse(""" [i1, i2, px] @@ -3776,9 +3776,9 @@ func2_ptr = llhelper(FPTR2, func2) calldescr2 = cpu.calldescrof(FUNC2, FUNC2.ARGS, FUNC2.RESULT, EffectInfo.MOST_GENERAL) - + faildescr = BasicFailDescr(0) - + looptoken = JitCellToken() loop = parse(""" [i0, i1, i2] @@ -3794,7 +3794,7 @@ if not isinstance(self.cpu, AbstractLLCPU): py.test.skip("pointless test on non-asm") - + frame = lltype.cast_opaque_ptr(jitframe.JITFRAMEPTR, frame) assert len(frame.jf_frame) == frame.jf_frame_info.jfi_frame_depth ref = self.cpu.get_ref_value(frame, 9) @@ -3856,9 +3856,33 @@ 'calldescr': calldescr, 'faildescr': faildescr, 'finaldescr2': BasicFinalDescr(1)}) - + self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken) frame = self.cpu.execute_token(looptoken, 1, 2, 3) descr = self.cpu.get_latest_descr(frame) assert descr.identifier == 42 assert not self.cpu.grab_exc_value(frame) + + def test_force_virtualizable(self): + + class FakeVinfo(object): + # for llgraph + def clear_vable_token(self, token): + lltype.cast_opaque_ptr(lltype.Ptr(S), token).x = 18 + + S = lltype.GcStruct('x', ('x', lltype.Signed)) + + pdescr = self.cpu.fielddescrof(S, 'x') + pdescr.vinfo = FakeVinfo() + loop = parse(""" + [p0] + force_virtualizable(p0, descr=pdescr) + i1 = getfield_gc(p0, descr=pdescr) + finish(i1) + """, namespace={'pdescr': pdescr}) + looptoken = JitCellToken() + self.cpu.compile_loop(loop.inputargs, loop.operations, looptoken) + s = lltype.malloc(S) + s.x = 13 + frame = self.cpu.execute_token(looptoken, lltype.cast_opaque_ptr(llmemory.GCREF, s)) + assert self.cpu.get_int_value(frame, 0) == 18 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit