jit/metainterp/test/test_warmspot.py::TestLLWarmspot::()::test_simple_loop
self = <rpython.jit.metainterp.test.test_warmspot.TestLLWarmspot instance at 0x7f3a7afc3910>
def test_simple_loop(self):
mydriver = JitDriver(greens=[], reds=['m'])
def f1(m):
while m > 0:
mydriver.jit_merge_point(m=m)
m = m - 1
self.meta_interp(f1, [8])
self.check_trace_count(1)
self.check_resops({'jump': 1, 'guard_true': 2, 'int_gt': 2,
> 'int_sub': 2})
jit/metainterp/test/test_warmspot.py:252:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
jit/metainterp/test/support.py:199: in check_resops
get_stats().check_resops(expected=expected, **check)
jit/metainterp/history.py:969: in check_resops
return self._check_insns(insns, expected, check)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <rpython.jit.metainterp.history.Stats object at 0x7f3a7af9f3d0>
insns = {'guard_true': 2, 'int_add': 2, 'int_gt': 2, 'jump': 1}
expected = {'guard_true': 2, 'int_gt': 2, 'int_sub': 2, 'jump': 1}, check = {}
def _check_insns(self, insns, expected, check):
if expected is not None:
insns.pop('debug_merge_point', None)
insns.pop('enter_portal_frame', None)
insns.pop('leave_portal_frame', None)
insns.pop('label', None)
> assert insns == expected
E assert {'guard_true'... 2, 'jump': 1} == {'guard_true':... 2, 'jump': 1}
E Omitting 3 identical items, use -v to show
E Left contains more items:
E {'int_add': 2}
E Right contains more items:
E {'int_sub': 2}
E Use -v to get the full diff
jit/metainterp/history.py:977: AssertionError
---------- Captured stdout call ----------
bh: goto_if_not_int_gt [0, 0, 30, 27] -> 30
bh: void_return [<BHInterp <JitCode 'f1'>>] -> LeaveFrame!
~~~ return value: None
---------- Captured stderr call ----------
[rtyper] -=- specialized 6 blocks -=-
[rtyper] -=- specialized 4 more blocks -=-
[rtyper] -=- specialized 2 more blocks -=-
[rtyper] -=- specialized 7 more blocks -=-
[rtyper] -=- specialized 6 more blocks -=-
[rtyper] -=- specialized 17 more blocks -=-
[rtyper] -=- specialized 2 more blocks -=-
[rtyper] -=- specialized 3 more blocks -=-
[jitcodewriter:info] making JitCodes...
[jitcodewriter:info] There are 1 JitCode instances.
[jitcodewriter:info] There are 3 -live- ops. Size of liveness is 4 bytes
[jitcodewriter] compute_bitstrings:
[jitcodewriter] 0 effectinfos:
[jitcodewriter] 0 descrs for arrays
[jitcodewriter] 0 descrs for fields
[jitcodewriter] 0 descrs for interiorfields
[c5fd55107ee1c00] {jit-tracing
JIT starting (llgraph)
(jitdriver: no get_printable_location)
(jitdriver: no get_printable_location)
[c5fd55107f68c00] {jit-trace-done
trace length: 37
number operations: 7
total snapshots: 2
snapshot data: 24
snapshot array data: 10
bigint consts: 0 0
float consts: 0 0
ref consts: 0 0 1
descrs: 1
[c5fd55107f7d400] jit-trace-done}
[c5fd55107f9ac80] {jit-log-noopt
# Traced loop or bridge with 7 ops
[i0]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i2 = int_sub(i0, 1)
i4 = int_gt(i2, 0)
guard_true(i4)
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
guard_future_condition()
jump(i2, descr=<Loop-1>)
[c5fd55107fc6d80] jit-log-noopt}
[c5fd55107fcf880] {jit-optimize
[c5fd55107fdf080] {jit-log-intbounds
[i0]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i2 = int_add(i0, -1)
i4 = int_gt(i2, 0)
guard_true(i4, descr=<rpython.jit.metainterp.compile.ResumeGuardDescr object at 0x7f3a7aef6a90>) [i2]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
[c5fd5510817ae00] jit-log-intbounds}
[c5fd551081b0600] {jit-log-exported-state
[i5]
INP(i5 = int_add(i6, -1/ci))
PureOp(i7 = int_gt(i5, 0/ci))
[c5fd551081bd680] jit-log-exported-state}
[c5fd551081c2900] jit-optimize}
[c5fd551081d2280] {jit-optimize
[c5fd5510822c480] {jit-log-intbounds
[i0]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
# i1: (1 <= 0b0?...?) IntBound(1, MAXINT)
i3 = int_add(i1, -1)
# i3: (0 <= 0b0?...? <= MAXINT - 1) IntBound(0, MAXINT - 1)
i5 = int_gt(i3, 0)
guard_true(i5, descr=<rpython.jit.metainterp.compile.ResumeGuardDescr object at 0x7f3a7aef6a50>) [i3]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
[c5fd5510843d300] jit-log-intbounds}
# i3: (1 <= 0b0?...?) IntBound(1, MAXINT)
jump(i3, descr=TargetToken(139889147366160))
[c5fd551084bad00] jit-optimize}
[c5fd551084c1a80] {jit-log-short-preamble
[]
label(i8)
jump()
[c5fd551084cbe80] jit-log-short-preamble}
[c5fd551084e0280] {jit-backend
[c5fd551084ecb80] {jit-log-compiling-loop
[i6]
label(i6, descr=TargetToken(139889148792592))
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i5 = int_add(i6, -1)
i7 = int_gt(i5, 0)
guard_true(i7, descr=<Guard0x7f3a7aef6a90>) [i5]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
label(i5, descr=TargetToken(139889147366160))
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i12 = int_add(i5, -1)
i14 = int_gt(i12, 0)
guard_true(i14, descr=<Guard0x7f3a7aef6a50>) [i12]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
jump(i12, descr=TargetToken(139889147366160))
[c5fd55108512d00] jit-log-compiling-loop}
[c5fd55108520f80] {jit-mem-looptoken-alloc
allocating Loop # 1
[c5fd55108526f80] jit-mem-looptoken-alloc}
[c5fd55108550380] jit-backend}
compiled new loop
[c5fd55108558600] {jit-log-opt-loop
# Loop 1 ((jitdriver: no get_printable_location)) : loop with 13 ops
[i0]
label(i0, descr=TargetToken(139889148792592))
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i2 = int_add(i0, -1)
i4 = int_gt(i2, 0)
guard_true(i4, descr=<Guard0x7f3a7aef6a90>) [i2]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
label(i2, descr=TargetToken(139889147366160))
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
i6 = int_add(i2, -1)
i8 = int_gt(i6, 0)
guard_true(i8, descr=<Guard0x7f3a7aef6a50>) [i6]
debug_merge_point(0, 0, '(jitdriver: no get_printable_location)')
jump(i6, descr=TargetToken(139889147366160))
[c5fd55108583b80] jit-log-opt-loop}
DoneWithThisFrameVoid
[c5fd55108617b00] jit-tracing}
builder: rpython-linux-x86-64 build #918+
test: jit/metainterp/test/test_warmspot.py::TestLLWarmspot::()::test_simple_loop