Author: Carl Friedrich Bolz <cfb...@gmx.de>
Branch: 
Changeset: r90421:846ed5d2ac16
Date: 2017-02-28 15:00 +0100
http://bitbucket.org/pypy/pypy/changeset/846ed5d2ac16/

Log:    test showing a corner case of the interaction between finalizers and
        heap caching in the JIT

diff --git a/rpython/jit/metainterp/test/test_ajit.py 
b/rpython/jit/metainterp/test/test_ajit.py
--- a/rpython/jit/metainterp/test/test_ajit.py
+++ b/rpython/jit/metainterp/test/test_ajit.py
@@ -4636,3 +4636,28 @@
             return i
 
         self.meta_interp(f, [10])
+
+    @py.test.skip("loops!")
+    def test_finalizer_bug(self):
+        from rpython.rlib import rgc
+        driver = JitDriver(greens=[], reds=[])
+        class Fin(object):
+            @rgc.must_be_light_finalizer
+            def __del__(self):
+                holder[0].field = 7
+        class Un(object):
+            def __init__(self):
+                self.field = 0
+        holder = [Un()]
+
+        def f():
+            while True:
+                driver.jit_merge_point()
+                holder[0].field = 0
+                Fin()
+                if holder[0].field:
+                    break
+            return holder[0].field
+
+        f() # finishes
+        self.meta_interp(f, [])
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to