def test_portal_trace_positions(): jitcode = JitCode("f") jitcode.setup(None) portal = JitCode("portal") portal.setup(None) class FakeStaticData: cpu = None warmrunnerdesc = None mainjitcode = portal metainterp = pyjitpl.MetaInterp(FakeStaticData(), FakeStaticData()) metainterp.framestack = [] class FakeHistory: operations = [] history = metainterp.history = FakeHistory() metainterp.newframe(portal, "green1") history.operations.append(1) metainterp.newframe(jitcode) history.operations.append(2) metainterp.newframe(portal, "green2") history.operations.append(3) metainterp.popframe() history.operations.append(4) metainterp.popframe() history.operations.append(5) metainterp.popframe() history.operations.append(6) assert metainterp.portal_trace_positions == [("green1", 0), ("green2", 2), (None, 3), (None, 5)] assert metainterp.find_biggest_function() == "green1" metainterp.newframe(portal, "green3") history.operations.append(7) metainterp.newframe(jitcode) history.operations.append(8) assert metainterp.portal_trace_positions == [("green1", 0), ("green2", 2), (None, 3), (None, 5), ("green3", 6)] assert metainterp.find_biggest_function() == "green1" history.operations.extend([9, 10, 11, 12]) assert metainterp.find_biggest_function() == "green3"
def test_num_regs(): j = JitCode("test") j.setup(num_regs_i=12, num_regs_r=34, num_regs_f=56) assert j.num_regs_i() == 12 assert j.num_regs_r() == 34 assert j.num_regs_f() == 56 j.setup(num_regs_i=0, num_regs_r=0, num_regs_f=0) assert j.num_regs_i() == 0 assert j.num_regs_r() == 0 assert j.num_regs_f() == 0 j.setup(num_regs_i=255, num_regs_r=255, num_regs_f=255) assert j.num_regs_i() == 255 assert j.num_regs_r() == 255 assert j.num_regs_f() == 255
def test_liveness(): j = JitCode("test") j.setup(liveness={5: (" A", "b", "CD")}) assert j.has_liveness_info(5) assert not j.has_liveness_info(4) assert j._live_vars(5) == "%i32 %i65 %r98 %f67 %f68"