[pypy-svn] r67674 - pypy/trunk/pypy/translator/goal

pedronis at codespeak.net pedronis at codespeak.net
Mon Sep 14 15:39:24 CEST 2009


Author: pedronis
Date: Mon Sep 14 15:39:23 2009
New Revision: 67674

Modified:
   pypy/trunk/pypy/translator/goal/ann_override.py
Log:
mark the 'cached*' fields as immutable in the process

Modified: pypy/trunk/pypy/translator/goal/ann_override.py
==============================================================================
--- pypy/trunk/pypy/translator/goal/ann_override.py	(original)
+++ pypy/trunk/pypy/translator/goal/ann_override.py	Mon Sep 14 15:39:23 2009
@@ -69,10 +69,17 @@
                                                                 srcmodule='<ann_override.wrap>')
                     return funcdesc.cachedgraph((typ, x), builder=builder)
         return funcdesc.cachedgraph(typ)
+
+    def _remember_immutable(pol, t, cached):
+        # for jit benefit
+        if cached not in t._immutable_fields_: # accessed this way just
+                                               # for convenience
+            t._immutable_fields_.append(cached)        
     
     def attach_lookup(pol, t, attr):
         cached = "cached_%s" % attr
         if not t.is_heaptype():
+            pol._remember_immutable(t, cached)
             setattr(t, cached, t._lookup(attr))
             return True
         return False
@@ -80,6 +87,7 @@
     def attach_lookup_in_type_where(pol, t, attr):
         cached = "cached_where_%s" % attr
         if not t.is_heaptype():
+            pol._remember_immutable(t, cached)
             setattr(t, cached, t._lookup_where(attr))
             return True
         return False



More information about the Pypy-commit mailing list