1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
from rpython.rtyper.lltypesystem import lltype
from rpython.translator.unsimplify import varoftype
from rpython.flowspace.model import Constant
from rpython.jit.codewriter.jtransform import NotSupported
from rpython.jit.codewriter.test.test_list import builtin_test
# ____________________________________________________________
# XXX support for lists of voids is limited right now
FIXEDLIST = lltype.Ptr(lltype.GcArray(lltype.Void))
VARLIST = lltype.Ptr(lltype.GcStruct('VARLIST',
('length', lltype.Signed),
('items', FIXEDLIST),
adtmeths={"ITEM": lltype.Void}))
# ____________________________________________________________
# Fixed lists
def test_newlist():
builtin_test('newlist', [], FIXEDLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed)], FIXEDLIST,
NotSupported)
builtin_test('newlist', [varoftype(lltype.Signed)], FIXEDLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(0, lltype.Signed)], FIXEDLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(1, lltype.Signed)], FIXEDLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
varoftype(lltype.Signed)], FIXEDLIST,
NotSupported)
def test_fixed_ll_arraycopy():
builtin_test('list.ll_arraycopy',
[varoftype(FIXEDLIST),
varoftype(FIXEDLIST),
varoftype(lltype.Signed),
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void,
NotSupported)
def test_fixed_ll_arraymove():
builtin_test('list.ll_arraymove',
[varoftype(FIXEDLIST),
varoftype(lltype.Signed),
varoftype(lltype.Signed),
varoftype(lltype.Signed)],
lltype.Void,
NotSupported)
def test_fixed_getitem():
builtin_test('list.getitem/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Void, "")
builtin_test('list.getitem/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Void, "")
def test_fixed_getitem_foldable():
builtin_test('list.getitem_foldable/NONNEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Void, "")
builtin_test('list.getitem_foldable/NEG',
[varoftype(FIXEDLIST), varoftype(lltype.Signed)],
lltype.Void, "")
def test_fixed_setitem():
builtin_test('list.setitem/NONNEG', [varoftype(FIXEDLIST),
varoftype(lltype.Signed),
varoftype(lltype.Void)],
lltype.Void, "")
builtin_test('list.setitem/NEG', [varoftype(FIXEDLIST),
varoftype(lltype.Signed),
varoftype(lltype.Void)],
lltype.Void, "")
def test_fixed_len():
builtin_test('list.len', [varoftype(FIXEDLIST)], lltype.Signed,
NotSupported)
def test_fixed_len_foldable():
builtin_test('list.len_foldable', [varoftype(FIXEDLIST)], lltype.Signed,
NotSupported)
# ____________________________________________________________
# Resizable lists
def test_resizable_newlist():
builtin_test('newlist', [], VARLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed)], VARLIST,
NotSupported)
builtin_test('newlist', [varoftype(lltype.Signed)], VARLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(0, lltype.Signed)], VARLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
Constant(1, lltype.Signed)], VARLIST,
NotSupported)
builtin_test('newlist', [Constant(5, lltype.Signed),
varoftype(lltype.Signed)], VARLIST,
NotSupported)
def test_resizable_getitem():
builtin_test('list.getitem/NONNEG',
[varoftype(VARLIST), varoftype(lltype.Signed)],
lltype.Void, "")
builtin_test('list.getitem/NEG',
[varoftype(VARLIST), varoftype(lltype.Signed)],
lltype.Void, "")
def test_resizable_setitem():
builtin_test('list.setitem/NONNEG', [varoftype(VARLIST),
varoftype(lltype.Signed),
varoftype(lltype.Void)],
lltype.Void, "")
builtin_test('list.setitem/NEG', [varoftype(VARLIST),
varoftype(lltype.Signed),
varoftype(lltype.Void)],
lltype.Void, "")
def test_resizable_len():
builtin_test('list.len', [varoftype(VARLIST)], lltype.Signed,
NotSupported)
def test_resizable_unsupportedop():
builtin_test('list.foobar', [varoftype(VARLIST)], lltype.Signed,
NotSupported)
|