[pypy-svn] r54038 - pypy/dist/pypy/rpython/memory/gc
arigo at codespeak.net
arigo at codespeak.net
Wed Apr 23 12:34:34 CEST 2008
Author: arigo
Date: Wed Apr 23 12:34:32 2008
New Revision: 54038
Modified:
pypy/dist/pypy/rpython/memory/gc/base.py
pypy/dist/pypy/rpython/memory/gc/generation.py
pypy/dist/pypy/rpython/memory/gc/hybrid.py
pypy/dist/pypy/rpython/memory/gc/marksweep.py
pypy/dist/pypy/rpython/memory/gc/semispace.py
Log:
Move the translation parameters of each GC out of base.py
and into each GC class.
Modified: pypy/dist/pypy/rpython/memory/gc/base.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/base.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/base.py Wed Apr 23 12:34:32 2008
@@ -269,31 +269,19 @@
"""
if config.translation.gctransformer != "framework": # for tests
config.translation.gc = "marksweep" # crash if inconsistent
- if config.translation.gc == "marksweep":
- GC_PARAMS = {'start_heap_size': 8*1024*1024} # XXX adjust
- from pypy.rpython.memory.gc.marksweep import MarkSweepGC
- return MarkSweepGC, GC_PARAMS
- if config.translation.gc == "statistics":
- GC_PARAMS = {'start_heap_size': 8*1024*1024} # XXX adjust
- from pypy.rpython.memory.gc.marksweep import PrintingMarkSweepGC
- return PrintingMarkSweepGC, GC_PARAMS
- elif config.translation.gc == "semispace":
- GC_PARAMS = {'space_size': 8*1024*1024} # XXX adjust
- from pypy.rpython.memory.gc.semispace import SemiSpaceGC
- return SemiSpaceGC, GC_PARAMS
- elif config.translation.gc in ("generation", "hybrid"):
- GC_PARAMS = {'space_size': 8*1024*1024, # XXX adjust
- 'nursery_size': 896*1024,
- 'min_nursery_size': 48*1024,
- 'auto_nursery_size': True}
- if config.translation.gc == "generation":
- from pypy.rpython.memory.gc.generation import GenerationGC
- return GenerationGC, GC_PARAMS
- else:
- GC_PARAMS['large_object'] = 1024 # XXX adjust
- GC_PARAMS['large_object_gcptrs'] = 8192 # XXX adjust
- from pypy.rpython.memory.gc.hybrid import HybridGC
- return HybridGC, GC_PARAMS
- else:
+
+ classes = {"marksweep": "marksweep.MarkSweepGC",
+ "statistics": "marksweep.PrintingMarkSweepGC",
+ "semispace": "semispace.SemiSpaceGC",
+ "generation": "generation.GenerationGC",
+ "hybrid": "hybrid.HybridGC",
+ }
+ try:
+ modulename, classname = classes[config.translation.gc].split('.')
+ except KeyError:
raise ValueError("unknown value for translation.gc: %r" % (
config.translation.gc,))
+ module = __import__("pypy.rpython.memory.gc." + modulename,
+ globals(), locals(), [classname])
+ GCClass = getattr(module, classname)
+ return GCClass, GCClass.TRANSLATION_PARAMS
Modified: pypy/dist/pypy/rpython/memory/gc/generation.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/generation.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/generation.py Wed Apr 23 12:34:32 2008
@@ -33,6 +33,13 @@
prebuilt_gc_objects_are_static_roots = False
first_unused_gcflag = SemiSpaceGC.first_unused_gcflag << 2
+ # the following values override the default arguments of __init__ when
+ # translating to a real backend.
+ TRANSLATION_PARAMS = {'space_size': 8*1024*1024, # XXX adjust
+ 'nursery_size': 896*1024,
+ 'min_nursery_size': 48*1024,
+ 'auto_nursery_size': True}
+
def __init__(self, chunk_size=DEFAULT_CHUNK_SIZE,
nursery_size=128,
min_nursery_size=128,
Modified: pypy/dist/pypy/rpython/memory/gc/hybrid.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/hybrid.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/hybrid.py Wed Apr 23 12:34:32 2008
@@ -16,6 +16,12 @@
"""
first_unused_gcflag = GenerationGC.first_unused_gcflag << 1
+ # the following values override the default arguments of __init__ when
+ # translating to a real backend.
+ TRANSLATION_PARAMS = GenerationGC.TRANSLATION_PARAMS.copy()
+ TRANSLATION_PARAMS['large_object'] = 1024 # XXX adjust
+ TRANSLATION_PARAMS['large_object_gcptrs'] = 8192 # XXX adjust
+
def __init__(self, *args, **kwds):
large_object = kwds.pop('large_object', 24)
large_object_gcptrs = kwds.pop('large_object_gcptrs', 32)
Modified: pypy/dist/pypy/rpython/memory/gc/marksweep.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/marksweep.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/marksweep.py Wed Apr 23 12:34:32 2008
@@ -39,6 +39,10 @@
POOLNODE.become(lltype.Struct('gc_pool_node', ('linkedlist', HDRPTR),
('nextnode', POOLNODEPTR)))
+ # the following values override the default arguments of __init__ when
+ # translating to a real backend.
+ TRANSLATION_PARAMS = {'start_heap_size': 8*1024*1024} # XXX adjust
+
def __init__(self, chunk_size=DEFAULT_CHUNK_SIZE, start_heap_size=4096):
self.heap_usage = 0 # at the end of the latest collection
self.bytes_malloced = 0 # since the latest collection
Modified: pypy/dist/pypy/rpython/memory/gc/semispace.py
==============================================================================
--- pypy/dist/pypy/rpython/memory/gc/semispace.py (original)
+++ pypy/dist/pypy/rpython/memory/gc/semispace.py Wed Apr 23 12:34:32 2008
@@ -38,6 +38,10 @@
('forw', llmemory.Address))
FORWARDSTUBPTR = lltype.Ptr(FORWARDSTUB)
+ # the following values override the default arguments of __init__ when
+ # translating to a real backend.
+ TRANSLATION_PARAMS = {'space_size': 8*1024*1024} # XXX adjust
+
def __init__(self, chunk_size=DEFAULT_CHUNK_SIZE, space_size=4096,
max_space_size=sys.maxint//2+1):
MovingGCBase.__init__(self)
More information about the Pypy-commit
mailing list