LLVM: include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_EXECUTIONENGINE_ORC_COMPILEONDEMANDLAYER_H

15#define LLVM_EXECUTIONENGINE_ORC_COMPILEONDEMANDLAYER_H

16

43#include

44#include

45#include

46#include

47#include

48

49namespace llvm {

50namespace orc {

51

53public:

54

56 std::function<std::unique_ptr()>;

57

58

62

64

65

66

67 void emit(std::unique_ptr R,

69

70private:

71 struct PerDylibResources {

72 public:

73 PerDylibResources(JITDylib &ImplD,

74 std::unique_ptr ISMgr)

75 : ImplD(ImplD), ISMgr(std::move(ISMgr)) {}

76 JITDylib &getImplDylib() { return ImplD; }

77 IndirectStubsManager &getISManager() { return *ISMgr; }

78

79 private:

80 JITDylib &ImplD;

81 std::unique_ptr ISMgr;

82 };

83

84 using PerDylibResourcesMap = std::map<const JITDylib *, PerDylibResources>;

85

86 PerDylibResources &getPerDylibResources(JITDylib &TargetD);

87

88 mutable std::mutex CODLayerMutex;

89

90 IRLayer &BaseLayer;

91 LazyCallThroughManager &LCTMgr;

92 IndirectStubsManagerBuilder BuildIndirectStubsManager;

93 PerDylibResourcesMap DylibResources;

94 ImplSymbolMap *AliaseeImpls = nullptr;

95};

96

97}

98}

99

100#endif

This file implements a class to represent arbitrary precision integral constant values and operations...

This file contains the simple types necessary to represent the attributes associated with functions a...

This file contains the declarations for the subclasses of Constant, which represent the different fla...

Module.h This file contains the declarations for the Module class.

void emit(std::unique_ptr< MaterializationResponsibility > R, ThreadSafeModule TSM) override

Emits the given module.

CompileOnDemandLayer(ExecutionSession &ES, IRLayer &BaseLayer, LazyCallThroughManager &LCTMgr, IndirectStubsManagerBuilder BuildIndirectStubsManager)

Construct a CompileOnDemandLayer.

void setImplMap(ImplSymbolMap *Imp)

Sets the ImplSymbolMap.

std::function< std::unique_ptr< IndirectStubsManager >()> IndirectStubsManagerBuilder

Builder for IndirectStubsManagers.

Definition CompileOnDemandLayer.h:55

An ExecutionSession represents a running JIT program.

IRLayer(ExecutionSession &ES, const IRSymbolMapper::ManglingOptions *&MO)

Represents a JIT'd dynamic library.

Manages a set of 'lazy call-through' trampolines.

An LLVM Module together with a shared ThreadSafeContext.

This is an optimization pass for GlobalISel generic memory operations.

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

Implement std::hash so that hash_code can be used in STL containers.