[pypy-commit] pypy result-in-resops: start porting backend tests

fijal noreply at buildbot.pypy.org
Mon Aug 27 17:48:01 CEST 2012


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r56885:81cc84cd3fb3
Date: 2012-08-27 17:47 +0200
http://bitbucket.org/pypy/pypy/changeset/81cc84cd3fb3/

Log:	start porting backend tests

diff --git a/pypy/jit/backend/test/runner_test.py b/pypy/jit/backend/test/runner_test.py
--- a/pypy/jit/backend/test/runner_test.py
+++ b/pypy/jit/backend/test/runner_test.py
@@ -104,27 +104,26 @@
 
     avoid_instances = False
 
-    class namespace:
-        faildescr = BasicFailDescr(1)
-        faildescr2 = BasicFailDescr(2)
-        faildescr3 = BasicFailDescr(3)
-        faildescr4 = BasicFailDescr(4)
-        faildescr5 = BasicFailDescr(4)
-        targettoken = TargetToken()
-
-    def parse(self, s, namespace=None):
+    def parse(self, s, namespace):
         from pypy.jit.tool.oparser import parse
         if namespace is None:
-            namespace = self.namespace.__dict__
+            namespace = {}
+        else:
+            namespace = namespace.copy()
+        if 'targettoken' not in namespace:
+            namespace['targettoken'] = TargetToken()
+        if 'faildescr' not in namespace:
+            namespace['faildescr'] = BasicFailDescr(1)
         loop = parse(s, namespace=namespace)
         return loop.inputargs, loop.operations, JitCellToken()
 
     def test_compile_linear_loop(self):
+        faildescr = BasicFailDescr(1)
         inputargs, ops, token = self.parse("""
         [i0]
         i1 = int_add(i0, 1)
         finish(i1, descr=faildescr)
-        """)
+        """, namespace=locals())
         self.cpu.compile_loop(inputargs, ops, token)
         fail = self.cpu.execute_token(token, 2)
         res = self.cpu.get_latest_value_int(0)
@@ -132,14 +131,16 @@
         assert fail.identifier == 1
 
     def test_compile_loop(self):
+        faildescr = BasicFailDescr(2)
+        targettoken = TargetToken()
         inputargs, operations, looptoken = self.parse('''
         [i0]
         label(i0, descr=targettoken)
         i1 = int_add(i0, 1)
         i2 = int_le(i1, 9)
-        guard_true(i2, descr=faildescr2) [i1]
+        guard_true(i2, descr=faildescr) [i1]
         jump(i1, descr=targettoken)
-        ''')
+        ''', namespace=locals())
         self.cpu.compile_loop(inputargs, operations, looptoken)
         fail = self.cpu.execute_token(looptoken, 2)
         assert fail.identifier == 2
@@ -147,6 +148,8 @@
         assert res == 10
 
     def test_compile_with_holes_in_fail_args(self):
+        faildescr3 = BasicFailDescr(3)
+        targettoken = TargetToken()
         inputargs, operations, looptoken = self.parse("""
         [i3]
         i0 = int_sub(i3, 42)
@@ -155,7 +158,7 @@
         i2 = int_le(i1, 9)
         guard_true(i2, descr=faildescr3) [None, None, i1, None]
         jump(i1, descr=targettoken)
-        """)
+        """, namespace=locals())
 
         self.cpu.compile_loop(inputargs, operations, looptoken)
         fail = self.cpu.execute_token(looptoken, 44)
@@ -189,14 +192,17 @@
     def test_compile_bridge(self):
         self.cpu.total_compiled_loops = 0
         self.cpu.total_compiled_bridges = 0
+        faildescr4 = BasicFailDescr(4)
+        targettoken =  TargetToken()
         inputargs, operations, looptoken = self.parse("""
         [i0]
         label(i0, descr=targettoken)
         i1 = int_add(i0, 1)
         i2 = int_le(i1, 9)
-        guard_true(i2, descr=faildescr4) [i1]
+        guard_true(i2, descr=faildescr) [i1]
         jump(i1, descr=targettoken)
-        """)
+        """, namespace={'faildescr': faildescr4,
+                        'targettoken': targettoken})
         self.cpu.compile_loop(inputargs, operations, looptoken)
 
         inputargs, bridge_ops, _ = self.parse("""
@@ -204,12 +210,13 @@
         i3 = int_le(i1b, 19)
         guard_true(i3, descr=faildescr5) [i1b]
         jump(i1b, descr=targettoken)
-        """)
-        self.cpu.compile_bridge(self.namespace.faildescr4,
+        """, namespace={'faildescr5': BasicFailDescr(5),
+                        'targettoken': targettoken})
+        self.cpu.compile_bridge(faildescr4,
                                 inputargs, bridge_ops, looptoken)
 
         fail = self.cpu.execute_token(looptoken, 2)
-        assert fail.identifier == 4
+        assert fail.identifier == 5
         res = self.cpu.get_latest_value_int(0)
         assert res == 20
 
@@ -300,10 +307,11 @@
                     return AbstractFailDescr.__setattr__(self, name, value)
                 py.test.fail("finish descrs should not be touched")
         faildescr = UntouchableFailDescr() # to check that is not touched
+        namespace = {'faildescr': faildescr}
         inputargs, operations, looptoken = self.parse("""
         [i0]
         finish(i0, descr=faildescr)
-        """)
+        """, namespace=namespace)
         self.cpu.compile_loop(inputargs, operations, looptoken)
         fail = self.cpu.execute_token(looptoken, 99)
         assert fail is faildescr
@@ -312,39 +320,38 @@
 
         inputargs, operations, looptoken = self.parse("""
         []
-        finish(42)
-        """)
+        finish(42, descr=faildescr)
+        """, namespace=namespace)
         self.cpu.compile_loop(inputargs, operations, looptoken)
         fail = self.cpu.execute_token(looptoken)
         assert fail is faildescr
         res = self.cpu.get_latest_value_int(0)
         assert res == 42
 
-        looptoken = JitCellToken()
-        operations = [
-            ResOperation(rop.FINISH, [], None, descr=faildescr)
-            ]
+        _, operations, looptoken = self.parse("""
+        []
+        finish(descr=faildescr)
+        """, namespace=namespace)
         self.cpu.compile_loop([], operations, looptoken)
         fail = self.cpu.execute_token(looptoken)
         assert fail is faildescr
 
         if self.cpu.supports_floats:
-            looptoken = JitCellToken()
-            f0 = BoxFloat()
-            operations = [
-                ResOperation(rop.FINISH, [f0], None, descr=faildescr)
-                ]
-            self.cpu.compile_loop([f0], operations, looptoken)
+            inputargs, operations, looptoken = self.parse("""
+            [f0]
+            finish(f0, descr=faildescr)
+            """, namespace)
+            self.cpu.compile_loop(inputargs, operations, looptoken)
             value = longlong.getfloatstorage(-61.25)
             fail = self.cpu.execute_token(looptoken, value)
             assert fail is faildescr
             res = self.cpu.get_latest_value_float(0)
             assert longlong.getrealfloat(res) == -61.25
 
-            looptoken = JitCellToken()
-            operations = [
-                ResOperation(rop.FINISH, [constfloat(42.5)], None, descr=faildescr)
-                ]
+            _, operations, looptoken = self.parse("""
+            []
+            finish(42.5, descr=faildescr)
+            """, namespace)
             self.cpu.compile_loop([], operations, looptoken)
             fail = self.cpu.execute_token(looptoken)
             assert fail is faildescr
@@ -353,25 +360,17 @@
 
     def test_execute_operations_in_env(self):
         cpu = self.cpu
-        x = BoxInt(123)
-        y = BoxInt(456)
-        z = BoxInt(579)
-        t = BoxInt(455)
-        u = BoxInt(0)    # False
-        looptoken = JitCellToken()
-        targettoken = TargetToken()
-        operations = [
-            ResOperation(rop.LABEL, [y, x], None, descr=targettoken),
-            ResOperation(rop.INT_ADD, [x, y], z),
-            ResOperation(rop.INT_SUB, [y, ConstInt(1)], t),
-            ResOperation(rop.INT_EQ, [t, ConstInt(0)], u),
-            ResOperation(rop.GUARD_FALSE, [u], None,
-                         descr=BasicFailDescr()),
-            ResOperation(rop.JUMP, [t, z], None, descr=targettoken),
-            ]
-        operations[-2].setfailargs([t, z])
-        cpu.compile_loop([x, y], operations, looptoken)
-        res = self.cpu.execute_token(looptoken, 0, 10)
+        inputargs, operations, looptoken = self.parse("""
+        [x, y]
+        label(y, x, descr=targettoken)
+        z = int_add(x, y)
+        t = int_sub(y, 1)
+        u = int_eq(t, 0)
+        guard_false(u, descr=faildescr) [t, z]
+        jump(t, z, descr=targettoken)
+        """, None)
+        cpu.compile_loop(inputargs, operations, looptoken)
+        self.cpu.execute_token(looptoken, 0, 10)
         assert self.cpu.get_latest_value_int(0) == 0
         assert self.cpu.get_latest_value_int(1) == 55
 


More information about the pypy-commit mailing list