[pypy-commit] pypy gc_no_cleanup_nursery: one more fix
fijal
noreply at buildbot.pypy.org
Thu Sep 25 13:15:40 CEST 2014
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: gc_no_cleanup_nursery
Changeset: r73703:1044dc58b44b
Date: 2014-09-25 13:15 +0200
http://bitbucket.org/pypy/pypy/changeset/1044dc58b44b/
Log: one more fix
diff --git a/rpython/jit/metainterp/blackhole.py b/rpython/jit/metainterp/blackhole.py
--- a/rpython/jit/metainterp/blackhole.py
+++ b/rpython/jit/metainterp/blackhole.py
@@ -1008,7 +1008,11 @@
itemsdescr, arraydescr):
result = cpu.bh_new(structdescr)
cpu.bh_setfield_gc_i(result, length, lengthdescr)
- items = cpu.bh_new_array(length, arraydescr)
+ if (arraydescr.is_array_of_structs() or
+ arraydescr.is_array_of_pointers()):
+ items = cpu.bh_new_array_clear(length, arraydescr)
+ else:
+ items = cpu.bh_new_array(length, arraydescr)
cpu.bh_setfield_gc_r(result, items, itemsdescr)
return result
@@ -1017,7 +1021,11 @@
itemsdescr, arraydescr):
result = cpu.bh_new(structdescr)
cpu.bh_setfield_gc_i(result, 0, lengthdescr)
- items = cpu.bh_new_array(lengthhint, arraydescr)
+ if (arraydescr.is_array_of_structs() or
+ arraydescr.is_array_of_pointers()):
+ items = cpu.bh_new_array_clear(lengthhint, arraydescr)
+ else:
+ items = cpu.bh_new_array(lengthhint, arraydescr)
cpu.bh_setfield_gc_r(result, items, itemsdescr)
return result
diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -513,7 +513,11 @@
itemsdescr, arraydescr):
sbox = self.opimpl_new(structdescr)
self._opimpl_setfield_gc_any(sbox, sizebox, lengthdescr)
- abox = self.opimpl_new_array(sizebox, arraydescr)
+ if (arraydescr.is_array_of_structs() or
+ arraydescr.is_array_of_pointers()):
+ abox = self.opimpl_new_array_clear(sizebox, arraydescr)
+ else:
+ abox = self.opimpl_new_array(sizebox, arraydescr)
self._opimpl_setfield_gc_any(sbox, abox, itemsdescr)
return sbox
More information about the pypy-commit
mailing list