| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
LLVM.Internal.OrcJIT
Synopsis
- data ExecutionSession = ExecutionSession {
- sessionPtr :: !(Ptr ExecutionSession)
- sessionCleanups :: !(IORef [IO ()])
- createExecutionSession :: IO ExecutionSession
- disposeExecutionSession :: ExecutionSession -> IO ()
- withExecutionSession :: (ExecutionSession -> IO a) -> IO a
- data JITSymbolFlags = JITSymbolFlags {}
- defaultJITSymbolFlags :: JITSymbolFlags
- data JITSymbol = JITSymbol {}
- data JITSymbolError = JITSymbolError ShortByteString
- newtype JITDylib = JITDylib (Ptr JITDylib)
- createJITDylib :: ExecutionSession -> ShortByteString -> IO JITDylib
- addDynamicLibrarySearchGeneratorForCurrentProcess :: IRLayer l => l -> JITDylib -> IO ()
- addDynamicLibrarySearchGenerator :: IRLayer l => l -> JITDylib -> FilePath -> IO ()
- defineAbsoluteSymbols :: JITDylib -> [(MangledSymbol, JITSymbol)] -> IO ()
- lookupSymbol :: IRLayer l => ExecutionSession -> l -> JITDylib -> ShortByteString -> IO (Either JITSymbolError JITSymbol)
- newtype ThreadSafeContext = ThreadSafeContext (Ptr ThreadSafeContext)
- createThreadSafeContext :: IO ThreadSafeContext
- disposeThreadSafeContext :: ThreadSafeContext -> IO ()
- withThreadSafeContext :: (ThreadSafeContext -> IO a) -> IO a
- newtype ThreadSafeModule = ThreadSafeModule (Ptr ThreadSafeModule)
- cloneAsThreadSafeModule :: Module -> IO ThreadSafeModule
- disposeThreadSafeModule :: ThreadSafeModule -> IO ()
- withClonedThreadSafeModule :: Module -> (ThreadSafeModule -> IO a) -> IO a
- class ObjectLayer l where
- getObjectLayer :: l -> Ptr ObjectLayer
- data RTDyldObjectLinkingLayer = RTDyldObjectLinkingLayer !(Ptr ObjectLayer)
- createRTDyldObjectLinkingLayer :: ExecutionSession -> IO RTDyldObjectLinkingLayer
- data ObjectLinkingLayer = ObjectLinkingLayer !(Ptr ObjectLayer)
- createObjectLinkingLayer :: ExecutionSession -> IO ObjectLinkingLayer
- addObjectFile :: ObjectLayer l => l -> JITDylib -> FilePath -> IO ()
- newtype MangledSymbol = MangledSymbol (Ptr SymbolStringPtr)
- class IRLayer l where
- getIRLayer :: l -> Ptr IRLayer
- getDataLayout :: l -> Ptr DataLayout
- getMangler :: l -> Ptr MangleAndInterner
- addModule :: IRLayer l => ThreadSafeModule -> JITDylib -> l -> IO ()
- mangleSymbol :: IRLayer l => l -> ShortByteString -> IO MangledSymbol
- disposeMangledSymbol :: MangledSymbol -> IO ()
- withMangledSymbol :: IRLayer l => l -> ShortByteString -> (MangledSymbol -> IO a) -> IO a
- data IRCompileLayer = IRCompileLayer !(Ptr IRLayer) !(Ptr DataLayout) !(Ptr MangleAndInterner)
- createIRCompileLayer :: ObjectLayer l => ExecutionSession -> l -> TargetMachine -> IO IRCompileLayer
Documentation
data ExecutionSession Source #
Constructors
| ExecutionSession | |
Fields
| |
createExecutionSession :: IO ExecutionSession Source #
Create a new ExecutionSession.
disposeExecutionSession :: ExecutionSession -> IO () Source #
Dispose of an ExecutionSession. This should be called when the
ExecutionSession is not needed anymore.
withExecutionSession :: (ExecutionSession -> IO a) -> IO a Source #
bracket-style wrapper around createExecutionSession and
disposeExecutionSession.
data JITSymbolFlags Source #
Contrary to the C++ interface, we do not store the HasError flag here. Instead decoding a JITSymbol produces a sumtype based on whether that flag is set or not.
Constructors
| JITSymbolFlags | |
Fields
| |
Instances
Constructors
| JITSymbol | |
Fields
| |
Instances
| Show JITSymbol Source # | |
| Eq JITSymbol Source # | |
| Ord JITSymbol Source # | |
| (Monad m, MonadIO m, MonadAnyCont IO m) => EncodeM m JITSymbol (Ptr JITEvaluatedSymbol) Source # | |
Defined in LLVM.Internal.OrcJIT | |
| (MonadIO m, MonadAnyCont IO m) => DecodeM m (Either JITSymbolError JITSymbol) (Ptr ExpectedJITEvaluatedSymbol) Source # | |
Defined in LLVM.Internal.OrcJIT Methods decodeM :: Ptr ExpectedJITEvaluatedSymbol -> m (Either JITSymbolError JITSymbol) Source # | |
data JITSymbolError Source #
Constructors
| JITSymbolError ShortByteString |
Instances
| Show JITSymbolError Source # | |
Defined in LLVM.Internal.OrcJIT Methods showsPrec :: Int -> JITSymbolError -> ShowS # show :: JITSymbolError -> String # showList :: [JITSymbolError] -> ShowS # | |
| Eq JITSymbolError Source # | |
Defined in LLVM.Internal.OrcJIT Methods (==) :: JITSymbolError -> JITSymbolError -> Bool # (/=) :: JITSymbolError -> JITSymbolError -> Bool # | |
| (MonadIO m, MonadAnyCont IO m) => DecodeM m (Either JITSymbolError JITSymbol) (Ptr ExpectedJITEvaluatedSymbol) Source # | |
Defined in LLVM.Internal.OrcJIT Methods decodeM :: Ptr ExpectedJITEvaluatedSymbol -> m (Either JITSymbolError JITSymbol) Source # | |
createJITDylib :: ExecutionSession -> ShortByteString -> IO JITDylib Source #
Create a new JITDylib with the given name.
addDynamicLibrarySearchGeneratorForCurrentProcess :: IRLayer l => l -> JITDylib -> IO () Source #
Adds a JITDylib definition generator that looks up missing symbols in
the namespace of the current process.
defineAbsoluteSymbols :: JITDylib -> [(MangledSymbol, JITSymbol)] -> IO () Source #
lookupSymbol :: IRLayer l => ExecutionSession -> l -> JITDylib -> ShortByteString -> IO (Either JITSymbolError JITSymbol) Source #
newtype ThreadSafeContext Source #
Constructors
| ThreadSafeContext (Ptr ThreadSafeContext) |
disposeThreadSafeContext :: ThreadSafeContext -> IO () Source #
Dispose of a ThreadSafeContext
withThreadSafeContext :: (ThreadSafeContext -> IO a) -> IO a Source #
bracket-style wrapper around createThreadSafeContext
and disposeThreadSafeContext.
newtype ThreadSafeModule Source #
Constructors
| ThreadSafeModule (Ptr ThreadSafeModule) |
cloneAsThreadSafeModule :: Module -> IO ThreadSafeModule Source #
Create a ThreadSafeModule with the same content as the input Module.
The module will get cloned into a fresh LLVM context. The lifetime of the
new context is bound to the lifetime of the returned ThreadSafeModule.
disposeThreadSafeModule :: ThreadSafeModule -> IO () Source #
Dispose of a ThreadSafeModule.
withClonedThreadSafeModule :: Module -> (ThreadSafeModule -> IO a) -> IO a Source #
bracket-style wrapper around cloneAsThreadSafeModule
and disposeThreadSafeModule.
class ObjectLayer l where Source #
A type class implemented by the different OrcJIT object layers.
See e.g. RTDyldObjectLinkingLayer.
Methods
getObjectLayer :: l -> Ptr ObjectLayer Source #
Instances
| ObjectLayer ObjectLinkingLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getObjectLayer :: ObjectLinkingLayer -> Ptr ObjectLayer Source # | |
| ObjectLayer RTDyldObjectLinkingLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getObjectLayer :: RTDyldObjectLinkingLayer -> Ptr ObjectLayer Source # | |
data RTDyldObjectLinkingLayer Source #
Constructors
| RTDyldObjectLinkingLayer !(Ptr ObjectLayer) |
Instances
| ObjectLayer RTDyldObjectLinkingLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getObjectLayer :: RTDyldObjectLinkingLayer -> Ptr ObjectLayer Source # | |
createRTDyldObjectLinkingLayer :: ExecutionSession -> IO RTDyldObjectLinkingLayer Source #
Create a new RTDyldObjectLinkingLayer.
The layer will get automatically disposed along with its ExecutionSession.
data ObjectLinkingLayer Source #
Constructors
| ObjectLinkingLayer !(Ptr ObjectLayer) |
Instances
| ObjectLayer ObjectLinkingLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getObjectLayer :: ObjectLinkingLayer -> Ptr ObjectLayer Source # | |
addObjectFile :: ObjectLayer l => l -> JITDylib -> FilePath -> IO () Source #
newtype MangledSymbol Source #
A mangled symbol name. Valid only for as long as the IRLayer that created it.
Constructors
| MangledSymbol (Ptr SymbolStringPtr) |
Instances
| Monad m => EncodeM m MangledSymbol (Ptr SymbolStringPtr) Source # | |
Defined in LLVM.Internal.OrcJIT Methods encodeM :: MangledSymbol -> m (Ptr SymbolStringPtr) Source # | |
class IRLayer l where Source #
A type class implemented by the different OrcJIT IR layers.
See e.g. IRCompileLayer.
Methods
getIRLayer :: l -> Ptr IRLayer Source #
getDataLayout :: l -> Ptr DataLayout Source #
getMangler :: l -> Ptr MangleAndInterner Source #
Instances
| IRLayer IRCompileLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getIRLayer :: IRCompileLayer -> Ptr IRLayer Source # getDataLayout :: IRCompileLayer -> Ptr DataLayout Source # getMangler :: IRCompileLayer -> Ptr MangleAndInterner Source # | |
mangleSymbol :: IRLayer l => l -> ShortByteString -> IO MangledSymbol Source #
disposeMangledSymbol :: MangledSymbol -> IO () Source #
withMangledSymbol :: IRLayer l => l -> ShortByteString -> (MangledSymbol -> IO a) -> IO a Source #
data IRCompileLayer Source #
An IR layer that compiles the symbols in a module eagerly.
Constructors
| IRCompileLayer !(Ptr IRLayer) !(Ptr DataLayout) !(Ptr MangleAndInterner) |
Instances
| IRLayer IRCompileLayer Source # | |
Defined in LLVM.Internal.OrcJIT Methods getIRLayer :: IRCompileLayer -> Ptr IRLayer Source # getDataLayout :: IRCompileLayer -> Ptr DataLayout Source # getMangler :: IRCompileLayer -> Ptr MangleAndInterner Source # | |
createIRCompileLayer :: ObjectLayer l => ExecutionSession -> l -> TargetMachine -> IO IRCompileLayer Source #
Create a new IRCompileLayer.
The layer will get automatically disposed along with its ExecutionSession.