[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