[pypy-svn] r65058 - pypy/branch/pyjitpl5/pypy/jit/backend/test

arigo at codespeak.net arigo at codespeak.net
Tue May 5 14:27:48 CEST 2009


Author: arigo
Date: Tue May  5 14:27:47 2009
New Revision: 65058

Modified:
   pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py
Log:
rop.NEW_ARRAY.


Modified: pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py	(original)
+++ pypy/branch/pyjitpl5/pypy/jit/backend/test/test_ll_random.py	Tue May  5 14:27:47 2009
@@ -218,7 +218,13 @@
         v_ptr = builder.do(self.opnum, args, self.size_descr(builder, S))
         builder.ptrvars.append((v_ptr, S))
 
-class GetArrayItemOperation(test_random.AbstractOperation):
+class ArrayOperation(test_random.AbstractOperation):
+    def array_descr(self, builder, A):
+        descr = builder.cpu.arraydescrof(A)
+        descr._random_info = 'cpu.arraydescrof(...)'
+        return descr
+
+class GetArrayItemOperation(ArrayOperation):
     def field_descr(self, builder, r):
         v, A = builder.get_arrayptr_var(r)
         array = v.getptr(lltype.Ptr(A))
@@ -228,8 +234,7 @@
         v_index = r.choice(builder.intvars)
         if not (0 <= v_index.value < length):
             v_index = ConstInt(r.random_integer() % length)
-        descr = builder.cpu.arraydescrof(A)
-        descr._random_info = 'cpu.arraydescrof(...)'
+        descr = self.array_descr(builder, A)
         return v, A, v_index, descr
 
     def produce_into(self, builder, r):
@@ -253,8 +258,14 @@
                 break
         builder.do(self.opnum, [v, v_index, w], descr)
 
-#class NewArrayOperation(test_random.AbstractOperation):
-#    ...
+class NewArrayOperation(ArrayOperation):
+    def produce_into(self, builder, r):
+        A = builder.get_random_array_type(r)
+        v_size = r.choice(builder.intvars)
+        if not (0 <= v_size.value < 300):
+            v_size = ConstInt((r.random_integer() // 15) % 300)
+        v_ptr = builder.do(self.opnum, [v_size], self.array_descr(builder, A))
+        builder.ptrvars.append((v_ptr, A))
 
 # XXX why is the following here, and not in test_random?
 # there are five options in total:
@@ -417,8 +428,11 @@
     OPERATIONS.append(NewOperation(rop.NEW_WITH_VTABLE))
 
     OPERATIONS.append(GetArrayItemOperation(rop.GETARRAYITEM_GC))
+    OPERATIONS.append(GetArrayItemOperation(rop.GETARRAYITEM_GC))
     OPERATIONS.append(SetArrayItemOperation(rop.SETARRAYITEM_GC))
+    OPERATIONS.append(NewArrayOperation(rop.NEW_ARRAY))
 
+for i in range(2):
     OPERATIONS.append(GuardClassOperation(rop.GUARD_CLASS))
     OPERATIONS.append(CallOperation(rop.CALL))
     OPERATIONS.append(RaisingCallOperation(rop.CALL))



More information about the Pypy-commit mailing list