Author: Maciej Fijalkowski <[email protected]>
Branch: imrpove-custom-gc-tracing
Changeset: r60193:7d6bb887766f
Date: 2013-01-19 11:46 +0200
http://bitbucket.org/pypy/pypy/changeset/7d6bb887766f/
Log: a bit of shuffling before giving up
diff --git a/pypy/rpython/lltypesystem/opimpl.py
b/pypy/rpython/lltypesystem/opimpl.py
--- a/pypy/rpython/lltypesystem/opimpl.py
+++ b/pypy/rpython/lltypesystem/opimpl.py
@@ -648,7 +648,7 @@
pass
def op_gc_call_custom_trace(gc, *args):
- gc._call_custom_trace(*args)
+ gc._call_custom_trace_body(*args)
def op_shrink_array(array, smallersize):
return False
diff --git a/pypy/rpython/memory/gc/base.py b/pypy/rpython/memory/gc/base.py
--- a/pypy/rpython/memory/gc/base.py
+++ b/pypy/rpython/memory/gc/base.py
@@ -210,7 +210,7 @@
i += 1
trace._annspecialcase_ = 'specialize:arg(2)'
- def _call_custom_trace(self, obj, typeid, callback, arg):
+ def _call_custom_trace_body(self, obj, typeid, callback, arg):
#def wrapper(item, arg):
# if self.is_valid_gc_object(item):
# callback(item, arg)
@@ -219,6 +219,12 @@
if typeid == obj_typeid:
func(obj, callback, arg)
+
+ @specialize.arg(3)
+ def _call_custom_trace(self, obj, typeid, callback, arg):
+ llop.gc_call_custom_trace(lltype.Void, self, obj, typeid, callback,
+ arg)
+
def _trace_slow_path(self, obj, callback, arg):
typeid = self.get_type_id(obj)
if self.has_gcptr_in_varsize(typeid):
@@ -238,8 +244,7 @@
if self.has_custom_trace(typeid):
# an obscure hack to flow those only when we
# actually have all typeids
- llop.gc_call_custom_trace(lltype.Void, self, obj, typeid, callback,
- arg)
+ self._call_custom_trace(obj, typeid, callback, arg)
_trace_slow_path._annspecialcase_ = 'specialize:arg(2)'
def trace_partial(self, obj, start, stop, callback, arg):
diff --git a/pypy/rpython/memory/gctransform/framework.py
b/pypy/rpython/memory/gctransform/framework.py
--- a/pypy/rpython/memory/gctransform/framework.py
+++ b/pypy/rpython/memory/gctransform/framework.py
@@ -889,6 +889,8 @@
resultvar=op.result)
def gct_gc_call_custom_trace(self, hop):
+ import pdb
+ pdb.set_trace()
args = hop.spaceop.args
args[3].concretetype
hop.genop('direct_call', [])
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit