[pypy-commit] pypy speedup-list-comprehension: backout removal of list code

fijal noreply at buildbot.pypy.org
Fri Mar 9 19:20:57 CET 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: speedup-list-comprehension
Changeset: r53285:80342e4d920a
Date: 2012-03-08 17:06 -0800
http://bitbucket.org/pypy/pypy/changeset/80342e4d920a/

Log:	backout removal of list code

diff --git a/pypy/jit/codewriter/support.py b/pypy/jit/codewriter/support.py
--- a/pypy/jit/codewriter/support.py
+++ b/pypy/jit/codewriter/support.py
@@ -130,8 +130,42 @@
 
 # ____________________________________________________________
 #
-# The following functions are fished from the globals() by
-# setup_extra_builtin().
+# Manually map oopspec'ed operations back to their ll implementation
+# coming from modules like pypy.rpython.rlist.  The following
+# functions are fished from the globals() by setup_extra_builtin().
+
+def _ll_0_newlist(LIST):
+    return LIST.ll_newlist(0)
+def _ll_1_newlist(LIST, count):
+    return LIST.ll_newlist(count)
+def _ll_2_newlist(LIST, count, item):
+    return rlist.ll_alloc_and_set(LIST, count, item)
+_ll_0_newlist.need_result_type = True
+_ll_1_newlist.need_result_type = True
+_ll_2_newlist.need_result_type = True
+
+def _ll_1_list_len(l):
+    return l.ll_length()
+def _ll_2_list_getitem(l, index):
+    return rlist.ll_getitem(rlist.dum_checkidx, l, index)
+def _ll_3_list_setitem(l, index, newitem):
+    rlist.ll_setitem(rlist.dum_checkidx, l, index, newitem)
+def _ll_2_list_delitem(l, index):
+    rlist.ll_delitem(rlist.dum_checkidx, l, index)
+def _ll_1_list_pop(l):
+    return rlist.ll_pop_default(rlist.dum_checkidx, l)
+def _ll_2_list_pop(l, index):
+    return rlist.ll_pop(rlist.dum_checkidx, l, index)
+_ll_2_list_append = rlist.ll_append
+_ll_2_list_extend = rlist.ll_extend
+_ll_3_list_insert = rlist.ll_insert_nonneg
+_ll_4_list_setslice = rlist.ll_listsetslice
+_ll_2_list_delslice_startonly = rlist.ll_listdelslice_startonly
+_ll_3_list_delslice_startstop = rlist.ll_listdelslice_startstop
+_ll_2_list_inplace_mul = rlist.ll_inplace_mul
+
+_ll_2_list_getitem_foldable = _ll_2_list_getitem
+_ll_1_list_len_foldable     = _ll_1_list_len
 
 _ll_5_list_ll_arraycopy = rgc.ll_arraycopy
 


More information about the pypy-commit mailing list