Lines Matching defs:JITDylib
1 //===--- Core.cpp - Core ORC APIs (MaterializationUnit, JITDylib, etc.) ---===//
45 "JITDylib must be two byte aligned");
267 void AsynchronousSymbolQuery::addQueryDependence(JITDylib &JD,
275 JITDylib &JD, const SymbolStringPtr &Name) {
302 JITDylib *SourceJD, JITDylibLookupFlags SourceJDLookupFlags,
315 JITDylib &TgtJD = R->getTargetJITDylib();
316 JITDylib &SrcJD = SourceJD ? *SourceJD : TgtJD;
319 // aliases back to the JITDylib so as to not prematurely materialize any
476 void ReExportsMaterializationUnit::discard(const JITDylib &JD,
492 Expected<SymbolAliasMap> buildSimpleReexportsAliasMap(JITDylib &SourceJD,
592 ReexportsGenerator::ReexportsGenerator(JITDylib &SourceJD,
599 JITDylib &JD,
653 JITDylib::~JITDylib() {
654 LLVM_DEBUG(dbgs() << "Destroying JITDylib " << getName() << "\n");
657 Error JITDylib::clear() {
672 ResourceTrackerSP JITDylib::getDefaultResourceTracker() {
681 ResourceTrackerSP JITDylib::createResourceTracker() {
689 void JITDylib::removeGenerator(DefinitionGenerator &G) {
707 JITDylib::defineMaterializing(MaterializationResponsibility &FromMR,
759 Error JITDylib::replace(MaterializationResponsibility &FromMR,
838 JITDylib::delegate(MaterializationResponsibility &FromMR,
852 JITDylib::getRequestedSymbols(const SymbolFlagsMap &SymbolFlags) const {
857 assert(Symbols.count(KV.first) && "JITDylib does not cover this symbol?");
875 Error JITDylib::resolve(MaterializationResponsibility &MR,
884 return make_error<StringError>("JITDylib " + getName() +
981 void JITDylib::unlinkMaterializationResponsibility(
993 void JITDylib::shrinkMaterializationInfoMemory() {
1004 void JITDylib::setLinkOrder(JITDylibSearchOrder NewLinkOrder,
1019 void JITDylib::addToLinkOrder(const JITDylibSearchOrder &NewLinks) {
1031 void JITDylib::addToLinkOrder(JITDylib &JD, JITDylibLookupFlags JDLookupFlags) {
1035 void JITDylib::replaceInLinkOrder(JITDylib &OldJD, JITDylib &NewJD,
1047 void JITDylib::removeFromLinkOrder(JITDylib &JD) {
1059 Error JITDylib::remove(const SymbolNameSet &Names) {
1120 void JITDylib::dump(raw_ostream &OS) {
1122 OS << "JITDylib \"" << getName() << "\" (ES: "
1213 void JITDylib::MaterializingInfo::addQuery(
1224 void JITDylib::MaterializingInfo::removeQuery(
1235 JITDylib::AsynchronousSymbolQueryList
1236 JITDylib::MaterializingInfo::takeQueriesMeeting(SymbolState RequiredState) {
1249 JITDylib::JITDylib(ExecutionSession &ES, std::string Name)
1254 std::pair<JITDylib::AsynchronousSymbolQuerySet,
1256 JITDylib::IL_removeTracker(ResourceTracker &RT) {
1319 void JITDylib::transferTracker(ResourceTracker &DstRT, ResourceTracker &SrcRT) {
1322 assert(&DstRT.getJITDylib() == this && "DstRT is not for this JITDylib");
1323 assert(&SrcRT.getJITDylib() == this && "SrcRT is not for this JITDylib");
1394 Error JITDylib::defineImpl(MaterializationUnit &MU) {
1460 void JITDylib::installMaterializationUnit(
1476 void JITDylib::detachQueryHelper(AsynchronousSymbolQuery &Q,
1487 Expected<DenseMap<JITDylib *, SymbolMap>> Platform::lookupInitSymbols(
1489 const DenseMap<JITDylib *, SymbolLookupSet> &InitSyms) {
1491 DenseMap<JITDylib *, SymbolMap> CompoundResult;
1516 "Duplicate JITDylib in lookup?");
1538 const DenseMap<JITDylib *, SymbolLookupSet> &InitSyms) {
1651 JITDylib *ExecutionSession::getJITDylibByName(StringRef Name) {
1652 return runSessionLocked([&, this]() -> JITDylib * {
1660 JITDylib &ExecutionSession::createBareJITDylib(std::string Name) {
1661 assert(!getJITDylibByName(Name) && "JITDylib with that name already exists");
1662 return runSessionLocked([&, this]() -> JITDylib & {
1663 assert(SessionOpen && "Cannot create JITDylib after session is closed");
1664 JDs.push_back(new JITDylib(*this, std::move(Name)));
1669 Expected<JITDylib &> ExecutionSession::createJITDylib(std::string Name) {
1681 assert(JD->State == JITDylib::Open && "JD already closed");
1682 JD->State = JITDylib::Closing;
1700 assert(JD->State == JITDylib::Closing && "JD should be closing");
1701 JD->State = JITDylib::Closed;
1718 JITDylib::getDFSLinkOrder(ArrayRef<JITDylibSP> JDs) {
1724 DenseSet<JITDylib *> Visited;
1757 JITDylib::getReverseDFSLinkOrder(ArrayRef<JITDylibSP> JDs) {
1764 Expected<std::vector<JITDylibSP>> JITDylib::getDFSLinkOrder() {
1768 Expected<std::vector<JITDylibSP>> JITDylib::getReverseDFSLinkOrder() {
1882 ExecutionSession::lookup(ArrayRef<JITDylib *> SearchOrder, SymbolStringPtr Name,
1888 ExecutionSession::lookup(ArrayRef<JITDylib *> SearchOrder, StringRef Name,
1894 JITDylib &JD, JITDispatchHandlerAssociationMap WFs) {
1966 DenseSet<JITDylib::EmissionDepUnit *> EDUsToCheck;
1975 Stream << " In JITDylib " << JD->getName() << ", ";
1980 if (JD->State != JITDylib::Open) {
2101 assert(EDU->JD->State == JITDylib::Open && "EDU->JD is not Open");
2183 JITDylib::AsynchronousSymbolQuerySet QueriesToFail;
2245 JITDylib &JD, JITDylibLookupFlags JDLookupFlags,
2331 << (IPLS->NewJITDylib ? " (entering new JITDylib)" : "") << "\n"
2358 // Get the next JITDylib and lookup flags.
2368 // If we've just reached a new JITDylib then perform some setup.
2370 // Add any non-candidates from the last JITDylib (if any) back on to the
2371 // list of definition candidates for this JITDylib, reset definition
2382 // Build the definition generator stack for this JITDylib.
2394 // this JITDylib.
2424 LLVM_DEBUG(dbgs() << " No generators to run for this JITDylib.\n");
2518 // If we get here then we've moved on to the next JITDylib with candidates
2520 LLVM_DEBUG(dbgs() << "Phase 1 moving to next JITDylib.\n");
2555 << (IPLS->NewJITDylib ? " (entering new JITDylib)" : "") << "\n"
2564 DenseMap<JITDylib *, JITDylib::UnmaterializedInfosList> CollectedUMIs;
2802 << (IPLS->NewJITDylib ? " (entering new JITDylib)" : "") << "\n"
2916 std::deque<JITDylib::EmissionDepUnit *> Worklist, EDUInfosMap &EDUInfos,
2932 JITDylib::EmissionDepUnitInfo *UserEDUInfo = nullptr;
2974 DenseMap<JITDylib::EmissionDepUnit *, JITDylib::EmissionDepUnitInfo> EDUInfos;
2976 DenseMap<NonOwningSymbolStringPtr, JITDylib::EmissionDepUnit *> EDUForSymbol;
2984 auto TmpEDU = std::make_shared<JITDylib::EmissionDepUnit>(TargetJD);
3007 auto ResidualEDU = std::make_shared<JITDylib::EmissionDepUnit>(TargetJD);
3053 // DepJD is some other JITDylib.There can't be any intra-finalization
3058 // DepJD is the Target JITDylib. Check for intra-finaliztaion edges,
3080 std::deque<JITDylib::EmissionDepUnit *> Worklist;
3099 [](JITDylib::EmissionDepUnit &, JITDylib &, NonOwningSymbolStringPtr) {});
3105 std::shared_ptr<JITDylib::EmissionDepUnit> EDU,
3106 JITDylib::AsynchronousSymbolQuerySet &Queries) {
3145 std::shared_ptr<JITDylib::EmissionDepUnit> EDU,
3146 JITDylib::AsynchronousSymbolQuerySet &Queries) {
3202 bool ExecutionSession::IL_removeEDUDependence(JITDylib::EmissionDepUnit &EDU,
3203 JITDylib &DepJD,
3236 Error ExecutionSession::makeJDClosedError(JITDylib::EmissionDepUnit &EDU,
3237 JITDylib &ClosedJD) {
3250 Error ExecutionSession::makeUnsatisfiedDepsError(JITDylib::EmissionDepUnit &EDU,
3251 JITDylib &BadJD,
3264 Expected<JITDylib::AsynchronousSymbolQuerySet>
3272 if (TargetJD.State != JITDylib::Open)
3273 return make_error<StringError>("JITDylib " + TargetJD.getName() +
3286 std::deque<JITDylib::EmissionDepUnit *> Worklist;
3293 SmallVector<JITDylib *> DepJDsToRemove;
3295 if (DepJD->State != JITDylib::Open)
3418 [](JITDylib::EmissionDepUnit &EDU, JITDylib &JD,
3423 JITDylib::AsynchronousSymbolQuerySet CompletedQueries;
3522 std::pair<JITDylib::AsynchronousSymbolQuerySet,
3524 ExecutionSession::IL_failSymbols(JITDylib &JD,
3531 JITDylib::AsynchronousSymbolQuerySet FailedQueries;
3533 auto ExtractFailedQueries = [&](JITDylib::MaterializingInfo &MI) {
3534 JITDylib::AsynchronousSymbolQueryList ToDetach;
3556 // JITDylib removal. In that case we can safely skip this symbol and
3707 JITDylib::AsynchronousSymbolQuerySet FailedQueries;
3713 return std::pair<JITDylib::AsynchronousSymbolQuerySet,