[pypy-svn] r13487 - in pypy/dist/pypy: annotation translator/test
arigo at codespeak.net
arigo at codespeak.net
Thu Jun 16 19:53:01 CEST 2005
Author: arigo
Date: Thu Jun 16 19:52:59 2005
New Revision: 13487
Modified:
pypy/dist/pypy/annotation/bookkeeper.py
pypy/dist/pypy/translator/test/test_annrpython.py
Log:
It seems useful for the rtyper to ask the bookkeeper to record the annotation
given to a attribute read from a set of PBCs.
Modified: pypy/dist/pypy/annotation/bookkeeper.py
==============================================================================
--- pypy/dist/pypy/annotation/bookkeeper.py (original)
+++ pypy/dist/pypy/annotation/bookkeeper.py Thu Jun 16 19:52:59 2005
@@ -380,38 +380,36 @@
access_sets = self.pbc_maximal_access_sets
objects = pbc.prebuiltinstances.keys()
- access = None
- first = None
- change = False
-
+
for obj in objects:
if obj is not None:
first = obj
break
+ else:
+ return SomeImpossibleValue()
+
+ change, rep, access = access_sets.find(first)
+ for obj in objects:
+ if obj is not None:
+ change1, rep, access = access_sets.union(rep, obj)
+ change = change or change1
- if first is not None:
- change, rep, access = access_sets.find(first)
- for obj in objects:
- if obj is not None:
- change1, rep, access = access_sets.union(rep, obj)
- change = change or change1
-
- access.attrs[attr] = True
- position = self.position_key
- access.read_locations[position] = True
+ position = self.position_key
+ access.read_locations[position] = True
actuals = []
+ for c in access.objects:
+ if hasattr(c, attr):
+ actuals.append(self.immutablevalue(getattr(c, attr)))
+ s_result = unionof(*actuals)
- if access:
- for c in access.objects:
- if hasattr(c, attr):
- actuals.append(self.immutablevalue(getattr(c, attr)))
+ access.attrs[attr] = s_result
if change:
for position in access.read_locations:
self.annotator.reflowfromposition(position)
- return unionof(*actuals)
+ return s_result
def consider_pbc_call(self, pbc, shape, spaceop=None, implicit_init=None): # computation done at fix-point
if not isinstance(pbc, SomePBC):
Modified: pypy/dist/pypy/translator/test/test_annrpython.py
==============================================================================
--- pypy/dist/pypy/translator/test/test_annrpython.py (original)
+++ pypy/dist/pypy/translator/test/test_annrpython.py Thu Jun 16 19:52:59 2005
@@ -810,7 +810,7 @@
assert acc1 is acc2 is acc3
assert len(acc1.objects) == 3
- assert acc1.attrs == {'v1': True, 'v2': True}
+ assert dict.fromkeys(acc1.attrs) == {'v1': None, 'v2': None}
assert access_sets[c1] is acc1
py.test.raises(KeyError, "access_sets[object()]")
More information about the Pypy-commit
mailing list