[pypy-commit] pypy gc_no_cleanup_nursery: missing case

fijal noreply at buildbot.pypy.org
Thu Sep 25 12:33:10 CEST 2014


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc_no_cleanup_nursery
Changeset: r73700:0cb0f646d4d5
Date: 2014-09-25 12:32 +0200
http://bitbucket.org/pypy/pypy/changeset/0cb0f646d4d5/

Log:	missing case

diff --git a/rpython/jit/codewriter/jtransform.py b/rpython/jit/codewriter/jtransform.py
--- a/rpython/jit/codewriter/jtransform.py
+++ b/rpython/jit/codewriter/jtransform.py
@@ -1668,7 +1668,13 @@
             v = Variable('new_length')
             v.concretetype = lltype.Signed
             ops.append(SpaceOperation('int_force_ge_zero', [v_length], v))
-        ops.append(SpaceOperation('new_array', [v, arraydescr], op.result))
+        ARRAY = op.result.concretetype.TO
+        if ((isinstance(ARRAY.OF, lltype.Ptr) and ARRAY.OF._needsgc()) or
+               isinstance(ARRAY.OF, lltype.Struct)):
+            opname = 'new_array_clear'
+        else:
+            opname = 'new_array'
+        ops.append(SpaceOperation(opname, [v, arraydescr], op.result))
         return ops
 
     def do_fixed_list_len(self, op, args, arraydescr):


More information about the pypy-commit mailing list