[pypy-svn] r68969 - in pypy/branch/gc-jit-hack/pypy: jit/metainterp rpython/memory/gctransform
arigo at codespeak.net
arigo at codespeak.net
Wed Nov 4 12:02:29 CET 2009
Author: arigo
Date: Wed Nov 4 12:02:29 2009
New Revision: 68969
Modified:
pypy/branch/gc-jit-hack/pypy/jit/metainterp/pyjitpl.py
pypy/branch/gc-jit-hack/pypy/jit/metainterp/warmspot.py
pypy/branch/gc-jit-hack/pypy/rpython/memory/gctransform/framework.py
Log:
Use resize_nursery() in the JIT.
Modified: pypy/branch/gc-jit-hack/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/gc-jit-hack/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/gc-jit-hack/pypy/jit/metainterp/pyjitpl.py Wed Nov 4 12:02:29 2009
@@ -1079,6 +1079,20 @@
def log(self, msg):
debug_print(msg)
+ # ---- tweaking the size of the GC nursery --------
+
+ def enlarge_nursery(self, enlarge):
+ warmrunnerdesc = self.warmrunnerdesc
+ if warmrunnerdesc is not None and warmrunnerdesc.can_resize_nursery:
+ from pypy.rpython.lltypesystem import lltype, lloperation
+ if enlarge:
+ newsize = 10*1024*1024 # XXX a rather custom number
+ if sys.maxint > 2147483647:
+ newsize *= 2
+ else:
+ newsize = 0
+ lloperation.llop.gc_resize_nursery(lltype.Void, newsize)
+
# ____________________________________________________________
class MetaInterpGlobalData(object):
@@ -1367,10 +1381,12 @@
def compile_and_run_once(self, *args):
debug_start('jit-tracing')
self.staticdata._setup_once()
+ self.staticdata.enlarge_nursery(True)
self.create_empty_history()
try:
return self._compile_and_run_once(*args)
finally:
+ self.staticdata.enlarge_nursery(False)
if self.history is None:
debug_stop('jit-blackhole')
else:
@@ -1397,12 +1413,15 @@
must_compile = warmrunnerstate.must_compile_from_failure(key)
if must_compile:
debug_start('jit-tracing')
+ self.staticdata.enlarge_nursery(True)
else:
debug_start('jit-blackhole')
self.initialize_state_from_guard_failure(key, must_compile)
try:
return self._handle_guard_failure(key)
finally:
+ if must_compile:
+ self.staticdata.enlarge_nursery(False)
if self.history is None:
debug_stop('jit-blackhole')
else:
Modified: pypy/branch/gc-jit-hack/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/gc-jit-hack/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/gc-jit-hack/pypy/jit/metainterp/warmspot.py Wed Nov 4 12:02:29 2009
@@ -192,6 +192,8 @@
self.translator = translator
self.rtyper = translator.rtyper
self.gcdescr = gc.get_description(translator.config)
+ self.can_resize_nursery = (
+ translator.config.translation.gctransformer == "framework")
def find_portal(self):
graphs = self.translator.graphs
Modified: pypy/branch/gc-jit-hack/pypy/rpython/memory/gctransform/framework.py
==============================================================================
--- pypy/branch/gc-jit-hack/pypy/rpython/memory/gctransform/framework.py (original)
+++ pypy/branch/gc-jit-hack/pypy/rpython/memory/gctransform/framework.py Wed Nov 4 12:02:29 2009
@@ -806,8 +806,7 @@
def gct_gc_resize_nursery(self, hop):
if not hasattr(self, 'resizenursery_ptr'):
- raise NotImplementedError("gc_resize_nursery: "
- "only for generational gcs")
+ return # only for generational gcs
livevars = self.push_roots(hop)
[v_number] = hop.spaceop.args
hop.genop("direct_call",
More information about the Pypy-commit
mailing list