Author: fijal
Branch: jit-leaner-frontend
Changeset: r82764:9877c87c497d
Date: 2016-03-04 16:40 +0200
http://bitbucket.org/pypy/pypy/changeset/9877c87c497d/

Log:    an example simple strategy of list of operations

diff --git a/rpython/jit/metainterp/test/strategies.py 
b/rpython/jit/metainterp/test/strategies.py
--- a/rpython/jit/metainterp/test/strategies.py
+++ b/rpython/jit/metainterp/test/strategies.py
@@ -1,7 +1,7 @@
 
 import sys
 from hypothesis import strategies
-from rpython.jit.metainterp.resoperation import InputArgInt
+from rpython.jit.metainterp.resoperation import InputArgInt, ResOperation, rop
 from rpython.jit.metainterp.history import ConstInt
 
 machine_ints = strategies.integers(min_value=-sys.maxint - 1,
@@ -10,4 +10,28 @@
 intconsts = strategies.builds(ConstInt, machine_ints)
 boxes = intboxes | intconsts
 boxlists = strategies.lists(boxes, min_size=1).flatmap(
-    lambda cis: strategies.lists(strategies.sampled_from(cis)))
\ No newline at end of file
+    lambda cis: strategies.lists(strategies.sampled_from(cis)))
+
[email protected]
+def lists_of_operations(draw, inputboxes):
+    def get(l1, l2, index):
+        if index < len(l1):
+            return l1[index]
+        return l2[index - len(l1)]
+
+    size = draw(strategies.integers(min_value=1, max_value=100))
+    inputargs = []
+    for i in range(size):
+        inputargs.append(draw(inputboxes))
+    size = draw(strategies.integers(min_value=1, max_value=100))
+    ops = []
+    for i in range(size):
+        s = strategies.integers(min_value=0, max_value=len(inputargs) + 
len(ops) - 1)
+        arg0 = get(inputargs, ops, draw(s))
+        arg1 = get(inputargs, ops, draw(s))
+        ops.append(ResOperation(rop.INT_ADD, [arg0, arg1], -1))
+    return ops
+
+if __name__ == '__main__':
+    import pprint
+    pprint.pprint(lists_of_operations(intboxes).example())
\ No newline at end of file
diff --git a/rpython/jit/metainterp/test/test_opencoder.py 
b/rpython/jit/metainterp/test/test_opencoder.py
--- a/rpython/jit/metainterp/test/test_opencoder.py
+++ b/rpython/jit/metainterp/test/test_opencoder.py
@@ -108,4 +108,3 @@
         assert jc_index == 2
         assert pc == 1
         assert [snapshot_iter.next() for i in range(2)] == [i0, i1]
-        
\ No newline at end of file
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to