From: Stefan Gränitz Date: Wed, 10 Mar 2021 22:45:22 +0000 (+0100) Subject: [Orc] Deallocate debug objects explicitly when destroying the DebugObjectManagerPlugin X-Git-Tag: llvmorg-14-init~12647 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ee5e7a3a85611b3eaf2fd5a0870f4257d43680b5;p=platform%2Fupstream%2Fllvm.git [Orc] Deallocate debug objects explicitly when destroying the DebugObjectManagerPlugin --- diff --git a/llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp b/llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp index 8ed0a5a..6909928 100644 --- a/llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp +++ b/llvm/lib/ExecutionEngine/Orc/DebugObjectManagerPlugin.cpp @@ -123,6 +123,7 @@ enum class Requirement { class DebugObject { public: DebugObject(JITLinkContext &Ctx) : Ctx(Ctx) {} + virtual ~DebugObject() = default; void set(Requirement Req) { Reqs.insert(Req); } bool has(Requirement Req) const { return Reqs.count(Req) > 0; } @@ -130,9 +131,14 @@ public: using FinalizeContinuation = std::function)>; void finalizeAsync(FinalizeContinuation OnFinalize); + Error deallocate() { + if (Alloc) + return Alloc->deallocate(); + return Error::success(); + } + virtual void reportSectionTargetMemoryRange(StringRef Name, SectionRange TargetMem) {} - virtual ~DebugObject() {} protected: using Allocation = JITLinkMemoryManager::Allocation; @@ -392,7 +398,18 @@ DebugObjectManagerPlugin::DebugObjectManagerPlugin( ExecutionSession &ES, std::unique_ptr Target) : ES(ES), Target(std::move(Target)) {} -DebugObjectManagerPlugin::~DebugObjectManagerPlugin() {} +DebugObjectManagerPlugin::~DebugObjectManagerPlugin() { + for (auto &KV : PendingObjs) { + std::unique_ptr &DebugObj = KV.second; + if (Error Err = DebugObj->deallocate()) + ES.reportError(std::move(Err)); + } + for (auto &KV : RegisteredObjs) { + for (std::unique_ptr &DebugObj : KV.second) + if (Error Err = DebugObj->deallocate()) + ES.reportError(std::move(Err)); + } +} void DebugObjectManagerPlugin::notifyMaterializing( MaterializationResponsibility &MR, LinkGraph &G, JITLinkContext &Ctx,