[pypy-svn] r69056 - in pypy/trunk/pypy/jit/backend: cli llgraph llsupport llsupport/test
cfbolz at codespeak.net
cfbolz at codespeak.net
Sun Nov 8 12:19:48 CET 2009
Author: cfbolz
Date: Sun Nov 8 12:19:47 2009
New Revision: 69056
Modified:
pypy/trunk/pypy/jit/backend/cli/runner.py
pypy/trunk/pypy/jit/backend/llgraph/runner.py
pypy/trunk/pypy/jit/backend/llsupport/descr.py
pypy/trunk/pypy/jit/backend/llsupport/llmodel.py
pypy/trunk/pypy/jit/backend/llsupport/test/test_descr.py
Log:
grumble, this belongs to revision 69055.
Modified: pypy/trunk/pypy/jit/backend/cli/runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/cli/runner.py (original)
+++ pypy/trunk/pypy/jit/backend/cli/runner.py Sun Nov 8 12:19:47 2009
@@ -414,6 +414,9 @@
def get_meth_info(self):
clitype = self.get_delegate_clitype()
return clitype.GetMethod('Invoke')
+
+ def get_extra_info(self):
+ return None # XXX fix me
class MethDescr(AbstractMethDescr):
Modified: pypy/trunk/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llgraph/runner.py (original)
+++ pypy/trunk/pypy/jit/backend/llgraph/runner.py Sun Nov 8 12:19:47 2009
@@ -24,9 +24,13 @@
ofs = -1
typeinfo = '?'
- def __init__(self, ofs, typeinfo='?'):
+ def __init__(self, ofs, typeinfo='?', extrainfo=None):
self.ofs = ofs
self.typeinfo = typeinfo
+ self.extrainfo = extrainfo
+
+ def get_extra_info(self):
+ return self.extrainfo
def __hash__(self):
return hash((self.ofs, self.typeinfo))
@@ -284,9 +288,9 @@
return res
@staticmethod
- def calldescrof(FUNC, ARGS, RESULT):
+ def calldescrof(FUNC, ARGS, RESULT, extrainfo=None):
token = history.getkind(RESULT)
- return Descr(0, token[0])
+ return Descr(0, token[0], extrainfo=extrainfo)
def get_exception(self):
return self.cast_adr_to_int(llimpl.get_exception())
@@ -682,6 +686,9 @@
return boxresult(RESULT, res)
self.callfunc = callfunc
+ def get_extra_info(self):
+ return None # XXX
+
class MethDescr(history.AbstractMethDescr):
callmeth = None
Modified: pypy/trunk/pypy/jit/backend/llsupport/descr.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llsupport/descr.py (original)
+++ pypy/trunk/pypy/jit/backend/llsupport/descr.py Sun Nov 8 12:19:47 2009
@@ -180,8 +180,12 @@
loop_token = None
arg_classes = '' # <-- annotation hack
- def __init__(self, arg_classes):
+ def __init__(self, arg_classes, extrainfo=None):
self.arg_classes = arg_classes # string of "r" and "i" (ref/int)
+ self.extrainfo = extrainfo
+
+ def get_extra_info(self):
+ return self.extrainfo
def instantiate_arg_classes(self):
result = []
@@ -256,7 +260,7 @@
NonGcPtrCallDescr, 'Call', 'get_result_size',
'_returns_a_float')
-def get_call_descr(gccache, ARGS, RESULT):
+def get_call_descr(gccache, ARGS, RESULT, extrainfo=None):
arg_classes = []
for ARG in ARGS:
kind = getkind(ARG)
@@ -267,12 +271,12 @@
raise NotImplementedError('ARG = %r' % (ARG,))
arg_classes = ''.join(arg_classes)
cls = getCallDescrClass(RESULT)
- key = (cls, arg_classes)
+ key = (cls, arg_classes, extrainfo)
cache = gccache._cache_call
try:
return cache[key]
except KeyError:
- calldescr = cls(arg_classes)
+ calldescr = cls(arg_classes, extrainfo)
cache[key] = calldescr
return calldescr
Modified: pypy/trunk/pypy/jit/backend/llsupport/llmodel.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llsupport/llmodel.py (original)
+++ pypy/trunk/pypy/jit/backend/llsupport/llmodel.py Sun Nov 8 12:19:47 2009
@@ -225,8 +225,8 @@
return ofs, size, ptr, float
unpack_arraydescr._always_inline_ = True
- def calldescrof(self, FUNC, ARGS, RESULT):
- return get_call_descr(self.gc_ll_descr, ARGS, RESULT)
+ def calldescrof(self, FUNC, ARGS, RESULT, extrainfo=None):
+ return get_call_descr(self.gc_ll_descr, ARGS, RESULT, extrainfo)
def get_overflow_error(self):
ovf_vtable = self.cast_adr_to_int(self._ovf_error_vtable)
Modified: pypy/trunk/pypy/jit/backend/llsupport/test/test_descr.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llsupport/test/test_descr.py (original)
+++ pypy/trunk/pypy/jit/backend/llsupport/test/test_descr.py Sun Nov 8 12:19:47 2009
@@ -180,6 +180,20 @@
assert descr4.returns_a_float()
assert descr4.arg_classes == "ff"
+def test_call_descr_extra_info():
+ c1 = GcCache(True)
+ T = lltype.GcStruct('T')
+ U = lltype.GcStruct('U', ('x', lltype.Signed))
+ descr1 = get_call_descr(c1, [lltype.Ptr(T)], lltype.Ptr(U), "hello")
+ extrainfo = descr1.get_extra_info()
+ assert extrainfo == "hello"
+ descr2 = get_call_descr(c1, [lltype.Ptr(T)], lltype.Ptr(U), "hello")
+ assert descr1 is descr2
+ descr3 = get_call_descr(c1, [lltype.Ptr(T)], lltype.Ptr(U))
+ extrainfo = descr3.get_extra_info()
+ assert extrainfo is None
+
+
def test_repr_of_descr():
c0 = GcCache(False)
T = lltype.GcStruct('T')
More information about the Pypy-commit
mailing list