[pypy-svn] r74654 - in pypy/branch/blackhole-improvement/pypy/jit/codewriter: . test
arigo at codespeak.net
arigo at codespeak.net
Fri May 21 22:27:03 CEST 2010
Author: arigo
Date: Fri May 21 22:27:02 2010
New Revision: 74654
Modified:
pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_list.py
Log:
list.setitem.
Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/jtransform.py Fri May 21 22:27:02 2010
@@ -772,6 +772,16 @@
def do_fixed_list_getitem_foldable(self, op, args, arraydescr):
return self.do_fixed_list_getitem(op, args, arraydescr, pure=True)
+ def do_fixed_list_setitem(self, op, args, arraydescr):
+ v_index, extraop = self._prepare_list_getset(op, arraydescr, args,
+ 'check_neg_index')
+ if v_index is None:
+ return None
+ kind = getkind(op.args[2].concretetype)[0]
+ op = SpaceOperation('setarrayitem_gc_%s' % kind,
+ [args[0], arraydescr, v_index, args[2]], None)
+ return extraop + [op]
+
# ----------
# VirtualRefs.
Modified: pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_list.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_list.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/codewriter/test/test_list.py Fri May 21 22:27:02 2010
@@ -97,7 +97,23 @@
lltype.Signed, None)
def test_fixed_setitem():
- xxx
+ builtin_test('list.setitem/NONNEG', [varoftype(FIXEDLIST),
+ varoftype(lltype.Signed),
+ varoftype(lltype.Signed)],
+ lltype.Void, """
+ setarrayitem_gc_i %r0, <ArrayDescr>, %i0, %i1
+ """)
+ builtin_test('list.setitem/NEG', [varoftype(FIXEDLIST),
+ varoftype(lltype.Signed),
+ varoftype(lltype.Signed)],
+ lltype.Void, """
+ check_neg_index %r0, <ArrayDescr>, %i0 -> %i1
+ setarrayitem_gc_i %r0, <ArrayDescr>, %i1, %i2
+ """)
+ builtin_test('list.setitem/CANRAISE', [varoftype(FIXEDLIST),
+ varoftype(lltype.Signed),
+ varoftype(lltype.Signed)],
+ lltype.Void, None)
def test_fixed_len():
builtin_test('list.len', [varoftype(FIXEDLIST)], lltype.Signed,
More information about the Pypy-commit
mailing list