LLVM  7.0.0svn
Classes | Public Types | Public Member Functions | List of all members
llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT > Class Template Reference

Compile-on-demand layer. More...

#include "llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"

Inheritance diagram for llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >:
Inheritance graph
[legend]

Public Types

using PartitioningFtor = std::function< std::set< Function * >(Function &)>
 Module partitioning functor. More...
 
using IndirectStubsManagerBuilderT = std::function< std::unique_ptr< IndirectStubsMgrT >()>
 Builder for IndirectStubsManagers. More...
 
using SymbolResolverGetter = std::function< std::shared_ptr< SymbolResolver >(VModuleKey K)>
 
using SymbolResolverSetter = std::function< void(VModuleKey K, std::shared_ptr< SymbolResolver > R)>
 

Public Member Functions

 CompileOnDemandLayer (ExecutionSession &ES, BaseLayerT &BaseLayer, SymbolResolverGetter GetSymbolResolver, SymbolResolverSetter SetSymbolResolver, PartitioningFtor Partition, CompileCallbackMgrT &CallbackMgr, IndirectStubsManagerBuilderT CreateIndirectStubsManager, bool CloneStubsIntoPartitions=true)
 Construct a compile-on-demand layer instance. More...
 
 ~CompileOnDemandLayer ()
 
Error addModule (VModuleKey K, std::unique_ptr< Module > M)
 Add a module to the compile-on-demand layer. More...
 
Error addExtraModule (VModuleKey K, std::unique_ptr< Module > M)
 Add extra modules to an existing logical module. More...
 
Error removeModule (VModuleKey K)
 Remove the module represented by the given key. More...
 
JITSymbol findSymbol (StringRef Name, bool ExportedSymbolsOnly)
 Search for the given named symbol. More...
 
JITSymbol findSymbolIn (VModuleKey K, const std::string &Name, bool ExportedSymbolsOnly)
 Get the address of a symbol provided by this layer, or some layer below this one. More...
 
Error updatePointer (std::string FuncName, JITTargetAddress FnBodyAddr)
 Update the stub for the given function to point at FnBodyAddr. More...
 

Detailed Description

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
class llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >

Compile-on-demand layer.

When a module is added to this layer a stub is created for each of its function definitions. The stubs and other global values are immediately added to the layer below. When a stub is called it triggers the extraction of the function body from the original module. The extracted body is then compiled and executed.

Definition at line 111 of file CompileOnDemandLayer.h.

Member Typedef Documentation

◆ IndirectStubsManagerBuilderT

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
using llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::IndirectStubsManagerBuilderT = std::function<std::unique_ptr<IndirectStubsMgrT>()>

Builder for IndirectStubsManagers.

Definition at line 245 of file CompileOnDemandLayer.h.

◆ PartitioningFtor

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
using llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::PartitioningFtor = std::function<std::set<Function*>(Function&)>

Module partitioning functor.

Definition at line 241 of file CompileOnDemandLayer.h.

◆ SymbolResolverGetter

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
using llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::SymbolResolverGetter = std::function<std::shared_ptr<SymbolResolver>(VModuleKey K)>

Definition at line 248 of file CompileOnDemandLayer.h.

◆ SymbolResolverSetter

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
using llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::SymbolResolverSetter = std::function<void(VModuleKey K, std::shared_ptr<SymbolResolver> R)>

Definition at line 251 of file CompileOnDemandLayer.h.

Constructor & Destructor Documentation

◆ CompileOnDemandLayer()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::CompileOnDemandLayer ( ExecutionSession ES,
BaseLayerT &  BaseLayer,
SymbolResolverGetter  GetSymbolResolver,
SymbolResolverSetter  SetSymbolResolver,
PartitioningFtor  Partition,
CompileCallbackMgrT &  CallbackMgr,
IndirectStubsManagerBuilderT  CreateIndirectStubsManager,
bool  CloneStubsIntoPartitions = true 
)
inline

Construct a compile-on-demand layer instance.

Definition at line 254 of file CompileOnDemandLayer.h.

◆ ~CompileOnDemandLayer()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::~CompileOnDemandLayer ( )
inline

Definition at line 268 of file CompileOnDemandLayer.h.

Member Function Documentation

◆ addExtraModule()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
Error llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::addExtraModule ( VModuleKey  K,
std::unique_ptr< Module M 
)
inline

Add extra modules to an existing logical module.

Definition at line 287 of file CompileOnDemandLayer.h.

◆ addModule()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
Error llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::addModule ( VModuleKey  K,
std::unique_ptr< Module M 
)
inline

Add a module to the compile-on-demand layer.

Definition at line 275 of file CompileOnDemandLayer.h.

◆ findSymbol()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
JITSymbol llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::findSymbol ( StringRef  Name,
bool  ExportedSymbolsOnly 
)
inline

Search for the given named symbol.

Parameters
NameThe name of the symbol to search for.
ExportedSymbolsOnlyIf true, search only for exported symbols.
Returns
A handle for the given named symbol, if it exists.

Definition at line 307 of file CompileOnDemandLayer.h.

◆ findSymbolIn()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
JITSymbol llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::findSymbolIn ( VModuleKey  K,
const std::string &  Name,
bool  ExportedSymbolsOnly 
)
inline

Get the address of a symbol provided by this layer, or some layer below this one.

Definition at line 321 of file CompileOnDemandLayer.h.

◆ removeModule()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
Error llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::removeModule ( VModuleKey  K)
inline

Remove the module represented by the given key.

This will remove all modules in the layers below that were derived from the module represented by K.

Definition at line 295 of file CompileOnDemandLayer.h.

◆ updatePointer()

template<typename BaseLayerT, typename CompileCallbackMgrT = JITCompileCallbackManager, typename IndirectStubsMgrT = IndirectStubsManager>
Error llvm::orc::CompileOnDemandLayer< BaseLayerT, CompileCallbackMgrT, IndirectStubsMgrT >::updatePointer ( std::string  FuncName,
JITTargetAddress  FnBodyAddr 
)
inline

Update the stub for the given function to point at FnBodyAddr.

This can be used to support re-optimization.

Returns
true if the function exists and the stub is updated, false otherwise.

Definition at line 335 of file CompileOnDemandLayer.h.


The documentation for this class was generated from the following file: