[pypy-svn] r77088 - pypy/branch/gen2-gc/pypy/rpython/memory/gc/test

arigo at codespeak.net arigo at codespeak.net
Wed Sep 15 14:29:18 CEST 2010


Author: arigo
Date: Wed Sep 15 14:29:17 2010
New Revision: 77088

Modified:
   pypy/branch/gen2-gc/pypy/rpython/memory/gc/test/test_minimarkpage.py
Log:
More test.


Modified: pypy/branch/gen2-gc/pypy/rpython/memory/gc/test/test_minimarkpage.py
==============================================================================
--- pypy/branch/gen2-gc/pypy/rpython/memory/gc/test/test_minimarkpage.py	(original)
+++ pypy/branch/gen2-gc/pypy/rpython/memory/gc/test/test_minimarkpage.py	Wed Sep 15 14:29:17 2010
@@ -95,7 +95,8 @@
                     exec '%s = holeaddr' % prev in globals(), locals()
                     prevhole = holeaddr
                     prev = 'prevhole.address[0]'
-                exec '%s = NULL' % prev in globals(), locals()
+                endaddr = pageaddr + hdrsize + 2*nusedblocks * size_block
+                exec '%s = endaddr' % prev in globals(), locals()
     #
     ac.allocate_new_arena()
     num_initialized_pages = len(pagelayout.rstrip(" "))
@@ -196,6 +197,34 @@
     obj = ac.malloc(2*WORD); chkob(ac, 4, 4*WORD, obj)
     obj = ac.malloc(3*WORD); chkob(ac, 6, 3*WORD, obj)
 
+def test_malloc_from_partial_page():
+    pagesize = hdrsize + 18*WORD
+    ac = arena_collection_for_test(pagesize, "/.", fill_with_objects=2)
+    page = getpage(ac, 0)
+    assert page.nfree == 3
+    assert page.nuninitialized == 3
+    chkob(ac, 0, 2*WORD, page.freeblock)
+    #
+    obj = ac.malloc(2*WORD); chkob(ac, 0,  2*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 0,  6*WORD, obj)
+    assert page.nfree == 1
+    assert page.nuninitialized == 3
+    chkob(ac, 0, 10*WORD, page.freeblock)
+    #
+    obj = ac.malloc(2*WORD); chkob(ac, 0, 10*WORD, obj)
+    assert page.nfree == 0
+    assert page.nuninitialized == 3
+    chkob(ac, 0, 12*WORD, page.freeblock)
+    #
+    obj = ac.malloc(2*WORD); chkob(ac, 0, 12*WORD, obj)
+    assert page.nuninitialized == 2
+    obj = ac.malloc(2*WORD); chkob(ac, 0, 14*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 0, 16*WORD, obj)
+    assert page.nfree == 0
+    assert page.nuninitialized == 0
+    obj = ac.malloc(2*WORD); chkob(ac, 1,  0*WORD, obj)
+
+
 def test_malloc_new_arena():
     pagesize = hdrsize + 7*WORD
     ac = arena_collection_for_test(pagesize, "### ")



More information about the Pypy-commit mailing list