[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