[pypy-svn] r72699 - in pypy/branch/fix-64/pypy/rpython/memory: gc test
arigo at codespeak.net
arigo at codespeak.net
Wed Mar 24 12:08:26 CET 2010
Author: arigo
Date: Wed Mar 24 12:08:24 2010
New Revision: 72699
Modified:
pypy/branch/fix-64/pypy/rpython/memory/gc/generation.py
pypy/branch/fix-64/pypy/rpython/memory/gc/hybrid.py
pypy/branch/fix-64/pypy/rpython/memory/test/test_gc.py
pypy/branch/fix-64/pypy/rpython/memory/test/test_transformed_gc.py
Log:
Revert r72698, and fix the issue more generally by giving
small sizes that are expressed in multiples of the word size.
Modified: pypy/branch/fix-64/pypy/rpython/memory/gc/generation.py
==============================================================================
--- pypy/branch/fix-64/pypy/rpython/memory/gc/generation.py (original)
+++ pypy/branch/fix-64/pypy/rpython/memory/gc/generation.py Wed Mar 24 12:08:24 2010
@@ -8,9 +8,11 @@
from pypy.rlib.objectmodel import free_non_gc_object
from pypy.rlib.debug import ll_assert
from pypy.rlib.debug import debug_print, debug_start, debug_stop
-from pypy.rlib.rarithmetic import intmask
+from pypy.rlib.rarithmetic import intmask, LONG_BIT
from pypy.rpython.lltypesystem.lloperation import llop
+WORD = LONG_BIT // 8
+
# The following flag is never set on young objects, i.e. the ones living
# in the nursery. It is initially set on all prebuilt and old objects,
# and gets cleared by the write_barrier() when we write in them a
@@ -47,10 +49,10 @@
nursery_hash_base = -1
def __init__(self, config, chunk_size=DEFAULT_CHUNK_SIZE,
- nursery_size=128,
- min_nursery_size=128,
+ nursery_size=32*WORD,
+ min_nursery_size=32*WORD,
auto_nursery_size=False,
- space_size=4096,
+ space_size=1024*WORD,
max_space_size=sys.maxint//2+1):
SemiSpaceGC.__init__(self, config, chunk_size = chunk_size,
space_size = space_size,
Modified: pypy/branch/fix-64/pypy/rpython/memory/gc/hybrid.py
==============================================================================
--- pypy/branch/fix-64/pypy/rpython/memory/gc/hybrid.py (original)
+++ pypy/branch/fix-64/pypy/rpython/memory/gc/hybrid.py Wed Mar 24 12:08:24 2010
@@ -1,6 +1,6 @@
import sys
from pypy.rpython.memory.gc.semispace import SemiSpaceGC
-from pypy.rpython.memory.gc.generation import GenerationGC
+from pypy.rpython.memory.gc.generation import GenerationGC, WORD
from pypy.rpython.memory.gc.semispace import GCFLAG_EXTERNAL, GCFLAG_FORWARDED
from pypy.rpython.memory.gc.semispace import GCFLAG_HASHMASK
from pypy.rpython.memory.gc.generation import GCFLAG_NO_YOUNG_PTRS
@@ -89,8 +89,8 @@
# condition: large_object <= large_object_gcptrs < min_nursery_size/4
def __init__(self, *args, **kwds):
- large_object = kwds.pop('large_object', 24)
- large_object_gcptrs = kwds.pop('large_object_gcptrs', 32)
+ large_object = kwds.pop('large_object', 6*WORD)
+ large_object_gcptrs = kwds.pop('large_object_gcptrs', 8*WORD)
self.generation3_collect_threshold = kwds.pop(
'generation3_collect_threshold', GENERATION3_COLLECT_THRESHOLD)
GenerationGC.__init__(self, *args, **kwds)
Modified: pypy/branch/fix-64/pypy/rpython/memory/test/test_gc.py
==============================================================================
--- pypy/branch/fix-64/pypy/rpython/memory/test/test_gc.py (original)
+++ pypy/branch/fix-64/pypy/rpython/memory/test/test_gc.py Wed Mar 24 12:08:24 2010
@@ -1,7 +1,6 @@
import py
import sys
-#from pypy.rpython.memory.support import INT_SIZE
from pypy.rpython.memory import gcwrapper
from pypy.rpython.memory.test import snippet
from pypy.rpython.test.test_llinterp import get_interpreter
@@ -12,6 +11,10 @@
from pypy.rlib.objectmodel import compute_unique_id, keepalive_until_here
from pypy.rlib import rgc
from pypy.rlib.rstring import StringBuilder
+from pypy.rlib.rarithmetic import LONG_BIT
+
+WORD = LONG_BIT // 8
+
def stdout_ignore_ll_functions(msg):
strmsg = str(msg)
@@ -436,7 +439,7 @@
assert res == 42
def test_can_move(self):
- TP = lltype.GcArray(lltype.UniChar)
+ TP = lltype.GcArray(lltype.Float)
def func():
return rgc.can_move(lltype.malloc(TP, 1))
assert self.interpret(func, []) == self.GC_CAN_MOVE
@@ -629,7 +632,7 @@
GC_CAN_SHRINK_ARRAY = True
class TestGrowingSemiSpaceGC(TestSemiSpaceGC):
- GC_PARAMS = {'space_size': 64}
+ GC_PARAMS = {'space_size': 16*WORD}
class TestGenerationalGC(TestSemiSpaceGC):
from pypy.rpython.memory.gc.generation import GenerationGC as GCClass
@@ -641,7 +644,7 @@
py.test.skip("Not implemented yet")
class TestMarkCompactGCGrowing(TestMarkCompactGC):
- GC_PARAMS = {'space_size': 64}
+ GC_PARAMS = {'space_size': 16*WORD}
class TestHybridGC(TestGenerationalGC):
from pypy.rpython.memory.gc.hybrid import HybridGC as GCClass
@@ -716,11 +719,11 @@
GC_CAN_MOVE = False # with this size of heap, stuff gets allocated
# in 3rd gen.
GC_CANNOT_MALLOC_NONMOVABLE = False
- GC_PARAMS = {'space_size': 192,
- 'min_nursery_size': 48,
- 'nursery_size': 48,
- 'large_object': 12,
- 'large_object_gcptrs': 12,
+ GC_PARAMS = {'space_size': 48*WORD,
+ 'min_nursery_size': 12*WORD,
+ 'nursery_size': 12*WORD,
+ 'large_object': 3*WORD,
+ 'large_object_gcptrs': 3*WORD,
'generation3_collect_threshold': 5,
}
Modified: pypy/branch/fix-64/pypy/rpython/memory/test/test_transformed_gc.py
==============================================================================
--- pypy/branch/fix-64/pypy/rpython/memory/test/test_transformed_gc.py (original)
+++ pypy/branch/fix-64/pypy/rpython/memory/test/test_transformed_gc.py Wed Mar 24 12:08:24 2010
@@ -1,6 +1,6 @@
import py
import sys
-import struct, inspect
+import inspect
from pypy.translator.c import gc
from pypy.annotation import model as annmodel
from pypy.annotation import policy as annpolicy
@@ -14,8 +14,9 @@
from pypy import conftest
from pypy.rlib.rstring import StringBuilder
from pypy.rlib.objectmodel import keepalive_until_here
+from pypy.rlib.rarithmetic import LONG_BIT
-INT_SIZE = struct.calcsize("i") # only for estimates
+WORD = LONG_BIT // 8
def rtype(func, inputtypes, specialize=True, gcname='ref', stacklessgc=False,
@@ -219,7 +220,7 @@
run, statistics = self.runner("llinterp_lists", statistics=True)
run([])
heap_size = self.heap_usage(statistics)
- assert heap_size < 16000 * INT_SIZE / 4 # xxx
+ assert heap_size < 16000 * WORD / 4 # xxx
def define_llinterp_tuples(cls):
def malloc_a_lot():
@@ -239,7 +240,7 @@
run, statistics = self.runner("llinterp_tuples", statistics=True)
run([])
heap_size = self.heap_usage(statistics)
- assert heap_size < 16000 * INT_SIZE / 4 # xxx
+ assert heap_size < 16000 * WORD / 4 # xxx
def skipdefine_global_list(cls):
gl = []
@@ -275,7 +276,7 @@
res = run([100, 0])
assert res == len(''.join([str(x) for x in range(100)]))
heap_size = self.heap_usage(statistics)
- assert heap_size < 16000 * INT_SIZE / 4 # xxx
+ assert heap_size < 16000 * WORD / 4 # xxx
def define_nongc_static_root(cls):
T1 = lltype.GcStruct("C", ('x', lltype.Signed))
@@ -883,7 +884,7 @@
gcname = "marksweep"
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
- GC_PARAMS = {'start_heap_size': 4096 }
+ GC_PARAMS = {'start_heap_size': 1024*WORD }
root_stack_depth = 200
@@ -1121,7 +1122,7 @@
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.marksweep import PrintingMarkSweepGC as GCClass
- GC_PARAMS = {'start_heap_size': 4096 }
+ GC_PARAMS = {'start_heap_size': 1024*WORD }
root_stack_depth = 200
class TestSemiSpaceGC(GenericMovingGCTests):
@@ -1131,7 +1132,7 @@
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.semispace import SemiSpaceGC as GCClass
- GC_PARAMS = {'space_size': 2048}
+ GC_PARAMS = {'space_size': 512*WORD}
root_stack_depth = 200
class TestMarkCompactGC(GenericMovingGCTests):
@@ -1143,7 +1144,7 @@
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.markcompact import MarkCompactGC as GCClass
- GC_PARAMS = {'space_size': 2048}
+ GC_PARAMS = {'space_size': 512*WORD}
root_stack_depth = 200
class TestGenerationGC(GenericMovingGCTests):
@@ -1154,8 +1155,8 @@
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.generation import GenerationGC as \
GCClass
- GC_PARAMS = {'space_size': 2048,
- 'nursery_size': 128}
+ GC_PARAMS = {'space_size': 512*WORD,
+ 'nursery_size': 32*WORD}
root_stack_depth = 200
def define_weakref_across_minor_collection(cls):
@@ -1351,8 +1352,8 @@
self.__ready = False # collecting here is expected
GenerationGC._teardown(self)
- GC_PARAMS = {'space_size': 2048,
- 'nursery_size': 512}
+ GC_PARAMS = {'space_size': 512*WORD,
+ 'nursery_size': 128*WORD}
root_stack_depth = 200
def define_working_nursery(cls):
@@ -1382,9 +1383,9 @@
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.hybrid import HybridGC as GCClass
- GC_PARAMS = {'space_size': 2048,
- 'nursery_size': 128,
- 'large_object': 32}
+ GC_PARAMS = {'space_size': 512*WORD,
+ 'nursery_size': 32*WORD,
+ 'large_object': 8*WORD}
root_stack_depth = 200
def define_ref_from_rawmalloced_to_regular(cls):
@@ -1522,7 +1523,7 @@
gcname = "marksweep"
class gcpolicy(gc.FrameworkGcPolicy):
class transformerclass(framework.FrameworkGCTransformer):
- GC_PARAMS = {'start_heap_size': 4096 }
+ GC_PARAMS = {'start_heap_size': 1024*WORD }
root_stack_depth = 200
class TestHybridTaggedPointerGC(TaggedPointerGCTests):
@@ -1532,6 +1533,6 @@
class transformerclass(framework.FrameworkGCTransformer):
from pypy.rpython.memory.gc.generation import GenerationGC as \
GCClass
- GC_PARAMS = {'space_size': 2048,
- 'nursery_size': 128}
+ GC_PARAMS = {'space_size': 512*WORD,
+ 'nursery_size': 32*WORD}
root_stack_depth = 200
More information about the Pypy-commit
mailing list