X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=include%2Fllvm%2FExecutionEngine%2FOrc%2FObjectLinkingLayer.h;h=03b43aa3272d429369244148864a2b0c6bad202e;hp=ff358007a72c56b2b6daf1ce71a8bc8b324b3440;hb=a73abdb6809f4565b42bf66525200b0ea3cf332a;hpb=0ace78e7d4c17a6bf7e2402571161184fe9d8cfd diff --git a/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h b/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h index ff358007a72..03b43aa3272 100644 --- a/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h +++ b/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h @@ -32,11 +32,17 @@ protected: /// had been provided by this instance. Higher level layers are responsible /// for taking any action required to handle the missing symbols. class LinkedObjectSet { + LinkedObjectSet(const LinkedObjectSet&) LLVM_DELETED_FUNCTION; + void operator=(const LinkedObjectSet&) LLVM_DELETED_FUNCTION; public: LinkedObjectSet(std::unique_ptr MM) : MM(std::move(MM)), RTDyld(llvm::make_unique(&*this->MM)), State(Raw) {} + // MSVC 2012 cannot infer a move constructor, so write it out longhand. + LinkedObjectSet(LinkedObjectSet &&O) + : MM(std::move(O.MM)), RTDyld(std::move(O.RTDyld)), State(O.State) {} + std::unique_ptr addObject(const object::ObjectFile &Obj) { return RTDyld->loadObject(Obj); @@ -74,7 +80,7 @@ protected: public: /// @brief Handle to a set of loaded objects. - typedef typename LinkedObjectSetListT::iterator ObjSetHandleT; + typedef LinkedObjectSetListT::iterator ObjSetHandleT; }; /// @brief Default (no-op) action to perform when loading objects. @@ -109,9 +115,9 @@ public: /// @brief Construct an ObjectLinkingLayer with the given NotifyLoaded, /// NotifyFinalized and CreateMemoryManager functors. ObjectLinkingLayer( - CreateRTDyldMMFtor CreateMemoryManager, - NotifyLoadedFtor NotifyLoaded, - NotifyFinalizedFtor NotifyFinalized) + CreateRTDyldMMFtor CreateMemoryManager = CreateRTDyldMMFtor(), + NotifyLoadedFtor NotifyLoaded = NotifyLoadedFtor(), + NotifyFinalizedFtor NotifyFinalized = NotifyFinalizedFtor()) : NotifyLoaded(std::move(NotifyLoaded)), NotifyFinalized(std::move(NotifyFinalized)), CreateMemoryManager(std::move(CreateMemoryManager)) {}