Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
Show First 20 Lines • Show All 286 Lines • ▼ Show 20 Lines | std::vector<std::string> CtorNames, DtorNames; | ||||
} | } | ||||
} | } | ||||
auto K = ES.allocateVModule(); | auto K = ES.allocateVModule(); | ||||
UnexecutedConstructors[K] = std::move(CtorNames); | UnexecutedConstructors[K] = std::move(CtorNames); | ||||
UnexecutedDestructors[K] = std::move(DtorNames); | UnexecutedDestructors[K] = std::move(DtorNames); | ||||
cantFail(LazyEmitLayer.addModule(K, std::move(M))); | llvm_cantFail(LazyEmitLayer.addModule(K, std::move(M))); | ||||
} | } | ||||
void addObjectFile(std::unique_ptr<object::ObjectFile> O) override { | void addObjectFile(std::unique_ptr<object::ObjectFile> O) override { | ||||
cantFail(ObjectLayer.addObject( | llvm_cantFail(ObjectLayer.addObject( | ||||
ES.allocateVModule(), MemoryBuffer::getMemBufferCopy(O->getData()))); | ES.allocateVModule(), MemoryBuffer::getMemBufferCopy(O->getData()))); | ||||
} | } | ||||
void addObjectFile(object::OwningBinary<object::ObjectFile> O) override { | void addObjectFile(object::OwningBinary<object::ObjectFile> O) override { | ||||
std::unique_ptr<object::ObjectFile> Obj; | std::unique_ptr<object::ObjectFile> Obj; | ||||
std::unique_ptr<MemoryBuffer> ObjBuffer; | std::unique_ptr<MemoryBuffer> ObjBuffer; | ||||
std::tie(Obj, ObjBuffer) = O.takeBinary(); | std::tie(Obj, ObjBuffer) = O.takeBinary(); | ||||
cantFail(ObjectLayer.addObject(ES.allocateVModule(), std::move(ObjBuffer))); | llvm_cantFail(ObjectLayer.addObject(ES.allocateVModule(), std::move(ObjBuffer))); | ||||
} | } | ||||
void addArchive(object::OwningBinary<object::Archive> A) override { | void addArchive(object::OwningBinary<object::Archive> A) override { | ||||
Archives.push_back(std::move(A)); | Archives.push_back(std::move(A)); | ||||
} | } | ||||
bool removeModule(Module *M) override { | bool removeModule(Module *M) override { | ||||
auto I = Modules.begin(); | auto I = Modules.begin(); | ||||
for (auto E = Modules.end(); I != E; ++I) | for (auto E = Modules.end(); I != E; ++I) | ||||
if (I->get() == M) | if (I->get() == M) | ||||
break; | break; | ||||
if (I == Modules.end()) | if (I == Modules.end()) | ||||
return false; | return false; | ||||
Modules.erase(I); | Modules.erase(I); | ||||
return true; | return true; | ||||
} | } | ||||
uint64_t getSymbolAddress(StringRef Name) { | uint64_t getSymbolAddress(StringRef Name) { | ||||
return cantFail(findSymbol(Name).getAddress()); | return llvm_cantFail(findSymbol(Name).getAddress()); | ||||
} | } | ||||
JITSymbol findSymbol(StringRef Name) { | JITSymbol findSymbol(StringRef Name) { | ||||
return findMangledSymbol(mangle(Name)); | return findMangledSymbol(mangle(Name)); | ||||
} | } | ||||
void finalizeObject() override { | void finalizeObject() override { | ||||
// This is deprecated - Aim to remove in ExecutionEngine. | // This is deprecated - Aim to remove in ExecutionEngine. | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | for (object::OwningBinary<object::Archive> &OB : Archives) { | ||||
OptionalChild->getAsBinary(); | OptionalChild->getAsBinary(); | ||||
if (!ChildBinOrErr) { | if (!ChildBinOrErr) { | ||||
// TODO: Actually report errors helpfully. | // TODO: Actually report errors helpfully. | ||||
consumeError(ChildBinOrErr.takeError()); | consumeError(ChildBinOrErr.takeError()); | ||||
continue; | continue; | ||||
} | } | ||||
std::unique_ptr<object::Binary> &ChildBin = ChildBinOrErr.get(); | std::unique_ptr<object::Binary> &ChildBin = ChildBinOrErr.get(); | ||||
if (ChildBin->isObject()) { | if (ChildBin->isObject()) { | ||||
cantFail(ObjectLayer.addObject( | llvm_cantFail(ObjectLayer.addObject( | ||||
ES.allocateVModule(), | ES.allocateVModule(), | ||||
MemoryBuffer::getMemBufferCopy(ChildBin->getData()))); | MemoryBuffer::getMemBufferCopy(ChildBin->getData()))); | ||||
if (auto Sym = ObjectLayer.findSymbol(Name, true)) | if (auto Sym = ObjectLayer.findSymbol(Name, true)) | ||||
return Sym; | return Sym; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return nullptr; | return nullptr; | ||||
▲ Show 20 Lines • Show All 83 Lines • Show Last 20 Lines |