コード例 #1
0
ファイル: c_codegen.py プロジェクト: flypy/pykit
def translate(func, env, _):
    emit = lambda s, *args: sys.stdout.write(format(s, *args) + "\n")

    # -- Create visitor -- #
    translator = Translator(func, env, emit)
    visitor = opgrouper(translator)

    # -- Codegen -- #
    argloader = CArgLoader()
    valuemap = vvisit(visitor, func, argloader)
コード例 #2
0
def translate(func, env, _):
    emit = lambda s, *args: sys.stdout.write(format(s, *args) + "\n")

    # -- Create visitor -- #
    translator = Translator(func, env, emit)
    visitor = opgrouper(translator)

    # -- Codegen -- #
    argloader = CArgLoader()
    valuemap = vvisit(visitor, func, argloader)
コード例 #3
0
ファイル: llvm_codegen.py プロジェクト: aterrel/pykit
def translate(func, env, lfunc):
    engine, llvm_module = env["codegen.llvm.engine"], env["codegen.llvm.module"]
    blockmap = allocate_blocks(lfunc, func)

    ### Create visitor ###
    translator = Translator(func, env, lfunc, llvm_type, llvm_module)
    visitor = opgrouper(translator)

    ### Codegen ###
    argloader = LLVMArgLoader(None, engine, llvm_module, lfunc, blockmap)
    valuemap = vvisit(visitor, func, argloader)
    update_phis(translator.phis, valuemap, argloader)

    return lfunc
コード例 #4
0
def translate(func, env, lfunc):
    engine, llvm_module = env["codegen.llvm.engine"], env["codegen.llvm.module"]
    blockmap = allocate_blocks(lfunc, func)

    ### Create visitor ###
    translator = Translator(func, env, lfunc, llvm_type, llvm_module)
    visitor = opgrouper(translator)

    ### Codegen ###
    argloader = LLVMArgLoader(None, engine, llvm_module, lfunc, blockmap)
    valuemap = vvisit(visitor, func, argloader)
    update_phis(translator.phis, valuemap, argloader)

    return lfunc
コード例 #5
0
ファイル: llvm_codegen.py プロジェクト: pombredanne/pykit
def translate(func, engine, llvm_module):
    verify_lowlevel(func)

    ### Create lfunc ###
    lfunc = llvm_module.add_function(llvm_type(func.type), func.name)
    blockmap = allocate_blocks(lfunc, func)

    ### Create visitor ###
    translator = Translator(func, lfunc, llvm_type, llvm_module)
    visitor = opgrouper(translator)

    ### Codegen ###
    argloader = LLVMArgLoader(None, engine, llvm_module, lfunc, blockmap)
    valuemap = vvisit(visitor, func, argloader)
    update_phis(translator.phis, valuemap, argloader)

    return lfunc