X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FExecutionEngine%2FOrc%2FOrcMCJITReplacement.h;h=ddbc73251c7eee4c83224fe84600f9b3b32df551;hp=158d9c785e20604abf71cff154e43abd1c8ec469;hb=41367e252a806c1dfa36479d09643b3ac93a7263;hpb=556614bf098f77b9229faa6efc6c506da184c60e diff --git a/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h index 158d9c785e2..ddbc73251c7 100644 --- a/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h +++ b/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h @@ -134,9 +134,9 @@ public: if (!M->getDataLayout()) M->setDataLayout(getDataLayout()); - OwnedModules.push_back(std::move(M)); + Modules.push_back(std::move(M)); std::vector Ms; - Ms.push_back(&*OwnedModules.back()); + Ms.push_back(&*Modules.back()); LazyEmitLayer.addModuleSet(std::move(Ms), llvm::make_unique(*this)); } @@ -154,8 +154,13 @@ public: std::tie(Obj, Buf) = O.takeBinary(); std::vector> Objs; Objs.push_back(std::move(Obj)); - ObjectLayer.addObjectSet(std::move(Objs), - llvm::make_unique(*this)); + auto H = + ObjectLayer.addObjectSet(std::move(Objs), + llvm::make_unique(*this)); + + std::vector> Bufs; + Bufs.push_back(std::move(Buf)); + ObjectLayer.takeOwnershipOfBuffers(H, std::move(Bufs)); } void addArchive(object::OwningBinary A) override { @@ -302,10 +307,6 @@ private: CompileLayerT CompileLayer; LazyEmitLayerT LazyEmitLayer; - // MCJIT keeps modules alive - we need to do the same for backwards - // compatibility. - std::vector> OwnedModules; - // We need to store ObjLayerT::ObjSetHandles for each of the object sets // that have been emitted but not yet finalized so that we can forward the // mapSectionAddress calls appropriately.