LLVM  12.0.0git
Typedefs | Functions | Variables
LLJIT.h File Reference
#include "llvm-c/Error.h"
#include "llvm-c/Orc.h"
#include "llvm-c/TargetMachine.h"
#include "llvm-c/Types.h"
Include dependency graph for LLJIT.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef struct LLVMOrcOpaqueLLJITBuilder * LLVMOrcLLJITBuilderRef
 A reference to an orc::LLJITBuilder instance. More...
 
typedef struct LLVMOrcOpaqueLLJIT * LLVMOrcLLJITRef
 A reference to an orc::LLJIT instance. More...
 

Functions

LLVMOrcLLJITBuilderRef LLVMOrcCreateLLJITBuilder (void)
 Create an LLVMOrcLLJITBuilder. More...
 
void LLVMOrcDisposeLLJITBuilder (LLVMOrcLLJITBuilderRef Builder)
 Dispose of an LLVMOrcLLJITBuilderRef. More...
 
void LLVMOrcLLJITBuilderSetJITTargetMachineBuilder (LLVMOrcLLJITBuilderRef Builder, LLVMOrcJITTargetMachineBuilderRef JTMB)
 Set the JITTargetMachineBuilder to be used when constructing the LLJIT instance. More...
 
void LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator (LLVMOrcLLJITBuilderRef Builder, LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction F, void *Ctx)
 Set an ObjectLinkingLayer creator function for this LLJIT instance. More...
 
LLVMErrorRef LLVMOrcCreateLLJIT (LLVMOrcLLJITRef *Result, LLVMOrcLLJITBuilderRef Builder)
 Create an LLJIT instance from an LLJITBuilder. More...
 
LLVMErrorRef LLVMOrcDisposeLLJIT (LLVMOrcLLJITRef J)
 Dispose of an LLJIT instance. More...
 
LLVMOrcExecutionSessionRef LLVMOrcLLJITGetExecutionSession (LLVMOrcLLJITRef J)
 Get a reference to the ExecutionSession for this LLJIT instance. More...
 
LLVMOrcJITDylibRef LLVMOrcLLJITGetMainJITDylib (LLVMOrcLLJITRef J)
 Return a reference to the Main JITDylib. More...
 
const charLLVMOrcLLJITGetTripleString (LLVMOrcLLJITRef J)
 Return the target triple for this LLJIT instance. More...
 
char LLVMOrcLLJITGetGlobalPrefix (LLVMOrcLLJITRef J)
 Returns the global prefix character according to the LLJIT's DataLayout. More...
 
LLVMOrcSymbolStringPoolEntryRef LLVMOrcLLJITMangleAndIntern (LLVMOrcLLJITRef J, const char *UnmangledName)
 Mangles the given string according to the LLJIT instance's DataLayout, then interns the result in the SymbolStringPool and returns a reference to the pool entry. More...
 
LLVMErrorRef LLVMOrcLLJITAddObjectFile (LLVMOrcLLJITRef J, LLVMOrcJITDylibRef JD, LLVMMemoryBufferRef ObjBuffer)
 Add a buffer representing an object file to the given JITDylib in the given LLJIT instance. More...
 
LLVMErrorRef LLVMOrcLLJITAddObjectFileWithRT (LLVMOrcLLJITRef J, LLVMOrcResourceTrackerRef RT, LLVMMemoryBufferRef ObjBuffer)
 Add a buffer representing an object file to the given ResourceTracker's JITDylib in the given LLJIT instance. More...
 
LLVMErrorRef LLVMOrcLLJITAddLLVMIRModule (LLVMOrcLLJITRef J, LLVMOrcJITDylibRef JD, LLVMOrcThreadSafeModuleRef TSM)
 Add an IR module to the given JITDylib in the given LLJIT instance. More...
 
LLVMErrorRef LLVMOrcLLJITAddLLVMIRModuleWithRT (LLVMOrcLLJITRef J, LLVMOrcResourceTrackerRef JD, LLVMOrcThreadSafeModuleRef TSM)
 Add an IR module to the given ResourceTracker's JITDylib in the given LLJIT instance. More...
 
LLVMErrorRef LLVMOrcLLJITLookup (LLVMOrcLLJITRef J, LLVMOrcJITTargetAddress *Result, const char *Name)
 Look up the given symbol in the main JITDylib of the given LLJIT instance. More...
 

Variables

LLVM_C_EXTERN_C_BEGIN typedef LLVMOrcObjectLayerRef(* LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction )(void *Ctx, LLVMOrcExecutionSessionRef ES, const char *Triple)
 A function for constructing an ObjectLinkingLayer instance to be used by an LLJIT instance. More...
 

Typedef Documentation

◆ LLVMOrcLLJITBuilderRef

typedef struct LLVMOrcOpaqueLLJITBuilder* LLVMOrcLLJITBuilderRef

A reference to an orc::LLJITBuilder instance.

Definition at line 54 of file LLJIT.h.

◆ LLVMOrcLLJITRef

typedef struct LLVMOrcOpaqueLLJIT* LLVMOrcLLJITRef

A reference to an orc::LLJIT instance.

Definition at line 59 of file LLJIT.h.

Function Documentation

◆ LLVMOrcCreateLLJIT()

LLVMErrorRef LLVMOrcCreateLLJIT ( LLVMOrcLLJITRef Result,
LLVMOrcLLJITBuilderRef  Builder 
)

Create an LLJIT instance from an LLJITBuilder.

This operation takes ownership of the Builder argument: clients should not dispose of the builder after calling this function (even if the function returns an error). If a null Builder argument is provided then a default-constructed LLJITBuilder will be used.

On success the resulting LLJIT instance is uniquely owned by the client and automatically manages the memory of all JIT'd code and all modules that are transferred to it (e.g. via LLVMOrcLLJITAddLLVMIRModule). Disposing of the LLJIT instance will free all memory managed by the JIT, including JIT'd code and not-yet compiled modules.

Definition at line 424 of file OrcV2CBindings.cpp.

References assert(), Builder, LLVMErrorSuccess, LLVMOrcCreateLLJITBuilder(), LLVMOrcDisposeLLJITBuilder(), llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcCreateLLJITBuilder()

LLVMOrcLLJITBuilderRef LLVMOrcCreateLLJITBuilder ( void  )

Create an LLVMOrcLLJITBuilder.

The client owns the resulting LLJITBuilder and should dispose of it using LLVMOrcDisposeLLJITBuilder once they are done with it.

Definition at line 400 of file OrcV2CBindings.cpp.

References llvm::wrap().

Referenced by LLVMOrcCreateLLJIT().

Here is the caller graph for this function:

◆ LLVMOrcDisposeLLJIT()

LLVMErrorRef LLVMOrcDisposeLLJIT ( LLVMOrcLLJITRef  J)

Dispose of an LLJIT instance.

Definition at line 443 of file OrcV2CBindings.cpp.

References LLVMErrorSuccess, and llvm::unwrap().

◆ LLVMOrcDisposeLLJITBuilder()

void LLVMOrcDisposeLLJITBuilder ( LLVMOrcLLJITBuilderRef  Builder)

Dispose of an LLVMOrcLLJITBuilderRef.

This should only be called if ownership has not been passed to LLVMOrcCreateLLJIT (e.g. because some error prevented that function from being called).

Definition at line 404 of file OrcV2CBindings.cpp.

References Builder, and llvm::unwrap().

Referenced by LLVMOrcCreateLLJIT().

Here is the caller graph for this function:

◆ LLVMOrcLLJITAddLLVMIRModule()

LLVMErrorRef LLVMOrcLLJITAddLLVMIRModule ( LLVMOrcLLJITRef  J,
LLVMOrcJITDylibRef  JD,
LLVMOrcThreadSafeModuleRef  TSM 
)

Add an IR module to the given JITDylib in the given LLJIT instance.

This operation transfers ownership of the TSM argument to the LLJIT instance. The TSM argument should not be disposed of or referenced once this function returns.

Resources associated with the given Module will be tracked by the given JITDylib's default resource tracker.

Definition at line 484 of file OrcV2CBindings.cpp.

References llvm::move(), llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITAddLLVMIRModuleWithRT()

LLVMErrorRef LLVMOrcLLJITAddLLVMIRModuleWithRT ( LLVMOrcLLJITRef  J,
LLVMOrcResourceTrackerRef  JD,
LLVMOrcThreadSafeModuleRef  TSM 
)

Add an IR module to the given ResourceTracker's JITDylib in the given LLJIT instance.

This operation transfers ownership of the TSM argument to the LLJIT instance. The TSM argument should not be disposed of or referenced once this function returns.

Resources associated with the given Module will be tracked by ResourceTracker RT.

Definition at line 491 of file OrcV2CBindings.cpp.

References llvm::move(), llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITAddObjectFile()

LLVMErrorRef LLVMOrcLLJITAddObjectFile ( LLVMOrcLLJITRef  J,
LLVMOrcJITDylibRef  JD,
LLVMMemoryBufferRef  ObjBuffer 
)

Add a buffer representing an object file to the given JITDylib in the given LLJIT instance.

This operation transfers ownership of the buffer to the LLJIT instance. The buffer should not be disposed of or referenced once this function returns.

Resources associated with the given object will be tracked by the given JITDylib's default resource tracker.

Definition at line 470 of file OrcV2CBindings.cpp.

References llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITAddObjectFileWithRT()

LLVMErrorRef LLVMOrcLLJITAddObjectFileWithRT ( LLVMOrcLLJITRef  J,
LLVMOrcResourceTrackerRef  RT,
LLVMMemoryBufferRef  ObjBuffer 
)

Add a buffer representing an object file to the given ResourceTracker's JITDylib in the given LLJIT instance.

This operation transfers ownership of the buffer to the LLJIT instance. The buffer should not be disposed of or referenced once this function returns.

Resources associated with the given object will be tracked by ResourceTracker RT.

Definition at line 476 of file OrcV2CBindings.cpp.

References llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITBuilderSetJITTargetMachineBuilder()

void LLVMOrcLLJITBuilderSetJITTargetMachineBuilder ( LLVMOrcLLJITBuilderRef  Builder,
LLVMOrcJITTargetMachineBuilderRef  JTMB 
)

Set the JITTargetMachineBuilder to be used when constructing the LLJIT instance.

Calling this function is optional: if it is not called then the LLJITBuilder will use JITTargeTMachineBuilder::detectHost to construct a JITTargetMachineBuilder.

Definition at line 408 of file OrcV2CBindings.cpp.

References Builder, and llvm::unwrap().

◆ LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator()

void LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator ( LLVMOrcLLJITBuilderRef  Builder,
LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction  F,
void *  Ctx 
)

Set an ObjectLinkingLayer creator function for this LLJIT instance.

Definition at line 413 of file OrcV2CBindings.cpp.

References Builder, F(), llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITGetExecutionSession()

LLVMOrcExecutionSessionRef LLVMOrcLLJITGetExecutionSession ( LLVMOrcLLJITRef  J)

Get a reference to the ExecutionSession for this LLJIT instance.

The ExecutionSession is owned by the LLJIT instance. The client is not responsible for managing its memory.

Definition at line 448 of file OrcV2CBindings.cpp.

References llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITGetGlobalPrefix()

char LLVMOrcLLJITGetGlobalPrefix ( LLVMOrcLLJITRef  J)

Returns the global prefix character according to the LLJIT's DataLayout.

Definition at line 460 of file OrcV2CBindings.cpp.

References llvm::unwrap().

◆ LLVMOrcLLJITGetMainJITDylib()

LLVMOrcJITDylibRef LLVMOrcLLJITGetMainJITDylib ( LLVMOrcLLJITRef  J)

Return a reference to the Main JITDylib.

The JITDylib is owned by the LLJIT instance. The client is not responsible for managing its memory.

Definition at line 452 of file OrcV2CBindings.cpp.

References llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITGetTripleString()

const char* LLVMOrcLLJITGetTripleString ( LLVMOrcLLJITRef  J)

Return the target triple for this LLJIT instance.

This string is owned by the LLJIT instance and should not be freed by the client.

Definition at line 456 of file OrcV2CBindings.cpp.

References llvm::unwrap().

◆ LLVMOrcLLJITLookup()

LLVMErrorRef LLVMOrcLLJITLookup ( LLVMOrcLLJITRef  J,
LLVMOrcJITTargetAddress Result,
const char Name 
)

Look up the given symbol in the main JITDylib of the given LLJIT instance.

This operation does not take ownership of the Name argument.

Definition at line 499 of file OrcV2CBindings.cpp.

References assert(), LLVMErrorSuccess, llvm::unwrap(), and llvm::wrap().

◆ LLVMOrcLLJITMangleAndIntern()

LLVMOrcSymbolStringPoolEntryRef LLVMOrcLLJITMangleAndIntern ( LLVMOrcLLJITRef  J,
const char UnmangledName 
)

Mangles the given string according to the LLJIT instance's DataLayout, then interns the result in the SymbolStringPool and returns a reference to the pool entry.

Clients should call LLVMOrcReleaseSymbolStringPoolEntry to decrement the ref-count on the pool entry once they are finished with this value.

Definition at line 465 of file OrcV2CBindings.cpp.

References llvm::orc::OrcV2CAPIHelper::releaseSymbolStringPtr(), llvm::unwrap(), and llvm::wrap().

Variable Documentation

◆ LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction

LLVM_C_EXTERN_C_BEGIN typedef LLVMOrcObjectLayerRef( * LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction) (void *Ctx, LLVMOrcExecutionSessionRef ES, const char *Triple)

A function for constructing an ObjectLinkingLayer instance to be used by an LLJIT instance.

Clients can call LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator to set the creator function to use when constructing an LLJIT instance. This can be used to override the default linking layer implementation that would otherwise be chosen by LLJITBuilder.

Object linking layers returned by this function will become owned by the LLJIT instance. The client is not responsible for managing their lifetimes after the function returns.

Definition at line 48 of file LLJIT.h.