[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