def copy_module(module, temper=None): raise NotImplementedError("not finished, needs to insert all functions" "in valuemap first") new_module = Module(temper=temper) valuemap = {} ### Copy Globals for name, gv in module.globals.iteritems(): name = new_module.temp(name) new_global = GlobalValue(name, gv.type, gv.external, gv.address, gv.value) new_module.add_global(new_global) valuemap[gv] = new_global ### Copy Functions for name, func in module.functions.iteritems(): new_func, _ = copy_function(func, module=new_module) new_func.name = new_module.temp(name) new_module.add_function(new_func) valuemap[func] = new_func return new_module
def __init__(self, type_env=None): self.mod = Module() self.type_env = type_env or {} self.func = None self.builder = None self.local_vars = None self.allocas = None self.global_vars = {} self.functions = {}
def from_assembly(source, parser=grammar_parser): """Parse pykit assembly and return a Module""" result = build(parse(source, parser)) mod = Module() for value in result: if isinstance(value, GlobalValue): mod.add_global(value) else: mod.add_function(value) return mod