Author: Lin Cheng <[email protected]>
Branch: py3.6
Changeset: r98331:574325fb0c26
Date: 2019-12-19 13:34 -0500
http://bitbucket.org/pypy/pypy/changeset/574325fb0c26/
Log: add a test of captured locals in pypyjit/test_pypy_c
diff --git a/pypy/module/pypyjit/test_pypy_c/test_capture_locals.py
b/pypy/module/pypyjit/test_pypy_c/test_capture_locals.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/pypyjit/test_pypy_c/test_capture_locals.py
@@ -0,0 +1,41 @@
+from pypy.module.pypyjit.test_pypy_c.test_00_model import BaseTestPyPyC
+
+
+class TestCaptureLocals(BaseTestPyPyC):
+ def test_capture_locals(self):
+ def main(n):
+ num = 42
+ i = 0
+ acc = 0
+ src = '''
+while i < n:
+ acc += num
+ i += 1
+'''
+ exec(src)
+ return acc
+
+ log = self.run(main, [500])
+ print (log.result)
+ assert log.result == 0
+ loop, = log.loops_by_filename("<string>")
+ print (loop)
+ assert loop.match("""
+ i41 = instance_ptr_eq(ConstPtr(ptr18), p16)
+ guard_false(i41, descr=...)
+ guard_not_invalidated(descr=...)
+ i43 = int_lt(i35, 500)
+ guard_true(i43, descr=...)
+ i45 = getfield_gc_i(ConstPtr(ptr44), descr=...)
+ i47 = int_add_ovf(i45, 42)
+ guard_no_overflow(descr=...)
+ setfield_gc(ConstPtr(ptr48), i47, descr=...)
+ i50 = getfield_gc_i(ConstPtr(ptr49), descr=...)
+ i52 = int_add_ovf(i50, 1)
+ guard_no_overflow(descr=...)
+ i54 = getfield_raw_i(..., descr=...)
+ setfield_gc(ConstPtr(ptr55), i52, descr=...)
+ i57 = int_lt(i54, 0)
+ guard_false(i57, descr=...)
+ jump(..., descr=...)
+ """)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit