diff options
author | Lang Hames <lhames@gmail.com> | 2018-05-17 20:48:50 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-05-17 20:48:50 +0000 |
commit | e21432e20dbdc3bc48cf156a037aefb9f69dd93f (patch) | |
tree | e8c7ee04758e12bc9cd66ed39e6cab66aca2c34f | |
parent | f40f85868e690eefc3bb65f030e5f7890d349794 (diff) | |
download | bcm5719-llvm-e21432e20dbdc3bc48cf156a037aefb9f69dd93f.tar.gz bcm5719-llvm-e21432e20dbdc3bc48cf156a037aefb9f69dd93f.zip |
[ORC] Make MaterializationResponsibility's constructor private.
MaterializationResponsibility instances should be created by
MaterializationUnits only. Making the constructor private enforces this.
llvm-svn: 332665
-rw-r--r-- | llvm/include/llvm/ExecutionEngine/Orc/Core.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Core.h b/llvm/include/llvm/ExecutionEngine/Orc/Core.h index c9a4d830006..572919325fd 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/Core.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/Core.h @@ -16,6 +16,7 @@ #include "llvm/ExecutionEngine/JITSymbol.h" #include "llvm/ExecutionEngine/Orc/SymbolStringPool.h" +#include "llvm/IR/Module.h" #include <list> #include <map> @@ -110,11 +111,8 @@ private: /// finalize symbols, or abandon materialization by notifying any unmaterialized /// symbols of an error. class MaterializationResponsibility { + friend class MaterializationUnit; public: - /// Create a MaterializationResponsibility for the given VSO and - /// initial symbols. - MaterializationResponsibility(VSO &V, SymbolFlagsMap SymbolFlags); - MaterializationResponsibility(MaterializationResponsibility &&) = default; MaterializationResponsibility & operator=(MaterializationResponsibility &&) = default; @@ -160,6 +158,10 @@ public: void addDependencies(const SymbolDependenceMap &Dependencies); private: + /// Create a MaterializationResponsibility for the given VSO and + /// initial symbols. + MaterializationResponsibility(VSO &V, SymbolFlagsMap SymbolFlags); + VSO &V; SymbolFlagsMap SymbolFlags; }; @@ -174,8 +176,8 @@ private: /// definition is added or already present. class MaterializationUnit { public: - MaterializationUnit(SymbolFlagsMap SymbolFlags) - : SymbolFlags(std::move(SymbolFlags)) {} + MaterializationUnit(SymbolFlagsMap InitalSymbolFlags) + : SymbolFlags(std::move(InitalSymbolFlags)) {} virtual ~MaterializationUnit() {} @@ -196,6 +198,9 @@ public: discard(V, std::move(Name)); } +protected: + SymbolFlagsMap SymbolFlags; + private: virtual void anchor(); @@ -209,8 +214,6 @@ private: /// symbol is a function, delete the function body or mark it available /// externally). virtual void discard(const VSO &V, SymbolStringPtr Name) = 0; - - SymbolFlagsMap SymbolFlags; }; /// A MaterializationUnit implementation for pre-existing absolute symbols. |