[pypy-svn] r32319 - pypy/dist/pypy/rpython/ootypesystem

fijal at codespeak.net fijal at codespeak.net
Thu Sep 14 17:15:01 CEST 2006


Author: fijal
Date: Thu Sep 14 17:15:00 2006
New Revision: 32319

Modified:
   pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
Log:
Fixed caching of s_values.


Modified: pypy/dist/pypy/rpython/ootypesystem/bltregistry.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/bltregistry.py	(original)
+++ pypy/dist/pypy/rpython/ootypesystem/bltregistry.py	Thu Sep 14 17:15:00 2006
@@ -106,7 +106,7 @@
 described = BasicExternal.described
 
 class Analyzer(object):
-    def __init__(self, name, value):
+    def __init__(self, name, value, s_retval, s_args):
         self.name = name
         # dirty hack
         # FIXME: to replace in future
@@ -114,24 +114,17 @@
         #    itervalues = value.args[:-1]
         #else:
         #    itervalues = value.args
-        self.args, self.retval = [i.example for i in value.args], value.retval.example
+        self.args, self.retval = value.args, value.retval
+        self.s_retval = s_retval
+        self.s_args = s_args
         self.value = value
     
     def __call__(self, *args):
-        #for i in xrange(len(args)):
-        #    assert getbookkeeper().valueoftype(self.args[i]).contains(args[i])
-        #if self.retval is None:
-        #    return None
-        ann_retval = getbookkeeper().annotation_from_example(self.retval)
-        
         for i in args:
             if isinstance(i, annmodel.SomePBC):
                 bookkeeper = getbookkeeper()
-                #import pdb;pdb.set_trace()
-                #bookkeeper.pbc_call(i, bookkeeper.build_args("simple_call", [bookkeeper.annotation_from_example(arg) for arg in self.args]))
-        
-                bookkeeper.pbc_call(i, bookkeeper.build_args("simple_call", (ann_retval,)))
-        return ann_retval
+                bookkeeper.pbc_call(i, bookkeeper.build_args("simple_call", (self.s_retval,)))
+        return self.s_retval
 
 class ExternalType(ootype.OOType):
     class_dict = {}
@@ -165,8 +158,9 @@
         for i, val in _methods.iteritems():
             retval = getbookkeeper().annotation_from_example(val.retval.example)
             values = [arg.example for arg in val.args]
-            _signs[i] = MethodDesc(tuple([getbookkeeper().annotation_from_example(j) for j in values]), retval)
-            next = annmodel.SomeBuiltin(Analyzer(i, val), s_self = annmodel.SomeExternalBuiltin(self), methodname = i)
+            s_args = [getbookkeeper().annotation_from_example(j) for j in values]
+            _signs[i] = MethodDesc(tuple(s_args), retval)
+            next = annmodel.SomeBuiltin(Analyzer(i, val, retval, s_args), s_self = annmodel.SomeExternalBuiltin(self), methodname = i)
             next.const = True
             self._fields[i] = next
         self._methods = frozendict(_signs)



More information about the Pypy-commit mailing list