[pypy-svn] r69376 - pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test

cfbolz at codespeak.net cfbolz at codespeak.net
Wed Nov 18 14:12:55 CET 2009


Author: cfbolz
Date: Wed Nov 18 14:12:55 2009
New Revision: 69376

Modified:
   pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py
Log:
(pedronis, cfbolz): a test (written at the sprint)


Modified: pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py
==============================================================================
--- pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py	(original)
+++ pypy/branch/compress-virtuals-resumedata/pypy/jit/metainterp/test/test_resume.py	Wed Nov 18 14:12:55 2009
@@ -398,6 +398,33 @@
            FakeFrame("code2", 10, -1, c3, b2t, b4t)]
     assert metainterp.framestack == fs2    
 
+def test_rebuild_from_resumedata_two_guards_w_shared_virtuals():
+    b1, b2, b3, b4, b5, b6 = [BoxPtr(), BoxPtr(), BoxInt(), BoxPtr(), BoxInt(), BoxInt()]
+    c1, c2, c3, c4 = [ConstInt(1), ConstInt(2), ConstInt(3),
+                      LLtypeMixin.nodebox.constbox()]
+    storage = Storage()
+    fs = [FakeFrame("code0", 0, -1, c1, b2, b3)]
+    capture_resumedata(fs, None, storage)
+    
+    memo = ResumeDataLoopMemo(LLtypeMixin.cpu)
+    values = {b2: virtual_value(b2, b5, c4)}
+    modifier = ResumeDataVirtualAdder(storage, memo)
+    liveboxes = modifier.finish(values)
+    assert len(storage.rd_virtuals) == 1
+    assert storage.rd_virtuals[0].fieldnums == [tag(len(liveboxes)-1, TAGBOX),
+                                                tag(0, TAGCONST)]
+
+    storage2 = Storage()
+    fs = [FakeFrame("code0", 0, -1, b1, b4, b2)]
+    capture_resumedata(fs, None, storage2)
+    values[b4] = virtual_value(b4, b6, c4)
+    modifier = ResumeDataVirtualAdder(storage2, memo)
+    liveboxes = modifier.finish(values)
+    assert len(storage2.rd_virtuals) == 2
+    assert storage2.rd_virtuals[1].fieldnums == storage.rd_virtuals[0].fieldnums
+    assert storage2.rd_virtuals[1] is storage.rd_virtuals[0]
+    
+
 def test_resumedata_top_recursive_virtuals():
     b1, b2, b3 = [BoxPtr(), BoxPtr(), BoxInt()]
     storage = Storage()



More information about the Pypy-commit mailing list