Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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 #
ExecutionSession | |
|
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.
JITSymbolFlags | |
|
Instances
JITSymbol | |
|
Instances
Show JITSymbol Source # | |
Eq JITSymbol Source # | |
Ord JITSymbol Source # | |
Defined in LLVM.Internal.OrcJIT | |
(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 |
data JITSymbolError Source #
Instances
Show JITSymbolError Source # | |
Defined in LLVM.Internal.OrcJIT showsPrec :: Int -> JITSymbolError -> ShowS # show :: JITSymbolError -> String # showList :: [JITSymbolError] -> ShowS # | |
Eq JITSymbolError Source # | |
Defined in LLVM.Internal.OrcJIT (==) :: JITSymbolError -> JITSymbolError -> Bool # (/=) :: JITSymbolError -> JITSymbolError -> Bool # | |
(MonadIO m, MonadAnyCont IO m) => DecodeM m (Either JITSymbolError JITSymbol) (Ptr ExpectedJITEvaluatedSymbol) Source # | |
Defined in LLVM.Internal.OrcJIT |
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 #
disposeThreadSafeContext :: ThreadSafeContext -> IO () Source #
Dispose of a ThreadSafeContext
withThreadSafeContext :: (ThreadSafeContext -> IO a) -> IO a Source #
bracket
-style wrapper around createThreadSafeContext
and disposeThreadSafeContext
.
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
.
getObjectLayer :: l -> Ptr ObjectLayer Source #
Instances
data RTDyldObjectLinkingLayer Source #
Instances
createRTDyldObjectLinkingLayer :: ExecutionSession -> IO RTDyldObjectLinkingLayer Source #
Create a new RTDyldObjectLinkingLayer
.
The layer will get automatically disposed along with its ExecutionSession.
data ObjectLinkingLayer Source #
Instances
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.
Instances
Monad m => EncodeM m MangledSymbol (Ptr SymbolStringPtr) Source # | |
Defined in LLVM.Internal.OrcJIT 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
.
getIRLayer :: l -> Ptr IRLayer Source #
getDataLayout :: l -> Ptr DataLayout Source #
getMangler :: l -> Ptr MangleAndInterner Source #
Instances
IRLayer IRCompileLayer Source # | |
Defined in LLVM.Internal.OrcJIT |
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.
IRCompileLayer !(Ptr IRLayer) !(Ptr DataLayout) !(Ptr MangleAndInterner) |
Instances
IRLayer IRCompileLayer Source # | |
Defined in LLVM.Internal.OrcJIT |
createIRCompileLayer :: ObjectLayer l => ExecutionSession -> l -> TargetMachine -> IO IRCompileLayer Source #
Create a new IRCompileLayer
.
The layer will get automatically disposed along with its ExecutionSession.