Author: Maciej Fijalkowski <[email protected]>
Branch: gc_no_cleanup_nursery
Changeset: r73687:0157e90c1899
Date: 2014-09-25 10:08 +0200
http://bitbucket.org/pypy/pypy/changeset/0157e90c1899/
Log: Only emit clear_array_contents for arrays that are allocated with
zero=True, but with no GC ptrs in them
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
@@ -615,7 +615,14 @@
op1 = SpaceOperation('new_array', [op.args[2], arraydescr],
op.result)
if op.args[1].value.get('zero', False):
- return self.zero_contents([op1], op.result, ARRAY)
+ # complicated logic here - we only need to emit zero_contents
+ # in case this is an array of non-gcptrs and non-structs
+ if isinstance(ARRAY.OF, lltype.Ptr) and ARRAY.OF._needsgc():
+ pass
+ elif isinstance(ARRAY.OF, lltype.Struct):
+ pass
+ else:
+ return self.zero_contents([op1], op.result, ARRAY)
return op1
def zero_contents(self, ops, v, TYPE):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit