Author: Carl Friedrich Bolz <[email protected]>
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
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit