Method: LLVM::ExecutionEngine#run_function
- Defined in:
- lib/llvm/execution_engine.rb
#run_function(fun, *args) ⇒ Object
Execute the given LLVM::Function with the supplied args (as GenericValues). Important: Call #dispose on the returned GenericValue to free backend memory after use.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/llvm/execution_engine.rb', line 63 def run_function(fun, *args) FFI::MemoryPointer.new(FFI.type_size(:pointer) * args.size) do |args_ptr| new_values = [] args_ptr.write_array_of_pointer(fun.params.zip(args).map do |p, a| if a.kind_of?(GenericValue) a else value = LLVM.make_generic_value(p.type, a) new_values << value value end end) result = LLVM::GenericValue.from_ptr( C.run_function(self, fun, args.size, args_ptr)) new_values.each(&:dispose) return result end end |