Author: fijal
Branch: jit-leaner-frontend
Changeset: r83290:05ae1cad8b2d
Date: 2016-03-23 11:19 +0200
http://bitbucket.org/pypy/pypy/changeset/05ae1cad8b2d/

Log:    whack enough tests to pass

diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py 
b/rpython/jit/metainterp/optimizeopt/dependency.py
--- a/rpython/jit/metainterp/optimizeopt/dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/dependency.py
@@ -76,14 +76,14 @@
                 i += 1
                 continue
             op = node.getoperation()
-            if op.is_guard():
+            if rop.is_guard(op.opnum):
                 descr = op.getdescr()
                 if not descr:
                     return False
                 assert isinstance(descr, AbstractFailDescr)
                 if not descr.exits_early():
                     return False
-            elif not op.is_always_pure():
+            elif not rop.is_always_pure(op.opnum):
                 return False
             i += 1
         return True
@@ -542,7 +542,7 @@
     def __init__(self, loop):
         self.loop = loop
         self.label = Node(loop.label, 0)
-        self.nodes = [ Node(op,0) for op in loop.operations if not 
op.is_jit_debug() ]
+        self.nodes = [ Node(op,0) for op in loop.operations if not 
rop.is_jit_debug(op.opnum) ]
         for i,node in enumerate(self.nodes):
             node.opidx = i+1
         self.inodes = [] # imaginary nodes
@@ -594,9 +594,9 @@
         # pass 1
         for i,node in enumerate(self.nodes):
             op = node.op
-            if op.is_always_pure():
+            if rop.is_always_pure(op.opnum):
                 node.setpriority(1)
-            if op.is_guard():
+            if rop.is_guard(op.opnum):
                 node.setpriority(2)
             # the label operation defines all operations at the
             # beginning of the loop
@@ -607,11 +607,11 @@
                 # In SSA form. Modifications get a new variable
                 tracker.define(op, node)
             # usage of defined variables
-            if op.is_always_pure() or op.is_final():
+            if rop.is_always_pure(op.opnum) or rop.is_final(op.opnum):
                 # normal case every arguments definition is set
                 for arg in op.getarglist():
                     tracker.depends_on_arg(arg, node)
-            elif op.is_guard():
+            elif rop.is_guard(op.opnum):
                 if node.exits_early():
                     pass
                 else:
diff --git a/rpython/jit/metainterp/optimizeopt/schedule.py 
b/rpython/jit/metainterp/optimizeopt/schedule.py
--- a/rpython/jit/metainterp/optimizeopt/schedule.py
+++ b/rpython/jit/metainterp/optimizeopt/schedule.py
@@ -312,7 +312,7 @@
 
 class LoadRestrict(OpRestrict):
     def opcount_filling_vector_register(self, op, vec_reg_size):
-        assert op.is_primitive_load()
+        assert rop.is_primitive_load(op.opnum)
         descr = op.getdescr()
         return vec_reg_size // descr.get_item_size_in_bytes()
 
@@ -332,7 +332,7 @@
         return descr.get_item_size_in_bytes()
 
     def opcount_filling_vector_register(self, op, vec_reg_size):
-        assert op.is_primitive_store()
+        assert rop.is_primitive_store(op.opnum)
         descr = op.getdescr()
         return vec_reg_size // descr.get_item_size_in_bytes()
 
@@ -921,7 +921,7 @@
         """
         left = self.leftmost()
         if left.returns_void():
-            if left.is_primitive_store():
+            if rop.is_primitive_store(left.opnum):
                 # make this case more general if it turns out this is
                 # not the only case where packs need to be trashed
                 descr = left.getdescr()
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py 
b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
@@ -96,7 +96,7 @@
         assert oplist_i == len(oplist), msg
 
     def parse_loop(self, ops, add_label=True):
-        loop = self.parse(ops, postprocess=self.postprocess)
+        loop = self.parse(ops)
         loop.operations = filter(lambda op: op.getopnum() != 
rop.DEBUG_MERGE_POINT, loop.operations)
         token = JitCellToken()
         if add_label:
@@ -230,10 +230,7 @@
         for i,op in enumerate(loop.operations):
             print "[",i,"]",op,
             if op.is_guard():
-                if op.rd_snapshot:
-                    print op.rd_snapshot.boxes
-                else:
-                    print op.getfailargs()
+                print op.getfailargs()
             else:
                 print ""
 
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -12,7 +12,7 @@
      OpHelpers, InputArgRef
 from rpython.jit.metainterp.resumecode import unpack_numbering
 from rpython.rlib.rarithmetic import LONG_BIT
-from rpython.jit.tool.oparser import parse
+from rpython.jit.tool.oparser import parse, convert_loop_to_trace
 
 # ____________________________________________________________
 
@@ -29,7 +29,7 @@
         exp = parse(optops, namespace=self.namespace.copy())
         expected = convert_old_style_to_targets(exp, jump=True)
         call_pure_results = self._convert_call_pure_results(call_pure_results)
-        trace = self.convert_loop_to_packed(loop)
+        trace = convert_loop_to_trace(loop)
         compile_data = compile.SimpleCompileData(trace,
                                                  call_pure_results)
         info, ops = self._do_optimize_loop(compile_data)
@@ -2029,8 +2029,6 @@
             if varname not in virtuals:
                 if strict:
                     assert box.same_box(oparse.getvar(varname))
-                else:
-                    assert box.getvalue() == oparse.getvar(varname).getvalue()
             else:
                 tag, resolved, fieldstext = virtuals[varname]
                 if tag[0] == 'virtual':
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py
@@ -2,8 +2,9 @@
 from rpython.jit.metainterp.optimizeopt.test.test_util import BaseTest,\
      LLtypeMixin, convert_old_style_to_targets
 from rpython.jit.metainterp import compile
+from rpython.jit.tool import oparser
 from rpython.jit.metainterp.resoperation import ResOperation, rop
-from rpython.jit.metainterp.history import TargetToken
+from rpython.jit.metainterp.history import TargetToken, IntFrontendOp, 
RefFrontendOp
 
 class TestOptimizeBridge(BaseTest, LLtypeMixin):
     enable_opts = 
"intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll"
@@ -12,12 +13,7 @@
                  inline_short_preamble=True, jump_values=None,
                  bridge_values=None):
         loop = self.parse(ops)
-        self.set_values(loop.operations, jump_values)
-        if expected_loop is not None:
-            xxx
-            exp_loop = self.parse(expected_loop, postprocess=self.postprocess)
-            self.assert_equal(loop, convert_old_style_to_targets(exp_loop))
-        info = self.unroll_and_optimize(loop, None)
+        info = self.unroll_and_optimize(loop, None, jump_values=jump_values)
         jitcell_token = compile.make_jitcell_token(None)
         mid_label_descr = TargetToken(jitcell_token)
         mid_label_descr.short_preamble = info.short_preamble
@@ -29,12 +25,11 @@
         info.preamble.operations[0].setdescr(start_label_descr)
         guards = [op for op in loop.operations if op.is_guard()]
         assert len(guards) == 1, "more than one guard in the loop"
-        bridge = self.parse(bridge_ops, postprocess=self.postprocess)
-        self.set_values(bridge.operations, bridge_values)
-        start_label = ResOperation(rop.LABEL, bridge.inputargs)
+        bridge = self.parse(bridge_ops)
         bridge.operations[-1].setdescr(jitcell_token)
         self.add_guard_future_condition(bridge)
-        data = compile.BridgeCompileData(start_label, bridge.operations,
+        trace = oparser.convert_loop_to_trace(bridge)
+        data = compile.BridgeCompileData(trace, 
self.convert_values(bridge.operations[-1].getarglist(), bridge_values),
                                          enable_opts=self.enable_opts,
                             inline_short_preamble=inline_short_preamble)
         bridge_info, ops = self._do_optimize_loop(data)
@@ -44,7 +39,7 @@
                              ops)
         bridge.inputargs = bridge_info.inputargs
         bridge.check_consistency(check_descr=False)
-        expected = self.parse(expected, postprocess=self.postprocess)
+        expected = self.parse(expected)
         self.assert_equal(bridge, convert_old_style_to_targets(expected,
                                                                jump=True))
         jump_bridge = bridge.operations[-1]
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py 
b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_unroll.py
@@ -19,6 +19,7 @@
      VirtualStateInfo
 from rpython.jit.metainterp.optimizeopt import info
 from rpython.jit.codewriter import heaptracker
+from rpython.jit.tool import oparser
 
 class FakeOptimizer(object):
     optearlyforce = None
@@ -39,7 +40,7 @@
     enable_opts = 
"intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll"
     
     def optimize(self, ops):
-        loop = self.parse(ops, postprocess=self.postprocess)
+        loop = self.parse(ops)
         self.add_guard_future_condition(loop)
         operations =  loop.operations
         jumpop = operations[-1]
@@ -54,15 +55,15 @@
         token = JitCellToken()
         start_label = ResOperation(rop.LABEL, inputargs, 
descr=TargetToken(token))
         stop_label = ResOperation(rop.LABEL, jump_args, descr=token)
-        compile_data = LoopCompileData(start_label, stop_label, operations)
+        trace = oparser.convert_loop_to_trace(loop)
+        compile_data = LoopCompileData(trace, inputargs)
         start_state, newops = self._do_optimize_loop(compile_data)
         preamble.operations = newops
         preamble.inputargs = start_state.renamed_inputargs
         return start_state, loop, preamble
 
     def compare_short(self, short, expected_short):
-        expected_short = self.parse(expected_short,
-                                    postprocess=self.postprocess)
+        expected_short = self.parse(expected_short)
         remap = {}
         exp = ([ResOperation(rop.LABEL, expected_short.inputargs)] +
                expected_short.operations)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py 
b/rpython/jit/metainterp/optimizeopt/test/test_util.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_util.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py
@@ -55,11 +55,11 @@
     loop2 = pure_parse(ops, namespace=namespace)
     loop3 = pure_parse(ops.replace("i2 = int_add", "i2 = int_sub"),
                        namespace=namespace)
-    assert equaloplists(loop1._get_operations(), loop2._get_operations(),
+    assert equaloplists(loop1.operations, loop2.operations,
                         remap=make_remap(loop1.inputargs,
                                          loop2.inputargs))
     py.test.raises(AssertionError,
-                   "equaloplists(loop1._get_operations(), 
loop3._get_operations(),"
+                   "equaloplists(loop1.operations, loop3.operations,"
                    "remap=make_remap(loop1.inputargs, loop3.inputargs))")
 
 def test_equaloplists_fail_args():
@@ -509,7 +509,6 @@
         # invent a GUARD_FUTURE_CONDITION to not have to change all tests
         if res.operations[-1].getopnum() == rop.JUMP:
             guard = ResOperation(rop.GUARD_FUTURE_CONDITION, [])
-            guard.rd_snapshot = resume.TopSnapshot(None, [], [])
             res.operations.insert(-1, guard)
 
     @staticmethod
@@ -545,6 +544,24 @@
             call_pure_results[list(k)] = v
         return call_pure_results
 
+    def convert_values(self, inpargs, values):
+        from rpython.jit.metainterp.history import IntFrontendOp, RefFrontendOp
+        if values:
+            r = []
+            for arg, v in zip(inpargs, values):
+                if arg.type == 'i':
+                    n = IntFrontendOp(0)
+                    if v is not None:
+                        n.setint(v)
+                else:
+                    n = RefFrontendOp(0)
+                    if v is not None:
+                        n.setref_base(v)
+                    assert arg.type == 'r'
+                r.append(n)
+            return r
+        return inpargs
+
     def unroll_and_optimize(self, loop, call_pure_results=None,
                             jump_values=None):
         self.add_guard_future_condition(loop)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
@@ -23,7 +23,7 @@
 from rpython.jit.metainterp.optimizeopt.version import LoopVersionInfo
 from rpython.jit.backend.llsupport.descr import ArrayDescr
 from rpython.jit.metainterp.optimizeopt.dependency import Node, DependencyGraph
-from rpython.jit.tool.oparser import OpParser
+from rpython.jit.tool.oparser import OpParser, convert_loop_to_trace
 from rpython.jit.backend.detect_cpu import getcpuclass
 
 CPU = getcpuclass()
@@ -81,8 +81,8 @@
     jitdriver_sd = FakeJitDriverStaticData()
 
     def assert_vectorize(self, loop, expected_loop, call_pure_results=None):
-        jump = ResOperation(rop.LABEL, loop.jump.getarglist(), 
loop.jump.getdescr())
-        compile_data = compile.LoopCompileData(loop.label, jump, 
loop.operations)
+        trace = convert_loop_to_trace(loop)
+        compile_data = compile.LoopCompileData(trace, loop.jump.getarglist())
         state = self._do_optimize_loop(compile_data)
         loop.label = state[0].label_op
         loop.opererations = state[1]
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py 
b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_virtualstate.py
@@ -20,6 +20,7 @@
 from rpython.jit.metainterp.resoperation import ResOperation, rop
 from rpython.jit.metainterp import resume, compile
 from rpython.jit.metainterp.optimizeopt import info
+from rpython.jit.tool import oparser
 
 class FakeOptimizer(Optimizer):
     def __init__(self, cpu):
@@ -812,7 +813,7 @@
 class BaseTestBridges(BaseTest):
     enable_opts = 
"intbounds:rewrite:virtualize:string:pure:earlyforce:heap:unroll"
 
-    def _do_optimize_bridge(self, bridge, call_pure_results):
+    def _do_optimize_bridge(self, bridge, call_pure_results, values):
         from rpython.jit.metainterp.optimizeopt import optimize_trace
         from rpython.jit.metainterp.optimizeopt.util import args_dict
 
@@ -827,8 +828,11 @@
         if hasattr(self, 'callinfocollection'):
             metainterp_sd.callinfocollection = self.callinfocollection
         #
-        start_label = ResOperation(rop.LABEL, bridge.inputargs)
-        data = compile.BridgeCompileData(start_label, bridge.operations,
+        trace = oparser.convert_loop_to_trace(bridge)
+
+        runtime_boxes = self.convert_values(bridge.operations[-1].getarglist(),
+                                            values)
+        data = compile.BridgeCompileData(trace, runtime_boxes,
             enable_opts=self.enable_opts, inline_short_preamble=True)
             
         info, newops = optimize_trace(metainterp_sd, None, data)
@@ -841,24 +845,12 @@
                         boxvalues=None):
         if isinstance(loops, str):
             loops = (loops, )
-        loops = [self.parse(loop, postprocess=self.postprocess)
+        loops = [self.parse(loop)
                  for loop in loops]
-        bridge = self.parse(bridge, postprocess=self.postprocess)
+        bridge = self.parse(bridge)
         self.add_guard_future_condition(bridge)
         token = JitCellToken()
-        jump_args = bridge.operations[-1].getarglist()
-        if boxvalues is not None:
-            assert isinstance(boxvalues, list)
-            assert len(jump_args) == len(boxvalues)
-            for jump_arg, v in zip(jump_args, boxvalues):
-                jump_arg.setref_base(v)
         for loop in loops:
-            loop_jump_args = loop.operations[-1].getarglist()
-            if boxvalues is not None:
-                assert isinstance(boxvalues, list)
-                assert len(jump_args) == len(boxvalues)
-                for jump_arg, v in zip(loop_jump_args, boxvalues):
-                    jump_arg.setref_base(v)
             info = self.unroll_and_optimize(loop)
             loop.preamble = info.preamble
             loop.preamble.operations[0].setdescr(TargetToken(token))
@@ -869,7 +861,7 @@
         for b in bridge.inputargs + [op for op in bridge.operations]:
             boxes[str(b)] = b
         bridge.operations[-1].setdescr(token)
-        info = self._do_optimize_bridge(bridge, None)
+        info = self._do_optimize_bridge(bridge, None, boxvalues)
         if not info.final():
             assert expected == 'RETRACE'
             return
diff --git a/rpython/jit/metainterp/optimizeopt/vector.py 
b/rpython/jit/metainterp/optimizeopt/vector.py
--- a/rpython/jit/metainterp/optimizeopt/vector.py
+++ b/rpython/jit/metainterp/optimizeopt/vector.py
@@ -660,7 +660,7 @@
                 #
                 if origin_pack is None:
                     op = lnode.getoperation()
-                    if op.is_primitive_load():
+                    if rop.is_primitive_load(op.opnum):
                         return Pair(lnode, rnode)
                     else:
                         return Pair(lnode, rnode)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to