summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-05-17 20:48:50 +0000
committerLang Hames <lhames@gmail.com>2018-05-17 20:48:50 +0000
commite21432e20dbdc3bc48cf156a037aefb9f69dd93f (patch)
treee8c7ee04758e12bc9cd66ed39e6cab66aca2c34f
parentf40f85868e690eefc3bb65f030e5f7890d349794 (diff)
downloadbcm5719-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.h19
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.
OpenPOWER on IntegriCloud