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

arigo at codespeak.net arigo at codespeak.net
Wed Sep 15 10:46:13 CEST 2010


Author: arigo
Date: Wed Sep 15 10:46:12 2010
New Revision: 77079

Modified:
   pypy/branch/gen2-gc/pypy/rpython/memory/gc/test/test_minimarkpage.py
Log:
Finish to fix the tests.


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 10:46:12 2010
@@ -66,8 +66,8 @@
     def link(pageaddr, size_class, size_block, nblocks, nusedblocks):
         llarena.arena_reserve(pageaddr, llmemory.sizeof(PAGE_HEADER))
         page = llmemory.cast_adr_to_ptr(pageaddr, PAGE_PTR)
-        page.nfree = nblocks - nusedblocks
-        page.nuninitialized = page.nfree
+        page.nfree = 0
+        page.nuninitialized = nblocks - nusedblocks
         page.freeblock = pageaddr + hdrsize + nusedblocks * size_block
         page.nextpage = ac.page_for_size[size_class]
         ac.page_for_size[size_class] = page
@@ -96,6 +96,7 @@
         elif c == '#':    # a random full page, not in any linked list
             pass
     #
+    ac.allocate_new_arena = lambda: should_not_allocate_new_arenas
     return ac
 
 
@@ -140,57 +141,49 @@
     assert ac.free_pages == NULL and ac.num_uninitialized_pages == 0
 
 
-def ckob(ac, arena, num_page, pos_obj, obj):
-    pageaddr = arena.arena_base + SHIFT + num_page * ac.page_size
+def chkob(ac, num_page, pos_obj, obj):
+    pageaddr = pagenum(ac, num_page)
     assert obj == pageaddr + hdrsize + pos_obj
 
 
 def test_malloc_common_case():
     pagesize = hdrsize + 7*WORD
     ac = arena_collection_for_test(pagesize, "#23..2 ")
-    a0 = getarena(ac, 0, total=1)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 5, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 1, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 3, 0*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 3, 2*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 3, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 0*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 2*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 6, 0*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 6, 2*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 6, 4*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 1, 4*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 5, 4*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 3, 0*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 3, 2*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 3, 4*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 4, 0*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 4, 2*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 4, 4*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 6, 0*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 6, 2*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 6, 4*WORD, obj)
 
 def test_malloc_mixed_sizes():
     pagesize = hdrsize + 7*WORD
     ac = arena_collection_for_test(pagesize, "#23..2 ")
-    a0 = getarena(ac, 0, total=1)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 5, 4*WORD, obj)
-    obj = ac.malloc(3*WORD); ckob(ac, a0, 2, 3*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 1, 4*WORD, obj)
-    obj = ac.malloc(3*WORD); ckob(ac, a0, 3, 0*WORD, obj)  # 3rd page -> size 3
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 0*WORD, obj)  # 4th page -> size 2
-    obj = ac.malloc(3*WORD); ckob(ac, a0, 3, 3*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 2*WORD, obj)
-    obj = ac.malloc(3*WORD); ckob(ac, a0, 6, 0*WORD, obj)  # 6th page -> size 3
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 4, 4*WORD, obj)
-    obj = ac.malloc(3*WORD); ckob(ac, a0, 6, 3*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 1, 4*WORD, obj)
+    obj = ac.malloc(3*WORD); chkob(ac, 2, 3*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 5, 4*WORD, obj)
+    obj = ac.malloc(3*WORD); chkob(ac, 3, 0*WORD, obj)  # 3rd page -> size 3
+    obj = ac.malloc(2*WORD); chkob(ac, 4, 0*WORD, obj)  # 4th page -> size 2
+    obj = ac.malloc(3*WORD); chkob(ac, 3, 3*WORD, obj)
+    obj = ac.malloc(2*WORD); chkob(ac, 4, 2*WORD, obj)
+    obj = ac.malloc(3*WORD); chkob(ac, 6, 0*WORD, obj)  # 6th page -> size 3
+    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_new_arena():
     pagesize = hdrsize + 7*WORD
-    ac = arena_collection_for_test(pagesize, "#23..2 ")
-    a0 = getarena(ac, 0, total=1)
-    obj = ac.malloc(5*WORD); ckob(ac, a0, 3, 0*WORD, obj)  # 3rd page -> size 5
-    obj = ac.malloc(4*WORD); ckob(ac, a0, 4, 0*WORD, obj)  # 4th page -> size 4
-    obj = ac.malloc(1*WORD); ckob(ac, a0, 6, 0*WORD, obj)  # 6th page -> size 1
-    assert ac.arenas_start == ac.arenas_end == ARENA_NULL  # no more free page
-    obj = ac.malloc(1*WORD); ckob(ac, a0, 6, 1*WORD, obj)
-    obj = ac.malloc(5*WORD)
-    a1 = getarena(ac, 0, total=1)
-    pass;                    ckob(ac, a1, 0, 0*WORD, obj)  # a1/0 -> size 5
-    obj = ac.malloc(1*WORD); ckob(ac, a0, 6, 2*WORD, obj)
-    obj = ac.malloc(5*WORD); ckob(ac, a1, 1, 0*WORD, obj)  # a1/1 -> size 5
-    obj = ac.malloc(1*WORD); ckob(ac, a0, 6, 3*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 5, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a0, 1, 4*WORD, obj)
-    obj = ac.malloc(2*WORD); ckob(ac, a1, 2, 0*WORD, obj)  # a1/2 -> size 2
+    ac = arena_collection_for_test(pagesize, "### ")
+    obj = ac.malloc(2*WORD); chkob(ac, 3, 0*WORD, obj)  # 3rd page -> size 2
+    #
+    del ac.allocate_new_arena    # restore the one from the class
+    arena_size = ac.arena_size
+    obj = ac.malloc(3*WORD)                             # need a new arena
+    assert ac.num_uninitialized_pages == (arena_size // ac.page_size
+                                          - 1    # for start_of_page()
+                                          - 1    # the just-allocated page
+                                          )



More information about the Pypy-commit mailing list