Author: Armin Rigo <[email protected]>
Branch: gc_no_cleanup_nursery
Changeset: r73665:b76c81163a3d
Date: 2014-09-23 14:31 +0200
http://bitbucket.org/pypy/pypy/changeset/b76c81163a3d/

Log:    Expand the code to catch more missing cases and crash with clean
        errors

diff --git a/rpython/memory/gctransform/framework.py 
b/rpython/memory/gctransform/framework.py
--- a/rpython/memory/gctransform/framework.py
+++ b/rpython/memory/gctransform/framework.py
@@ -1222,6 +1222,16 @@
                                               previous_steps + [c_name],
                                               everything=everything)
                     continue
+                if isinstance(FIELD, lltype.Array):
+                    if everything:
+                        raise NotImplementedError(
+                            "%s: Struct-containing-Array with everything=True"
+                            % (TYPE,))
+                    if gctypelayout.offsets_to_gc_pointers(FIELD.OF):
+                        raise NotImplementedError(
+                            "%s: Struct-containing-Array-with-gc-pointers"
+                            % (TYPE,))
+                    continue
                 if ((isinstance(FIELD, lltype.Ptr) and FIELD._needsgc())
                     or everything):
                     c_null = rmodel.inputconst(FIELD, FIELD._defl())
@@ -1230,9 +1240,6 @@
                                 [v] + previous_steps + [c_name, c_null])
                     else:
                         llops.genop('bare_setfield', [v, c_name, c_null])
-                elif (isinstance(FIELD, lltype.Array) and
-                      isinstance(FIELD.OF, lltype.Ptr) and 
FIELD.OF._needsgc()):
-                    xxx
          
             return
         elif isinstance(TYPE, lltype.Array):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to