[pypy-commit] pypy bitstring: Make sure we don't build new EffectInfo instances after

arigo pypy.commits at gmail.com
Tue Apr 26 17:04:54 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: bitstring
Changeset: r83921:36636c9ac7e4
Date: 2016-04-26 23:01 +0200
http://bitbucket.org/pypy/pypy/changeset/36636c9ac7e4/

Log:	Make sure we don't build new EffectInfo instances after
	compute_bitstrings() is called (it would fail translation if we do)

diff --git a/rpython/annotator/test/test_annrpython.py b/rpython/annotator/test/test_annrpython.py
--- a/rpython/annotator/test/test_annrpython.py
+++ b/rpython/annotator/test/test_annrpython.py
@@ -4577,6 +4577,13 @@
         with py.test.raises(AnnotatorError):
             a.build_types(f, [float])
 
+    def test_Ellipsis_not_rpython(self):
+        def f():
+            return Ellipsis
+        a = self.RPythonAnnotator()
+        e = py.test.raises(Exception, a.build_types, f, [])
+        assert str(e.value) == "Don't know how to represent Ellipsis"
+
 
 def g(n):
     return [0, 1, 2, n]
diff --git a/rpython/jit/codewriter/effectinfo.py b/rpython/jit/codewriter/effectinfo.py
--- a/rpython/jit/codewriter/effectinfo.py
+++ b/rpython/jit/codewriter/effectinfo.py
@@ -167,6 +167,16 @@
             result._write_descrs_fields = write_descrs_fields
             result._write_descrs_arrays = write_descrs_arrays
             result._write_descrs_interiorfields = write_descrs_interiorfields
+        # initialized later, in compute_bitstrings()
+        # (the goal of this is to make sure we don't build new EffectInfo
+        # instances after compute_bitstrings() is called)
+        result.bitstring_readonly_descrs_fields = Ellipsis
+        result.bitstring_readonly_descrs_arrays = Ellipsis
+        result.bitstring_readonly_descrs_interiorfields = Ellipsis
+        result.bitstring_write_descrs_fields = Ellipsis
+        result.bitstring_write_descrs_arrays = Ellipsis
+        result.bitstring_write_descrs_interiorfields = Ellipsis
+        #
         result.extraeffect = extraeffect
         result.can_invalidate = can_invalidate
         result.oopspecindex = oopspecindex


More information about the pypy-commit mailing list