[pypy-svn] r69903 - pypy/branch/virtual-forcing/pypy/jit/metainterp/test

arigo at codespeak.net arigo at codespeak.net
Fri Dec 4 20:06:40 CET 2009


Author: arigo
Date: Fri Dec  4 20:06:37 2009
New Revision: 69903

Modified:
   pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py
Log:
Add a failing test about virtualizables.


Modified: pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py
==============================================================================
--- pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py	(original)
+++ pypy/branch/virtual-forcing/pypy/jit/metainterp/test/test_virtualizable.py	Fri Dec  4 20:06:37 2009
@@ -871,6 +871,43 @@
         res = self.meta_interp(main, [123], policy=StopAtXPolicy(g))
         assert res == main(123)
 
+    def test_external_write_sometimes(self):
+        jitdriver = JitDriver(greens = [], reds = ['frame'],
+                              virtualizables = ['frame'])
+        
+        class Frame(object):
+            _virtualizable2_ = ['x', 'y']
+        class SomewhereElse:
+            pass
+        somewhere_else = SomewhereElse()
+
+        def g():
+            somewhere_else.counter += 1
+            if somewhere_else.counter == 70:
+                debug_print(lltype.Void, '-+-+-+-+- external write: 7000')
+                somewhere_else.top_frame.y = 7000
+                result = 2
+            else:
+                result = 1
+            return result
+
+        def f(n):
+            frame = Frame()
+            frame.x = n
+            frame.y = 10
+            somewhere_else.counter = 0
+            somewhere_else.top_frame = frame
+            while frame.x > 0:
+                jitdriver.can_enter_jit(frame=frame)
+                jitdriver.jit_merge_point(frame=frame)
+                frame.x -= g()
+                frame.y += 1
+            return frame.y
+
+        res = self.meta_interp(f, [123], policy=StopAtXPolicy(g))
+        py.test.skip("in-progress")
+        assert res == f(123)
+
     def test_promote_index_in_virtualizable_list(self):
         jitdriver = JitDriver(greens = [], reds = ['frame', 'n'],
                               virtualizables = ['frame'])



More information about the Pypy-commit mailing list