[pypy-svn] r25948 - pypy/dist/pypy/rpython/ootypesystem
antocuni at codespeak.net
antocuni at codespeak.net
Tue Apr 18 15:43:14 CEST 2006
Author: antocuni
Date: Tue Apr 18 15:43:09 2006
New Revision: 25948
Modified:
pypy/dist/pypy/rpython/ootypesystem/rlist.py
Log:
Modified newlist in order to use _ll_resize and ll_setitem_fast
instead of append.
Modified: pypy/dist/pypy/rpython/ootypesystem/rlist.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/rlist.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/rlist.py Tue Apr 18 15:43:09 2006
@@ -82,13 +82,22 @@
def newlist(llops, r_list, items_v):
- c_1ist = inputconst(ootype.Void, r_list.lowleveltype)
- v_result = llops.genop("new", [c_1ist], resulttype=r_list.lowleveltype)
- c_append = inputconst(ootype.Void, "append")
- # This is very inefficient for a large amount of initial items ...
- for v_item in items_v:
- llops.genop("oosend", [c_append, v_result, v_item],
- resulttype=ootype.Void)
+ c_list = inputconst(ootype.Void, r_list.lowleveltype)
+ v_result = llops.genop("new", [c_list], resulttype=r_list.lowleveltype)
+## c_append = inputconst(ootype.Void, "append")
+## # This is very inefficient for a large amount of initial items ...
+## for v_item in items_v:
+## llops.genop("oosend", [c_append, v_result, v_item],
+## resulttype=ootype.Void)
+
+ c_resize = inputconst(ootype.Void, "_ll_resize")
+ c_length = inputconst(ootype.Signed, len(items_v))
+ llops.genop("oosend", [c_resize, v_result, c_length], resulttype=ootype.Void)
+
+ c_setitem = inputconst(ootype.Void, "ll_setitem_fast")
+ for i, v_item in enumerate(items_v):
+ ci = inputconst(Signed, i)
+ llops.genop("oosend", [c_setitem, v_result, ci, v_item], resulttype=ootype.Void)
return v_result
More information about the Pypy-commit
mailing list