[pypy-svn] r77087 - pypy/branch/gen2-gc/pypy/rpython/memory/gc/test
arigo at codespeak.net
arigo at codespeak.net
Wed Sep 15 14:21:00 CEST 2010
Author: arigo
Date: Wed Sep 15 14:20:58 2010
New Revision: 77087
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:20:58 2010
@@ -320,3 +320,35 @@
pageaddr + hdrsize + 14*WORD
assert ac.free_pages == NULL
assert ac.full_page_for_size[2] == PAGE_NULL
+
+def test_mass_free_half_page_becomes_more_free():
+ pagesize = hdrsize + 24*WORD
+ ac = arena_collection_for_test(pagesize, "/", fill_with_objects=2)
+ page = getpage(ac, 0)
+ assert page.nuninitialized == 4
+ assert page.nfree == 4
+ #
+ ok_to_free = OkToFree(ac, 0.5)
+ ac.mass_free(ok_to_free)
+ assert ok_to_free.seen == {hdrsize + 0*WORD: False,
+ hdrsize + 4*WORD: True,
+ hdrsize + 8*WORD: False,
+ hdrsize + 12*WORD: True}
+ page = getpage(ac, 0)
+ pageaddr = pagenum(ac, 0)
+ assert page == ac.page_for_size[2]
+ assert page.nextpage == PAGE_NULL
+ assert page.nuninitialized == 4
+ assert page.nfree == 6
+ fb = page.freeblock
+ assert fb == pageaddr + hdrsize + 2*WORD
+ assert fb.address[0] == pageaddr + hdrsize + 4*WORD
+ assert fb.address[0].address[0] == pageaddr + hdrsize + 6*WORD
+ assert fb.address[0].address[0].address[0] == \
+ pageaddr + hdrsize + 10*WORD
+ assert fb.address[0].address[0].address[0].address[0] == \
+ pageaddr + hdrsize + 12*WORD
+ assert fb.address[0].address[0].address[0].address[0].address[0] == \
+ pageaddr + hdrsize + 14*WORD
+ assert ac.free_pages == NULL
+ assert ac.full_page_for_size[2] == PAGE_NULL
More information about the Pypy-commit
mailing list