Ejemplo n.º 1
0
 def __init__(self, function, param_types):
     module = Module()
     func_def = ast.parse(inspect.getsource(function)).body[0]
     self.function, self.retval = module.compile_function(
         func_def, param_types)
     self.argval = [param_types[arg.arg] for arg in func_def.args.args]
     self.ee = module.get_ee()
Ejemplo n.º 2
0
    def __init__(self, function, param_types):
        module = Module()

        func_def = ast.parse(inspect.getsource(function)).body[0]
        function, retval = module.compile_function(func_def, param_types)
        argvals = [param_types[arg.arg] for arg in func_def.args.args]

        ee = module.get_ee()
        cfptr = ee.get_pointer_to_global(module.llvm_module_ref.get_function(function.name))
        retval_ctype = _value_to_ctype(retval)
        argval_ctypes = [_value_to_ctype(argval) for argval in argvals]
        self.cfunc = CFUNCTYPE(retval_ctype, *argval_ctypes)(cfptr)

        # HACK: prevent garbage collection of self.cfunc internals
        self.ee = ee
Ejemplo n.º 3
0
    def __init__(self, function, param_types):
        module = Module()

        func_def = ast.parse(inspect.getsource(function)).body[0]
        function, retval = module.compile_function(func_def, param_types)
        argvals = [param_types[arg.arg] for arg in func_def.args.args]

        ee = module.get_ee()
        cfptr = ee.get_pointer_to_global(
            module.llvm_module_ref.get_function(function.name))
        retval_ctype = _value_to_ctype(retval)
        argval_ctypes = [_value_to_ctype(argval) for argval in argvals]
        self.cfunc = CFUNCTYPE(retval_ctype, *argval_ctypes)(cfptr)

        # HACK: prevent garbage collection of self.cfunc internals
        self.ee = ee
Ejemplo n.º 4
0
def get_runtime_binary(env, func_def):
    module = Module(env)
    module.compile_function(func_def, dict())
    return module.emit_object()