Skip to content

Commit 57447d3

Browse files
committed
Revert "[ORC][llvm-jitlink] Add SimpleLazyReexportsSpeculator, use in llvm-jitlink."
This reverts commit 6d72bf4 while I fix bot failures.
1 parent 36b423e commit 57447d3

File tree

8 files changed

+65
-509
lines changed

8 files changed

+65
-509
lines changed

llvm/include/llvm/ExecutionEngine/Orc/JITLinkReentryTrampolines.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ class JITLinkReentryTrampolines {
6565
Expected<std::unique_ptr<LazyReexportsManager>>
6666
createJITLinkLazyReexportsManager(ObjectLinkingLayer &ObjLinkingLayer,
6767
RedirectableSymbolManager &RSMgr,
68-
JITDylib &PlatformJD,
69-
LazyReexportsManager::Listener *L = nullptr);
68+
JITDylib &PlatformJD);
7069

7170
} // namespace llvm::orc
7271

llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h

Lines changed: 8 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -179,37 +179,6 @@ class LazyReexportsManager : public ResourceManager {
179179
lazyReexports(LazyReexportsManager &, SymbolAliasMap);
180180

181181
public:
182-
struct CallThroughInfo {
183-
JITDylibSP JD;
184-
SymbolStringPtr Name;
185-
SymbolStringPtr BodyName;
186-
};
187-
188-
class Listener {
189-
public:
190-
using CallThroughInfo = LazyReexportsManager::CallThroughInfo;
191-
192-
virtual ~Listener();
193-
194-
/// Called under the session lock when new lazy reexports are created.
195-
virtual void onLazyReexportsCreated(JITDylib &JD, ResourceKey K,
196-
const SymbolAliasMap &Reexports) = 0;
197-
198-
/// Called under the session lock when lazy reexports have their ownership
199-
/// transferred to a new ResourceKey.
200-
virtual void onLazyReexportsTransfered(JITDylib &JD, ResourceKey DstK,
201-
ResourceKey SrcK) = 0;
202-
203-
/// Called under the session lock when lazy reexports are removed.
204-
virtual Error onLazyReexportsRemoved(JITDylib &JD, ResourceKey K) = 0;
205-
206-
/// Called outside the session lock when a lazy reexport is called.
207-
/// NOTE: Since this is called outside the session lock there is a chance
208-
/// that the reexport referred to has already been removed. Listeners
209-
/// must be prepared to handle requests for stale reexports.
210-
virtual void onLazyReexportCalled(const CallThroughInfo &CTI) = 0;
211-
};
212-
213182
using OnTrampolinesReadyFn = unique_function<void(
214183
Expected<std::vector<ExecutorSymbolDef>> EntryAddrs)>;
215184
using EmitTrampolinesFn =
@@ -220,7 +189,7 @@ class LazyReexportsManager : public ResourceManager {
220189
/// This will work both in-process and out-of-process.
221190
static Expected<std::unique_ptr<LazyReexportsManager>>
222191
Create(EmitTrampolinesFn EmitTrampolines, RedirectableSymbolManager &RSMgr,
223-
JITDylib &PlatformJD, Listener *L = nullptr);
192+
JITDylib &PlatformJD);
224193

225194
LazyReexportsManager(LazyReexportsManager &&) = delete;
226195
LazyReexportsManager &operator=(LazyReexportsManager &&) = delete;
@@ -230,6 +199,12 @@ class LazyReexportsManager : public ResourceManager {
230199
ResourceKey SrcK) override;
231200

232201
private:
202+
struct CallThroughInfo {
203+
SymbolStringPtr Name;
204+
SymbolStringPtr BodyName;
205+
JITDylibSP JD;
206+
};
207+
233208
class MU;
234209
class Plugin;
235210

@@ -238,7 +213,7 @@ class LazyReexportsManager : public ResourceManager {
238213

239214
LazyReexportsManager(EmitTrampolinesFn EmitTrampolines,
240215
RedirectableSymbolManager &RSMgr, JITDylib &PlatformJD,
241-
Listener *L, Error &Err);
216+
Error &Err);
242217

243218
std::unique_ptr<MaterializationUnit>
244219
createLazyReexports(SymbolAliasMap Reexports);
@@ -254,7 +229,6 @@ class LazyReexportsManager : public ResourceManager {
254229
ExecutionSession &ES;
255230
EmitTrampolinesFn EmitTrampolines;
256231
RedirectableSymbolManager &RSMgr;
257-
Listener *L;
258232

259233
DenseMap<ResourceKey, std::vector<ExecutorAddr>> KeyToReentryAddrs;
260234
DenseMap<ExecutorAddr, CallThroughInfo> CallThroughs;
@@ -268,66 +242,6 @@ lazyReexports(LazyReexportsManager &LRM, SymbolAliasMap Reexports) {
268242
return LRM.createLazyReexports(std::move(Reexports));
269243
}
270244

271-
class SimpleLazyReexportsSpeculator : public LazyReexportsManager::Listener {
272-
friend std::shared_ptr<SimpleLazyReexportsSpeculator> std::make_shared();
273-
274-
public:
275-
using RecordExecutionFunction =
276-
unique_function<void(const CallThroughInfo &CTI)>;
277-
278-
static std::shared_ptr<SimpleLazyReexportsSpeculator>
279-
Create(ExecutionSession &ES, RecordExecutionFunction RecordExec = {}) {
280-
class make_shared_helper : public SimpleLazyReexportsSpeculator {
281-
public:
282-
make_shared_helper(ExecutionSession &ES,
283-
RecordExecutionFunction RecordExec)
284-
: SimpleLazyReexportsSpeculator(ES, std::move(RecordExec)) {}
285-
};
286-
287-
auto Instance =
288-
std::make_shared<make_shared_helper>(ES, std::move(RecordExec));
289-
Instance->WeakThis = Instance;
290-
return Instance;
291-
}
292-
293-
SimpleLazyReexportsSpeculator(SimpleLazyReexportsSpeculator &&) = delete;
294-
SimpleLazyReexportsSpeculator &
295-
operator=(SimpleLazyReexportsSpeculator &&) = delete;
296-
~SimpleLazyReexportsSpeculator() override;
297-
298-
void onLazyReexportsCreated(JITDylib &JD, ResourceKey K,
299-
const SymbolAliasMap &Reexports) override;
300-
301-
void onLazyReexportsTransfered(JITDylib &JD, ResourceKey DstK,
302-
ResourceKey SrcK) override;
303-
304-
Error onLazyReexportsRemoved(JITDylib &JD, ResourceKey K) override;
305-
306-
void onLazyReexportCalled(const CallThroughInfo &CTI) override;
307-
308-
void addSpeculationSuggestions(
309-
std::vector<std::pair<std::string, SymbolStringPtr>> NewSuggestions);
310-
311-
private:
312-
SimpleLazyReexportsSpeculator(ExecutionSession &ES,
313-
RecordExecutionFunction RecordExec)
314-
: ES(ES), RecordExec(std::move(RecordExec)) {}
315-
316-
bool doNextSpeculativeLookup();
317-
318-
class SpeculateTask;
319-
320-
using KeyToFunctionBodiesMap =
321-
DenseMap<ResourceKey, std::vector<SymbolStringPtr>>;
322-
323-
ExecutionSession &ES;
324-
RecordExecutionFunction RecordExec;
325-
std::weak_ptr<SimpleLazyReexportsSpeculator> WeakThis;
326-
DenseMap<JITDylib *, KeyToFunctionBodiesMap> LazyReexports;
327-
std::deque<std::pair<std::string, SymbolStringPtr>> SpeculateSuggestions;
328-
bool SpeculateTaskActive = false;
329-
};
330-
331245
} // End namespace orc
332246
} // End namespace llvm
333247

llvm/include/llvm/ExecutionEngine/Orc/TaskDispatch.h

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,6 @@ makeGenericNamedTask(FnT &&Fn, const char *Desc = nullptr) {
9292
Desc);
9393
}
9494

95-
/// IdleTask can be used as the basis for low-priority tasks, e.g. speculative
96-
/// lookup.
97-
class IdleTask : public RTTIExtends<IdleTask, Task> {
98-
public:
99-
static char ID;
100-
101-
private:
102-
void anchor() override;
103-
};
104-
10595
/// Abstract base for classes that dispatch ORC Tasks.
10696
class TaskDispatcher {
10797
public:
@@ -128,13 +118,9 @@ class DynamicThreadPoolTaskDispatcher : public TaskDispatcher {
128118
DynamicThreadPoolTaskDispatcher(
129119
std::optional<size_t> MaxMaterializationThreads)
130120
: MaxMaterializationThreads(MaxMaterializationThreads) {}
131-
132121
void dispatch(std::unique_ptr<Task> T) override;
133122
void shutdown() override;
134123
private:
135-
bool canRunMaterializationTaskNow();
136-
bool canRunIdleTaskNow();
137-
138124
std::mutex DispatchMutex;
139125
bool Shutdown = false;
140126
size_t Outstanding = 0;
@@ -143,7 +129,6 @@ class DynamicThreadPoolTaskDispatcher : public TaskDispatcher {
143129
std::optional<size_t> MaxMaterializationThreads;
144130
size_t NumMaterializationThreads = 0;
145131
std::deque<std::unique_ptr<Task>> MaterializationTaskQueue;
146-
std::deque<std::unique_ptr<Task>> IdleTaskQueue;
147132
};
148133

149134
#endif // LLVM_ENABLE_THREADS

llvm/lib/ExecutionEngine/Orc/JITLinkReentryTrampolines.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,7 @@ void JITLinkReentryTrampolines::emit(ResourceTrackerSP RT,
173173
Expected<std::unique_ptr<LazyReexportsManager>>
174174
createJITLinkLazyReexportsManager(ObjectLinkingLayer &ObjLinkingLayer,
175175
RedirectableSymbolManager &RSMgr,
176-
JITDylib &PlatformJD,
177-
LazyReexportsManager::Listener *L) {
176+
JITDylib &PlatformJD) {
178177
auto JLT = JITLinkReentryTrampolines::Create(ObjLinkingLayer);
179178
if (!JLT)
180179
return JLT.takeError();
@@ -185,7 +184,7 @@ createJITLinkLazyReexportsManager(ObjectLinkingLayer &ObjLinkingLayer,
185184
OnTrampolinesReady) mutable {
186185
JLT->emit(std::move(RT), NumTrampolines, std::move(OnTrampolinesReady));
187186
},
188-
RSMgr, PlatformJD, L);
187+
RSMgr, PlatformJD);
189188
}
190189

191190
} // namespace llvm::orc

0 commit comments

Comments
 (0)