Author: Armin Rigo <ar...@tunes.org>
Branch: 
Changeset: r72086:e2b1cc741f76
Date: 2014-06-17 10:01 +0200
http://bitbucket.org/pypy/pypy/changeset/e2b1cc741f76/

Log:    Fix the test

diff --git a/rpython/jit/metainterp/test/test_heapcache.py 
b/rpython/jit/metainterp/test/test_heapcache.py
--- a/rpython/jit/metainterp/test/test_heapcache.py
+++ b/rpython/jit/metainterp/test/test_heapcache.py
@@ -1,6 +1,6 @@
 from rpython.jit.metainterp.heapcache import HeapCache
 from rpython.jit.metainterp.resoperation import rop
-from rpython.jit.metainterp.history import ConstInt, BoxInt
+from rpython.jit.metainterp.history import ConstInt, BoxInt, BasicFailDescr
 
 box1 = "box1"
 box2 = "box2"
@@ -550,7 +550,7 @@
         assert h.is_unescaped(box2)
         assert h.getfield(box1, descr1) is box2
 
-    def test_bug_heap_cache_is_cleared_but_not_is_unescaped(self):
+    def test_bug_heap_cache_is_cleared_but_not_is_unescaped_1(self):
         # bug if only the getfield() link is cleared (heap_cache) but not
         # the is_unescaped() flags: we can do later a GETFIELD(box1) which
         # will give us a fresh box3, which is actually equal to box2.  This
@@ -564,6 +564,27 @@
         h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
         assert h.getfield(box1, descr1) is box2
         h.invalidate_caches(rop.CALL_MAY_FORCE, None, [])
+        assert not h.is_unescaped(box1)
+        assert not h.is_unescaped(box2)
+        assert h.getfield(box1, descr1) is None
+
+    def test_bug_heap_cache_is_cleared_but_not_is_unescaped_2(self):
+        h = HeapCache()
+        h.new(box1)
+        h.new(box2)
+        h.setfield(box1, box2, descr1)
+        h.invalidate_caches(rop.SETFIELD_GC, None, [box1, box2])
+        assert h.getfield(box1, descr1) is box2
+        descr = BasicFailDescr()
+        class XTra:
+            oopspecindex = 0
+            OS_ARRAYCOPY = 42
+            extraeffect = 5
+            EF_LOOPINVARIANT = 1
+            EF_ELIDABLE_CANNOT_RAISE = 2
+            EF_ELIDABLE_CAN_RAISE = 3
+        descr.get_extra_info = XTra
+        h.invalidate_caches(rop.CALL, descr, [])
         assert h.is_unescaped(box1)
         assert h.is_unescaped(box2)
         assert h.getfield(box1, descr1) is box2
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to