Author: fijal
Branch:
Changeset: r92363:79a3ea5849ca
Date: 2017-09-09 16:59 +0200
http://bitbucket.org/pypy/pypy/changeset/79a3ea5849ca/
Log: bug from #2650
diff --git a/rpython/jit/metainterp/test/test_loop.py
b/rpython/jit/metainterp/test/test_loop.py
--- a/rpython/jit/metainterp/test/test_loop.py
+++ b/rpython/jit/metainterp/test/test_loop.py
@@ -1114,5 +1114,40 @@
# one guard_false got removed
self.check_resops(guard_false=4, guard_true=5)
+ def test_heapcache_bug(self):
+ class W_Object(object):
+ _attrs_ = []
+ class W_Nil(W_Object):
+ _attrs_ = []
+ class W_Cons(W_Object):
+ _attrs_ = ['first', 'rest']
+ _immutable_fields_ = ['first', 'rest']
+ def __init__(self, v1, v2):
+ self.first = v1
+ self.rest = v2
+
+ def reverse(xs):
+ result = W_Nil()
+ while isinstance(xs, W_Cons):
+ result = W_Cons(xs.first, result)
+ xs = xs.rest
+ return result
+
+ driver = JitDriver(reds=['repetitions', 'v'], greens=['pc'],
+ get_printable_location=lambda pc: str(pc))
+ def entry_point():
+ repetitions = 0
+ while repetitions < 10:
+ pc = 0
+ v = W_Nil()
+ while pc < 10:
+ driver.jit_merge_point(v=v, repetitions=repetitions, pc=pc)
+ v = reverse(W_Cons(pc + 1, W_Cons(pc + 2, W_Cons(pc + 3,
W_Cons(pc + 4, W_Nil())))))
+ pc = pc + 1
+ repetitions += 1
+
+ self.meta_interp(entry_point, [])
+
+
class TestLLtype(LoopTest, LLJitMixin):
pass
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit