Author: Maciej Fijalkowski <[email protected]>
Branch: optresult-unroll
Changeset: r79248:6f2e5221c6f2
Date: 2015-08-27 11:48 +0200
http://bitbucket.org/pypy/pypy/changeset/6f2e5221c6f2/

Log:    fix test_optimizebridge

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
@@ -9,8 +9,10 @@
     enable_opts = 
"intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll"
 
     def optimize(self, ops, bridge_ops, expected, expected_loop=None,
-                 inline_short_preamble=True):
+                 inline_short_preamble=True, jump_values=None,
+                 bridge_values=None):
         loop = self.parse(ops, postprocess=self.postprocess)
+        self.set_values(loop.operations, jump_values)
         if expected_loop is not None:
             xxx
             exp_loop = self.parse(expected_loop, postprocess=self.postprocess)
@@ -28,6 +30,7 @@
         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.operations[-1].setdescr(jitcell_token)
         self.add_guard_future_condition(bridge)
@@ -115,7 +118,9 @@
         [p0]
         jump(1, 3)
         """
-        self.optimize(loop, bridge, expected)
+        self.optimize(loop, bridge, expected,
+                      jump_values=[None, self.simpleaddr],
+                      bridge_values=[None, self.simpleaddr])
 
     def test_virtual_state_guard_needed(self):
         pass
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -48,15 +48,7 @@
                       call_pure_results=None, expected_short=None,
                       jump_values=None):
         loop = self.parse(ops, postprocess=self.postprocess)
-        jump_op = loop.operations[-1]
-        if jump_values is not None:
-            for i, v in enumerate(jump_values):
-                if v is not None:
-                    jump_op.getarg(i).setref_base(v)
-        else:
-            for i, box in enumerate(jump_op.getarglist()):
-                if box.type == 'r' and not box.is_constant():
-                    box.setref_base(self.nodefulladdr)
+        self.set_values(loop.operations, jump_values)
         if expected != "crash!":
             expected = self.parse(expected)
         if expected_preamble:
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
@@ -233,6 +233,8 @@
     simplevalue = cpu.fielddescrof(SIMPLE, 'value')
     simple_vtable = lltype.malloc(OBJECT_VTABLE, immortal=True)
     simpledescr = cpu.sizeof(SIMPLE, simple_vtable)
+    simple = lltype.malloc(SIMPLE, zero=True)
+    simpleaddr = lltype.cast_opaque_ptr(llmemory.GCREF, simple)
     #usize = cpu.sizeof(U, ...)
     onedescr = cpu.fielddescrof(U, 'one')
 
@@ -515,6 +517,19 @@
         return Info(preamble, loop_info.target_token.short_preamble,
                     start_state.virtual_state)
 
+    def set_values(self, ops, jump_values=None):
+        jump_op = ops[-1]
+        assert jump_op.getopnum() == rop.JUMP
+        if jump_values is not None:
+            for i, v in enumerate(jump_values):
+                if v is not None:
+                    jump_op.getarg(i).setref_base(v)
+        else:
+            for i, box in enumerate(jump_op.getarglist()):
+                if box.type == 'r' and not box.is_constant():
+                    box.setref_base(self.nodefulladdr)
+
+
 
 class FakeDescr(compile.ResumeGuardDescr):
     def clone_if_mutable(self):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to