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