Author: Carl Friedrich Bolz <cfb...@gmx.de> Branch: Changeset: r47685:53e042d23be8 Date: 2011-09-29 17:33 +0200 http://bitbucket.org/pypy/pypy/changeset/53e042d23be8/
Log: a failing test for the interaction of the JIT with tagged pointers diff --git a/pypy/jit/metainterp/test/test_ajit.py b/pypy/jit/metainterp/test/test_ajit.py --- a/pypy/jit/metainterp/test/test_ajit.py +++ b/pypy/jit/metainterp/test/test_ajit.py @@ -3410,4 +3410,56 @@ class TestLLtype(BaseLLtypeTests, LLJitMixin): - pass + def test_tagged(self): + py.test.skip("implement me") + from pypy.rlib.objectmodel import UnboxedValue + class Base(object): + __slots__ = () + + class Int(UnboxedValue, Base): + __slots__ = ["a"] + + def is_pos(self): + return self.a > 0 + + def dec(self): + return Int(self.a - 1) + + + class Float(Base): + def __init__(self, a): + self.a = a + + def is_pos(self): + return self.a > 0 + + def dec(self): + return Float(self.a - 1) + + driver = JitDriver(greens=['pc', 's'], reds=['o']) + + def main(fl, n, s): + if s: + s = "--j" + else: + s = "---j" + if fl: + o = Float(float(n)) + else: + o = Int(n) + pc = 0 + while True: + driver.jit_merge_point(s=s, pc=pc, o=o) + c = s[pc] + if c == "j": + driver.can_enter_jit(s=s, pc=pc, o=o) + if o.is_pos(): + pc = 0 + continue + else: + break + elif c == "-": + o = o.dec() + pc += 1 + return pc + res = self.meta_interp(main, [False, 100, True], taggedpointers=True) diff --git a/pypy/jit/metainterp/warmspot.py b/pypy/jit/metainterp/warmspot.py --- a/pypy/jit/metainterp/warmspot.py +++ b/pypy/jit/metainterp/warmspot.py @@ -53,6 +53,8 @@ extraconfigopts = {'translation.list_comprehension_operations': True} else: extraconfigopts = {} + if kwds.pop("taggedpointers", False): + extraconfigopts["translation.taggedpointers"] = True interp, graph = get_interpreter(function, args, backendopt=False, # will be done below type_system=type_system, _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit