[pypy-svn] r25310 - in pypy/dist/pypy/rpython/ootypesystem: . test
nik at codespeak.net
nik at codespeak.net
Tue Apr 4 19:00:21 CEST 2006
Author: nik
Date: Tue Apr 4 19:00:20 2006
New Revision: 25310
Modified:
pypy/dist/pypy/rpython/ootypesystem/rlist.py
pypy/dist/pypy/rpython/ootypesystem/test/test_oolist.py
Log:
code and test for lists with initial items in ootypesystem.
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 4 19:00:20 2006
@@ -54,13 +54,12 @@
return r_list.send_message(hop, "setitem", can_raise=True)
def newlist(llops, r_list, items_v):
- c1 = inputconst(ootype.Void, r_list.lowleveltype)
- v_result = llops.genop("new", [c1], resulttype=r_list.lowleveltype)
- #LIST = r_list.LIST
- #cno = inputconst(Signed, len(items_v))
- #v_result = llops.gendirectcall(LIST.ll_newlist, cno)
- #v_func = inputconst(Void, dum_nocheck)
- #for i, v_item in enumerate(items_v):
- # ci = inputconst(Signed, i)
- # llops.gendirectcall(ll_setitem_nonneg, v_func, v_result, ci, v_item)
+ 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)
return v_result
+
Modified: pypy/dist/pypy/rpython/ootypesystem/test/test_oolist.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/test/test_oolist.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/test/test_oolist.py Tue Apr 4 19:00:20 2006
@@ -67,3 +67,11 @@
res = interpret(f, [2], type_system="ootype")
assert res == -1
+ def test_initialize(self):
+ def f(x):
+ l = [1, 2]
+ l.append(x)
+ return l[2]
+ res = interpret(f, [3], type_system="ootype")
+ assert res == 3
+
More information about the Pypy-commit
mailing list