def test_split_logs_into_loops(): parts = split_logs_into_loops(examplelog) assert len(parts) == 5 assert "\n".join(parts) == examplelog.strip() for part, typ in zip(parts, [ "Loop0", "Loop1", "bridge out of Guard5", "bridge out of Guard9", "bridge out of Guard12" ]): assert part.startswith("# %s" % typ)
def test_split_logs_into_loops(): parts = split_logs_into_loops(examplelog) assert len(parts) == 5 assert "\n".join(parts) == examplelog.strip() for part, typ in zip(parts, ["Loop0", "Loop1", "bridge out of Guard5", "bridge out of Guard9", "bridge out of Guard12"]): assert part.startswith("# %s" % typ)
def main(argv): parts = split_logs_into_loops(py.path.local(argv[0]).read()) for oplist in parts: loop = parse(oplist, no_namespace=True) num_ops = 0 num_dmp = 0 num_guards = 0 for op in loop.operations: if op.opnum == rop.DEBUG_MERGE_POINT: num_dmp += 1 else: num_ops += 1 if op.is_guard(): num_guards += 1 print "Loop, length: %d, opcodes: %d, guards: %d" % (num_ops, num_dmp, num_guards)
def parse_loops(self, opslogfile): from pypy.jit.metainterp.test.oparser import parse, split_logs_into_loops assert opslogfile.check() logs = opslogfile.read() parts = split_logs_into_loops(logs) # skip entry bridges, they can contain random things self.loops = [parse(part, no_namespace=True) for part in parts if "entry bridge" not in part] self.sliced_loops = [] # contains all bytecodes of all loops for loop in self.loops: for op in loop.operations: if op.getopname() == "debug_merge_point": sliced_loop = BytecodeTrace() sliced_loop.bytecode = op.args[0]._get_str().rsplit(" ", 1)[1] self.sliced_loops.append(sliced_loop) else: sliced_loop.append(op) self.check_0_op_bytecodes()
def test_parse_no_namespace(): parts = split_logs_into_loops(examplelog) for part in parts: loop = parse(part, no_namespace=True)
def main(loopnum, loopfile): data = py.path.local(loopfile).read() loops = split_logs_into_loops(data) inp = loops[loopnum] loop = parse(inp, no_namespace=True) loop.show()