On this page:
6.1 Execution Engine
llvm-create-execution-engine-for-module
llvm-get-function-address
llvm-get-execution-engine-target-data
llvm-get-execution-engine-target-machine
6.2 Running Functions
llvm-run-function
6.3 Generic Values
llvm-create-generic-value-of-int
llvm-create-generic-value-of-float
llvm-generic-value->int
llvm-generic-value-to-float
9.0

6 JIT🔗ℹ

Functions for JIT compilation and execution of LLVM IR.

6.1 Execution Engine🔗ℹ

return an execution engine for given module

procedure

(llvm-get-function-address engine name)

  exact-nonnegative-integer?
  engine : LLVMExecutionEngineRef?
  name : string?
Returns the address of the compiled function with the given name. The returned integer can be cast to a function pointer using Racket FFI.

procedure

(llvm-get-execution-engine-target-data engine)

  LLVMTargetDataRef?
  engine : LLVMExecutionEngineRef?
Returns the target data associated with the execution engine.

procedure

(llvm-get-execution-engine-target-machine engine)

  LLVMTargetMachineRef?
  engine : LLVMExecutionEngineRef?
Returns the target machine associated with the execution engine.

6.2 Running Functions🔗ℹ

procedure

(llvm-run-function engine function)  LLVMGenericValueRef?

  engine : LLVMExecutionEngineRef?
  function : LLVMValueRef?
run given function on engine, it returns result as LLVMGenericValueRef?

6.3 Generic Values🔗ℹ

Generic values are used to pass arguments to and receive results from JIT-compiled functions.

procedure

(llvm-create-generic-value-of-int type 
  value 
  signed?) 
  LLVMGenericValueRef?
  type : LLVMTypeRef?
  value : integer?
  signed? : boolean?
Converted given value to LLVMGenericValueRef?. type decided it’s LLVM type corresponding. signed? decided it’s signed integer or not.

procedure

(llvm-create-generic-value-of-float type 
  value) 
  LLVMGenericValueRef?
  type : LLVMTypeRef?
  value : number?
Converted given value to LLVMGenericValueRef?. type decided it’s LLVM type corresponding.

procedure

(llvm-generic-value->int generic-value    
  signed?)  integer?
  generic-value : LLVMGenericValueRef?
  signed? : boolean?
convert generic-value back to racket integer?. signed? decided treat it as a signed integer or not.

procedure

(llvm-generic-value-to-float type    
  generic-value)  number?
  type : LLVMTypeRef?
  generic-value : LLVMGenericValueRef?
convert generic-value back to racket number?