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

29public:

31

32

33

34

38

39

40

41

42

43

44

48

52 BaseLayer(BaseLayer), RSManager(RM), ReOptFunc(identity),

54

56 this->ReOptFunc = std::move(ReOptFunc);

57 }

58

60 this->ProfilerFunc = std::move(ProfilerFunc);

61 }

62

63

64

65

66 Error reigsterRuntimeFunctions(JITDylib &PlatformJD);

67

68

69

70 void emit(std::unique_ptr R,

72

74

75

76

79 unsigned CurVersion,

81

87

88

91

95

96private:

97 class ReOptMaterializationUnitState {

98 public:

99 ReOptMaterializationUnitState() = default;

100 ReOptMaterializationUnitState(ReOptMaterializationUnitID ID,

103 ReOptMaterializationUnitState(ReOptMaterializationUnitState &&Other)

106 CurVersion(Other.CurVersion) {}

107

108 ReOptMaterializationUnitID getID() { return ID; }

109

110 const ThreadSafeModule &getThreadSafeModule() { return TSM; }

111

113 std::unique_lockstd::mutex Lock(Mutex);

114 return RT;

115 }

116

117 void setResourceTracker(ResourceTrackerSP RT) {

118 std::unique_lockstd::mutex Lock(Mutex);

119 this->RT = RT;

120 }

121

122 uint32_t getCurVersion() {

123 std::unique_lockstd::mutex Lock(Mutex);

124 return CurVersion;

125 }

126

127 LLVM_ABI bool tryStartReoptimize();

128 LLVM_ABI void reoptimizeSucceeded();

129 LLVM_ABI void reoptimizeFailed();

130

131 private:

132 std::mutex Mutex;

133 ReOptMaterializationUnitID ID;

134 ThreadSafeModule TSM;

136 bool Reoptimizing = false;

137 uint32_t CurVersion = 0;

138 };

139

140 using SPSReoptimizeArgList =

141 shared::SPSArgList<ReOptMaterializationUnitID, uint32_t>;

142 using SendErrorFn = unique_function<void(Error)>;

143

144 Expected emitMUImplSymbols(ReOptMaterializationUnitState &MUState,

145 uint32_t Version, JITDylib &JD,

146 ThreadSafeModule TSM);

147

148 void rt_reoptimize(SendErrorFn SendResult, ReOptMaterializationUnitID MUID,

149 uint32_t CurVersion);

150

151 static Expected<Constant *>

152 createReoptimizeArgBuffer(Module &M, ReOptMaterializationUnitID MUID,

153 uint32_t CurVersion);

154

155 ReOptMaterializationUnitState &

156 createMaterializationUnitState(const ThreadSafeModule &TSM);

157

158 void

159 registerMaterializationUnitResource(ResourceKey Key,

160 ReOptMaterializationUnitState &State);

161

162 ReOptMaterializationUnitState &

163 getMaterializationUnitState(ReOptMaterializationUnitID MUID);

164

165 ExecutionSession &ES;

166 MangleAndInterner Mangle;

167 IRLayer &BaseLayer;

168 RedirectableSymbolManager &RSManager;

169

170 ReOptimizeFunc ReOptFunc;

171 AddProfilerFunc ProfilerFunc;

172

173 std::mutex Mutex;

174 std::map<ReOptMaterializationUnitID, ReOptMaterializationUnitState> MUStates;

175 DenseMap<ResourceKey, DenseSet> MUResources;

176 ReOptMaterializationUnitID NextID = 1;

177};