Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: optresult-unroll
Changeset: r79057:ecd1d13ff7d7
Date: 2015-08-19 14:52 +0200
http://bitbucket.org/pypy/pypy/changeset/ecd1d13ff7d7/

Log:    fix a couple more tests

diff --git a/rpython/jit/metainterp/optimizeopt/info.py 
b/rpython/jit/metainterp/optimizeopt/info.py
--- a/rpython/jit/metainterp/optimizeopt/info.py
+++ b/rpython/jit/metainterp/optimizeopt/info.py
@@ -420,8 +420,11 @@
 
 class ArrayStructInfo(ArrayPtrInfo):
     def __init__(self, size, vdescr=None):
+        from rpython.jit.metainterp.optimizeopt import intutils
+
         self.length = size
         lgt = len(vdescr.get_all_fielddescrs())
+        self.lenbound = intutils.ConstIntBound(size)
         self.vdescr = vdescr
         self._items = [None] * (size * lgt)
 
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py 
b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -484,13 +484,21 @@
             newargs = inputargs
         self.init_inparg_dict_from(newargs)
         self.call_pure_results = call_pure_results
-        for op in ops:
+        if ops[-1].getopnum() in (rop.FINISH, rop.JUMP):
+            last = len(ops) - 1
+            extra_jump = True
+        else:
+            extra_jump = False
+            last = len(ops)
+        for i in range(last):
             self._really_emitted_operation = None
-            self.first_optimization.propagate_forward(op)
+            self.first_optimization.propagate_forward(ops[i])
         #self.loop.operations = self.get_newoperations()
         #self.loop.quasi_immutable_deps = self.quasi_immutable_deps
         # accumulate counters
         self.flush()
+        if extra_jump:
+            self.first_optimization.propagate_forward(ops[-1])
         self.resumedata_memo.update_counters(self.metainterp_sd.profiler)
         return BasicLoopInfo(newargs), self._newoperations
 
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
@@ -568,8 +568,8 @@
         i3 = getfield_gc_i(p3, descr=valuedescr)
         escape_n(i3)
         p1 = new_with_vtable(descr=nodesize)
+        p1sub = new_with_vtable(descr=nodesize2)
         setfield_gc(p1, i1, descr=valuedescr)
-        p1sub = new_with_vtable(descr=nodesize2)
         setfield_gc(p1sub, i1, descr=valuedescr)
         setfield_gc(p1, p1sub, descr=nextdescr)
         jump(i1, p1, p2)
@@ -584,10 +584,10 @@
         p3sub = getfield_gc_r(p3, descr=nextdescr)
         i3 = getfield_gc_i(p3sub, descr=valuedescr)
         escape_n(i3)
+        p2sub = new_with_vtable(descr=nodesize2)
+        setfield_gc(p2, p2sub, descr=nextdescr)
         p1 = new_with_vtable(descr=nodesize)
-        p2sub = new_with_vtable(descr=nodesize2)
         setfield_gc(p2sub, i1, descr=valuedescr)
-        setfield_gc(p2, p2sub, descr=nextdescr)
         jump(i1, p1, p2)
         """
         # The same as test_p123_simple, but in the end the "old" p2 contains
@@ -3040,9 +3040,9 @@
         p3 = force_token()
         #
         p2 = new_with_vtable(descr=vref_descr)
+        setfield_gc(p0, p2, descr=nextdescr)
+        setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p2, p3, descr=virtualtokendescr)
-        setfield_gc(p2, NULL, descr=virtualforceddescr)
-        setfield_gc(p0, p2, descr=nextdescr)
         #
         call_may_force_n(i1, descr=mayforcevirtdescr)
         guard_not_forced() [i1]
@@ -3051,9 +3051,9 @@
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         p1 = new_with_vtable(descr=nodesize)
         p1b = new_with_vtable(descr=nodesize)
+        setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p1b, 252, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
-        setfield_gc(p2, p1, descr=virtualforceddescr)
         jump(p0, i1)
         """
         self.optimize_loop(ops, expected)
@@ -3080,9 +3080,9 @@
         p3 = force_token()
         #
         p2 = new_with_vtable(descr=vref_descr)
+        setfield_gc(p0, p2, descr=nextdescr)
+        setfield_gc(p2, NULL, descr=virtualforceddescr)
         setfield_gc(p2, p3, descr=virtualtokendescr)
-        setfield_gc(p2, NULL, descr=virtualforceddescr)
-        setfield_gc(p0, p2, descr=nextdescr)
         #
         call_may_force_n(i1, descr=mayforcevirtdescr)
         guard_not_forced() [p2, i1]
@@ -3091,9 +3091,9 @@
         setfield_gc(p2, NULL, descr=virtualtokendescr)
         p1 = new_with_vtable(descr=nodesize)
         p1b = new_with_vtable(descr=nodesize)
+        setfield_gc(p2, p1, descr=virtualforceddescr)
         setfield_gc(p1b, i1, descr=valuedescr)
         setfield_gc(p1, p1b, descr=nextdescr)
-        setfield_gc(p2, p1, descr=virtualforceddescr)
         jump(p0, i1)
         """
         # the point of this test is that 'i1' should show up in the fail_args
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py 
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -145,6 +145,8 @@
         args = [self.get_box_replacement(op) for op in jump_op.getarglist()]
         target_token = jitcelltoken.target_tokens[0]
         virtual_state = self.get_virtual_state(args)
+        target_virtual_state = target_token.virtual_state
+        
         short_preamble = target_token.short_preamble
         extra = self.inline_short_preamble(args,
             short_preamble[0].getarglist(), short_preamble[1:-1],
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to