Author: fijal Branch: jit-leaner-frontend Changeset: r82959:a0468c0d2dca Date: 2016-03-11 12:19 +0200 http://bitbucket.org/pypy/pypy/changeset/a0468c0d2dca/
Log: encode positions in link in 2 shorts diff --git a/rpython/jit/metainterp/opencoder.py b/rpython/jit/metainterp/opencoder.py --- a/rpython/jit/metainterp/opencoder.py +++ b/rpython/jit/metainterp/opencoder.py @@ -59,8 +59,8 @@ self.save_pos = -1 size = self._next() if size < 0: - self.save_pos = self.pos - self.pos = -size - 1 + self.save_pos = self.pos + 1 + self.pos = ((-size - 1) << 15) | (self._next()) assert self.pos >= 0 size = self._next() assert size >= 0 @@ -262,7 +262,10 @@ # self._ops[index] = -newtag - 1 def record_snapshot_link(self, pos): - self.append(-pos - 1) + lower = pos & 0x7fff + upper = pos >> 15 + self.append(-upper-1) + self.append(lower) def record_op(self, opnum, argboxes, descr=None): # return an ResOperation instance, ideally die in hell diff --git a/rpython/jit/metainterp/test/test_opencoder.py b/rpython/jit/metainterp/test/test_opencoder.py --- a/rpython/jit/metainterp/test/test_opencoder.py +++ b/rpython/jit/metainterp/test/test_opencoder.py @@ -7,7 +7,7 @@ from rpython.jit.metainterp.test.strategies import lists_of_operations from rpython.jit.metainterp.optimizeopt.test.test_util import BaseTest from rpython.jit.metainterp.history import TreeLoop, AbstractDescr -from hypothesis import given +from hypothesis import given, strategies class JitCode(object): def __init__(self, index): @@ -141,6 +141,13 @@ loop2.operations = l BaseTest.assert_equal(loop1, loop2) + @given(strategies.integers(min_value=0, max_value=2**25)) + def test_packing(self, i): + t = Trace([]) + t.record_snapshot_link(i) + iter = t.get_iter() + assert (((-iter._next() - 1) << 15) | (iter._next())) == i + def test_cut_trace_from(self): i0, i1, i2 = InputArgInt(), InputArgInt(), InputArgInt() t = Trace([i0, i1, i2]) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit