[pypy-commit] pypy stmgc-c4: Don't use None as category. This should ensure that all
arigo
noreply at buildbot.pypy.org
Sat Sep 7 18:15:51 CEST 2013
Author: Armin Rigo <arigo at tunes.org>
Branch: stmgc-c4
Changeset: r66832:c41af7541a8a
Date: 2013-09-07 14:50 +0200
http://bitbucket.org/pypy/pypy/changeset/c41af7541a8a/
Log: Don't use None as category. This should ensure that all categories
are decreasing over time, eventually reaching a fixed point.
diff --git a/rpython/translator/stm/writebarrier.py b/rpython/translator/stm/writebarrier.py
--- a/rpython/translator/stm/writebarrier.py
+++ b/rpython/translator/stm/writebarrier.py
@@ -58,7 +58,9 @@
self.inputargs_category_per_link = {}
def init_start_block(self):
- self.inputargs_category = [None] * len(self.block.inputargs)
+ from_outside = ['A'] * len(self.block.inputargs)
+ self.inputargs_category_per_link[None] = from_outside
+ self.update_inputargs_category()
def analyze_inside_block(self):
@@ -164,7 +166,8 @@
# make the initial trivial renamings needed to have some precise
# categories for the input args
for v, cat in zip(self.block.inputargs, self.inputargs_category):
- if cat is not None and is_gc_ptr(v.concretetype):
+ if is_gc_ptr(v.concretetype):
+ assert cat is not None
renamings[v] = Renaming(v, cat)
for op in self.block.operations:
@@ -303,14 +306,10 @@
values = self.inputargs_category_per_link.values()
newcats = []
for i in range(len(self.block.inputargs)):
- cat = None
- for output_categories in values:
- cat2 = output_categories[i]
- if cat is None:
- cat = cat2
- elif cat2 is not None:
- cat = min(cat, cat2)
- newcats.append(cat)
+ cats = [output_categories[i] for output_categories in values]
+ if is_gc_ptr(self.block.inputargs[i]):
+ assert None not in cats
+ newcats.append(min(cats))
if newcats != self.inputargs_category:
self.inputargs_category = newcats
return True
More information about the pypy-commit
mailing list