[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