projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
llvm/ExecutionEngine/Orc/LogicalDylib.h: Satisfy Modules.
[oota-llvm.git]
/
include
/
llvm
/
ExecutionEngine
/
Orc
/
LogicalDylib.h
diff --git
a/include/llvm/ExecutionEngine/Orc/LogicalDylib.h
b/include/llvm/ExecutionEngine/Orc/LogicalDylib.h
index ff5656d7b99bd25f10ea6b46a3c577d1556f1911..883fa9eac560c46d1a2a8278236abe02fb5d81c2 100644
(file)
--- a/
include/llvm/ExecutionEngine/Orc/LogicalDylib.h
+++ b/
include/llvm/ExecutionEngine/Orc/LogicalDylib.h
@@
-14,6
+14,10
@@
#ifndef LLVM_EXECUTIONENGINE_ORC_LOGICALDYLIB_H
#define LLVM_EXECUTIONENGINE_ORC_LOGICALDYLIB_H
#ifndef LLVM_EXECUTIONENGINE_ORC_LOGICALDYLIB_H
#define LLVM_EXECUTIONENGINE_ORC_LOGICALDYLIB_H
+#include "llvm/ExecutionEngine/Orc/JITSymbol.h"
+#include <string>
+#include <vector>
+
namespace llvm {
namespace orc {
namespace llvm {
namespace orc {
@@
-54,7
+58,10
@@
public:
// If possible, remove this and ~LogicalDylib once the work in the dtor is
// moved to members (eg: self-unregistering base layer handles).
// If possible, remove this and ~LogicalDylib once the work in the dtor is
// moved to members (eg: self-unregistering base layer handles).
- LogicalDylib(LogicalDylib &&RHS) = default;
+ LogicalDylib(LogicalDylib &&RHS)
+ : BaseLayer(std::move(RHS.BaseLayer)),
+ LogicalModules(std::move(RHS.LogicalModules)),
+ DylibResources(std::move(RHS.DylibResources)) {}
LogicalModuleHandle createLogicalModule() {
LogicalModules.push_back(LogicalModule());
LogicalModuleHandle createLogicalModule() {
LogicalModules.push_back(LogicalModule());
@@
-79,22
+86,27
@@
public:
}
JITSymbol findSymbolInLogicalModule(LogicalModuleHandle LMH,
}
JITSymbol findSymbolInLogicalModule(LogicalModuleHandle LMH,
- const std::string &Name) {
+ const std::string &Name,
+ bool ExportedSymbolsOnly) {
+
+ if (auto StubSym = LMH->Resources.findSymbol(Name, ExportedSymbolsOnly))
+ return StubSym;
+
for (auto BLH : LMH->BaseLayerHandles)
for (auto BLH : LMH->BaseLayerHandles)
- if (auto Symbol = BaseLayer.findSymbolIn(BLH, Name,
false
))
+ if (auto Symbol = BaseLayer.findSymbolIn(BLH, Name,
ExportedSymbolsOnly
))
return Symbol;
return nullptr;
}
JITSymbol findSymbolInternally(LogicalModuleHandle LMH,
const std::string &Name) {
return Symbol;
return nullptr;
}
JITSymbol findSymbolInternally(LogicalModuleHandle LMH,
const std::string &Name) {
- if (auto Symbol = findSymbolInLogicalModule(LMH, Name))
+ if (auto Symbol = findSymbolInLogicalModule(LMH, Name
, false
))
return Symbol;
for (auto LMI = LogicalModules.begin(), LME = LogicalModules.end();
LMI != LME; ++LMI) {
if (LMI != LMH)
return Symbol;
for (auto LMI = LogicalModules.begin(), LME = LogicalModules.end();
LMI != LME; ++LMI) {
if (LMI != LMH)
- if (auto Symbol = findSymbolInLogicalModule(LMI, Name))
+ if (auto Symbol = findSymbolInLogicalModule(LMI, Name
, false
))
return Symbol;
}
return Symbol;
}
@@
-102,11
+114,10
@@
public:
}
JITSymbol findSymbol(const std::string &Name, bool ExportedSymbolsOnly) {
}
JITSymbol findSymbol(const std::string &Name, bool ExportedSymbolsOnly) {
- for (auto &LM : LogicalModules)
- for (auto BLH : LM.BaseLayerHandles)
- if (auto Symbol =
- BaseLayer.findSymbolIn(BLH, Name, ExportedSymbolsOnly))
- return Symbol;
+ for (auto LMI = LogicalModules.begin(), LME = LogicalModules.end();
+ LMI != LME; ++LMI)
+ if (auto Sym = findSymbolInLogicalModule(LMI, Name, ExportedSymbolsOnly))
+ return Sym;
return nullptr;
}
return nullptr;
}
@@
-116,7
+127,6
@@
protected:
BaseLayerT BaseLayer;
LogicalModuleList LogicalModules;
LogicalDylibResources DylibResources;
BaseLayerT BaseLayer;
LogicalModuleList LogicalModules;
LogicalDylibResources DylibResources;
-
};
} // End namespace orc.
};
} // End namespace orc.