Beispiel #1
0
def main (*args, **kws):
    m = llvm_module_from_c_source(TEST_SRC)
    print m
    ee = llvm.ee.ExecutionEngine.new(m)
    init_fn = m.get_function_named('initdemoext')
    ee.run_function(init_fn, [])
    demoext = sys.modules['demoext']
    assert demoext.demofn() == 42L
Beispiel #2
0
def py_module_from_c_source (module_name, c_source, *args):
    global __dyngen_modules__
    c_source_hash = hash(c_source)
    if c_source_hash in __dyngen_modules__:
        ret_val = __dyngen_modules__[-1]
    else:
        llvm_module = llvm_module_from_c_source(c_source, *args)
        init_fn = llvm_module.get_function_named('init' + module_name)
        ee = llvm.ee.ExecutionEngine.new(llvm_module)
        ee.run_function(init_fn, [])
        ret_val = sys.modules[module_name]
        __dyngen_modules__[c_source_hash] = (llvm_module, ee, ret_val)
    return ret_val
Beispiel #3
0
def debug_in_gdb(lfunc):
    # Create an execution engine object. This will create a JIT compiler
    # on platforms that support it, or an interpreter otherwise.
    module = lfunc.module
    ee = llvm.ee.ExecutionEngine.new(module)
    float_type = lfunc.args[0].type

    # The arguments needs to be passed as "GenericValue" objects.
    arg1_value = 5.0
    arg1 = llvm.ee.GenericValue.real(float_type, arg1_value)

    # Now let's compile and run!
    retval = ee.run_function(lfunc, [arg1])
    print(retval.as_real(float_type))
Beispiel #4
0
def debug_in_gdb(lfunc):
    # Create an execution engine object. This will create a JIT compiler
    # on platforms that support it, or an interpreter otherwise.
    module = lfunc.module
    ee = llvm.ee.ExecutionEngine.new(module)
    float_type = lfunc.args[0].type

    # The arguments needs to be passed as "GenericValue" objects.
    arg1_value = 5.0
    arg1 = llvm.ee.GenericValue.real(float_type, arg1_value)

    # Now let's compile and run!
    retval = ee.run_function(lfunc, [arg1])
    print(retval.as_real(float_type))
Beispiel #5
0
def execute(module, llvmfunc):
    ee = llvm.ee.ExecutionEngine.new(module)
    retval = ee.run_function(llvmfunc, [])
    print >> sys.stderr, "retval is %s" % retval.as_int()
    return retval
Beispiel #6
0
def execute(module, llvmfunc):
    ee = llvm.ee.ExecutionEngine.new(module)
    retval = ee.run_function(llvmfunc, [])
    print >> sys.stderr, "retval is %s" % retval.as_int()
    return retval