Author: Maciej Fijalkowski <[email protected]>
Branch: gc_no_cleanup_nursery
Changeset: r73599:c12587039b65
Date: 2014-09-17 19:13 -0600
http://bitbucket.org/pypy/pypy/changeset/c12587039b65/
Log: implement setarrayitem unrolling for constant length just-allocated
arrays
diff --git a/rpython/jit/backend/llsupport/rewrite.py
b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -186,6 +186,15 @@
v_arr_plus_ofs = BoxInt()
v_totalsize = BoxInt()
gcdescr = self.gc_ll_descr
+ if isinstance(v_arrsize, ConstInt) and v_arrsize.getint() < 10:
+ # clear it item by item
+ ops = []
+ for i in range(v_arrsize.getint()):
+ ops.append(ResOperation(rop.SETARRAYITEM_GC,
+ [v_arr, ConstInt(i)], None,
+ descr=arraydescr))
+ self.newops += ops
+ return
ops = [
ResOperation(rop.INT_ADD, [v_arr, ConstInt(ofs)], v_arr_plus_ofs),
]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit