def bloc_table(blocs): d = {} for bloc in blocs: real_insns = [] for ins in bloc.insns: if isinstance(ins, pyc_asm_nodes.PseudoInst): continue real_insns.append({ 'sir_lineno': ins.origin.lineno, 'src_lineno': pyc_lineage.src_lineno(ins.origin), 'live': get_vars(ins.live), 'dummy': False }) bloc_src_lineno = pyc_lineage.src_lineno(bloc.origin) dummy_prefix_insns = [{ 'src_lineno': bloc_src_lineno, 'sir_lineno': bloc.origin.lineno, 'live': set([]), 'dummy': True }]*bloc.preamble_size() dummy_suffix_insns = [{ 'src_lineno': bloc_src_lineno, 'sir_lineno': bloc.origin.lineno, 'live': set([]), 'dummy': True }]*bloc.postamble_size() d[bloc.name] = { 'insns': dummy_prefix_insns + real_insns + dummy_suffix_insns, 'src_lineno': bloc_src_lineno, 'sir_lineno': bloc.origin.lineno, 'mem_map': bloc.symtbl.mem_map } return d
def visit_Assign(self, node): self.log("Assign(%d): %s" % (pyc_lineage.src_lineno(node), ast.dump(node) )) (name, name_sir_list) = pyc_vis.visit(self, node.value) if isinstance(node.targets[0], ast.Name): target = node.targets[0] target_sir_list = [] else: (target, target_sir_list) = pyc_vis.visit(self, node.targets[0]) sir_list = name_sir_list + target_sir_list sir_list.append(self.make_assign( target, name )) return (None, sir_list)
def default_ast(self, node, *args, **kwargs): val = "%s():%d" % (node.__class__.__name__, pyc_lineage.src_lineno(node) ) print >>self.io, self.format(self.depth, kwargs.get("field", ""), val)
def lineno(self, node): if not self.src_line_comments: return self.lineno_str(node.lineno) else: return self.src_lineno_str(node.lineno, pyc_lineage.src_lineno(node) )