[pypy-commit] pypy vecopt-merge: adapted tests to ignore the jump. the jump operation is not tracked anymore as a dependency, but it is always emitted at the latest position in the trace

plan_rich noreply at buildbot.pypy.org
Wed Aug 19 14:03:31 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: vecopt-merge
Changeset: r79054:fc7129745344
Date: 2015-08-19 14:03 +0200
http://bitbucket.org/pypy/pypy/changeset/fc7129745344/

Log:	adapted tests to ignore the jump. the jump operation is not tracked
	anymore as a dependency, but it is always emitted at the latest
	position in the trace

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
@@ -62,13 +62,15 @@
             count -= 1
         while i < count: 
             op = self.path[i].getoperation()
-            if not op.is_always_pure():
-                return False
             if op.is_guard():
                 descr = op.getdescr()
+                if not descr:
+                    return False
                 assert isinstance(descr, ResumeGuardDescr)
-                if not descr or not descr.exits_early():
+                if not descr.exits_early():
                     return False
+            elif not op.is_always_pure():
+                return False
             i += 1
         return True
 
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
@@ -82,6 +82,7 @@
         self.renamer = renamer
         self.oplist = oplist
         self.unpack = unpack
+
         while self.has_more():
             i = self.next_index(self.schedulable_nodes)
             if i >= 0:
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
@@ -59,7 +59,7 @@
                 dependency = node_a.getedge_to(node_b)
                 if dependency is None and idx_b not in exceptions.setdefault(idx,[]):
                     self.show_dot_graph(graph, self.test_name + '_except')
-                    assert dependency is not None, \
+                    assert dependency is not None or node_b.getopnum() == rop.JUMP, \
                        " it is expected that instruction at index" + \
                        " %s depends on instr on index %s but it does not.\n%s" \
                             % (node_a, node_b, graph)
@@ -168,8 +168,6 @@
         self.assert_dependent(1,2)
         self.assert_dependent(2,3)
         self.assert_dependent(1,3)
-        self.assert_dependent(2,4)
-        self.assert_dependent(3,4)
 
     def test_def_use_jump_use_def(self):
         ops = """
@@ -336,7 +334,6 @@
         jump(p0, i1) # 4:
         """
         self.assert_dependencies(ops, full_check=True)
-        assert self.last_graph.getnode(1).provides_count() == 1
         self.assert_independent(1,2)
         self.assert_independent(1,3) # they modify 2 different cells
 
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -55,7 +55,7 @@
             for i,op in enumerate(loop.operations):
                 if op.getopnum() == rop.LABEL:
                     op.setdescr(tt)
-        loop.operations = pre + loop.operations
+        loop.operations = pre + filter(lambda op: op.getopnum() != rop.DEBUG_MERGE_POINT, loop.operations)
         if loop.operations[-1].getopnum() == rop.JUMP:
             loop.operations[-1].setdescr(token)
         for op in loop.operations:
@@ -1495,8 +1495,8 @@
         debug_merge_point(0, 0, '<code object <module>. file '/home/rich/fijal.py'. line 2> #34 FOR_ITER')
         jump(p0, p1, p5, p6, p7, p9, p11, p70)
         """        
-        opt = self.schedule(self.parse_loop(trace))
-        self.debug_print_operations(opt.loop)
+        #opt = self.schedule(self.parse_loop(trace))
+        #self.debug_print_operations(opt.loop)
 
 class TestLLtype(BaseTestVectorize, LLtypeMixin):
     pass
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -555,7 +555,6 @@
                             continue
                         ee_guard_node.remove_edge_to(last_but_one)
                         #label_node.edge_to(last_but_one, label='pullup')
-                print "guard", guard_node, "moved earlier"
                 # only the last guard needs a connection
                 guard_node.edge_to(ee_guard_node, label='pullup-last-guard')
                 self.relax_guard_to(guard_node, ee_guard_node)


More information about the pypy-commit mailing list