[pypy-svn] r25347 - in pypy/dist/pypy/rpython: ootypesystem test
nik at codespeak.net
nik at codespeak.net
Wed Apr 5 12:10:55 CEST 2006
Author: nik
Date: Wed Apr 5 12:10:52 2006
New Revision: 25347
Modified:
pypy/dist/pypy/rpython/ootypesystem/rlist.py
pypy/dist/pypy/rpython/ootypesystem/rtuple.py
pypy/dist/pypy/rpython/test/test_rtuple.py
Log:
implement rtyping of list(sometuple) for ootypesystem.
Modified: pypy/dist/pypy/rpython/ootypesystem/rlist.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/rlist.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/rlist.py Wed Apr 5 12:10:52 2006
@@ -80,6 +80,14 @@
resulttype=ootype.Void)
return v_result
+# These helpers are trivial but help encapsulation
+
+def ll_newlist(LIST):
+ return ootype.new(LIST)
+
+def ll_append(lst, item):
+ lst.append(item)
+
# ____________________________________________________________
#
# Iteration.
Modified: pypy/dist/pypy/rpython/ootypesystem/rtuple.py
==============================================================================
--- pypy/dist/pypy/rpython/ootypesystem/rtuple.py (original)
+++ pypy/dist/pypy/rpython/ootypesystem/rtuple.py Wed Apr 5 12:10:52 2006
@@ -35,6 +35,20 @@
vinst, = hop.inputargs(self)
return hop.genop('ooidentityhash', [vinst], resulttype=ootype.Signed)
+ def rtype_bltn_list(self, hop):
+ from pypy.rpython.ootypesystem import rlist
+ v_tup = hop.inputarg(self, 0)
+ LIST = hop.r_result.lowleveltype
+ c_list = inputconst(ootype.Void, LIST)
+ v_list = hop.gendirectcall(rlist.ll_newlist, c_list)
+ for index in range(len(self.items_r)):
+ name = self.fieldnames[index]
+ r_item = self.items_r[index]
+ c_name = hop.inputconst(ootype.Void, name)
+ v_item = hop.genop("oogetfield", [v_tup, c_name], resulttype=r_item)
+ v_item = hop.llops.convertvar(v_item, r_item, hop.r_result.item_repr)
+ hop.gendirectcall(rlist.ll_append, v_list, v_item)
+ return v_list
_tuple_types = {}
Modified: pypy/dist/pypy/rpython/test/test_rtuple.py
==============================================================================
--- pypy/dist/pypy/rpython/test/test_rtuple.py (original)
+++ pypy/dist/pypy/rpython/test/test_rtuple.py Wed Apr 5 12:10:52 2006
@@ -187,14 +187,14 @@
assert res1 != res2
def test_tuple_to_list(self):
- if self.type_system == "ootype":
- py.test.skip("XXX fix me if ootypes support lists")
-
def f(i, j):
return list((i, j))
res = self.interpret(f, [2, 3])
- assert res._obj.items == [2, 3]
+ if self.type_system == "lltype":
+ assert res._obj.items == [2, 3]
+ else:
+ assert res._list == [2, 3]
def test_tuple_iterator_length1(self):
def f(i):
More information about the Pypy-commit
mailing list