summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/ExecutionEngine/Orc
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-02-21 21:55:49 +0000
committerLang Hames <lhames@gmail.com>2018-02-21 21:55:49 +0000
commit589eece1323e5ba20e8887bc4314db9af477ba77 (patch)
tree88ef672592bfa38e0beea4ee2761a9b27e196991 /llvm/unittests/ExecutionEngine/Orc
parentc1b46381dbfc070ccdba327d36053c154cde2b4f (diff)
downloadbcm5719-llvm-589eece1323e5ba20e8887bc4314db9af477ba77.tar.gz
bcm5719-llvm-589eece1323e5ba20e8887bc4314db9af477ba77.zip
[ORC] Switch RTDyldObjectLinkingLayer to take a unique_ptr<MemoryBuffer> rather
than a shared ObjectFile/MemoryBuffer pair. There's no need to pre-parse the buffer into an ObjectFile before passing it down to the linking layer, and moving the parsing into the linking layer allows us remove the parsing code at each call site. llvm-svn: 325725
Diffstat (limited to 'llvm/unittests/ExecutionEngine/Orc')
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp11
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp13
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp27
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp12
4 files changed, 21 insertions, 42 deletions
diff --git a/llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp
index 3f7d530d57e..3d0ee365f1c 100644
--- a/llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp
@@ -288,16 +288,13 @@ TEST(ObjectTransformLayerTest, Main) {
std::make_shared<NullResolver>()};
});
- auto IdentityTransform =
- [](std::shared_ptr<llvm::object::OwningBinary<llvm::object::ObjectFile>>
- Obj) {
- return Obj;
- };
+ auto IdentityTransform = [](std::unique_ptr<llvm::MemoryBuffer> Obj) {
+ return Obj;
+ };
ObjectTransformLayer<decltype(BaseLayer), decltype(IdentityTransform)>
TransformLayer(BaseLayer, IdentityTransform);
auto NullCompiler = [](llvm::Module &) {
- return llvm::object::OwningBinary<llvm::object::ObjectFile>(nullptr,
- nullptr);
+ return std::unique_ptr<llvm::MemoryBuffer>(nullptr);
};
IRCompileLayer<decltype(TransformLayer), decltype(NullCompiler)>
CompileLayer(TransformLayer, NullCompiler);
diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp
index d9448d47667..ca445b4d4e1 100644
--- a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp
@@ -38,13 +38,11 @@ protected:
return MB.takeModule();
}
- std::shared_ptr<object::OwningBinary<object::ObjectFile>>
- createTestObject() {
+ std::unique_ptr<MemoryBuffer> createTestObject() {
orc::SimpleCompiler IRCompiler(*TM);
auto M = createTestModule(TM->getTargetTriple());
M->setDataLayout(TM->createDataLayout());
- return std::make_shared<object::OwningBinary<object::ObjectFile>>(
- IRCompiler(*M));
+ return IRCompiler(*M);
}
typedef int (*MainFnTy)();
@@ -148,12 +146,7 @@ TEST_F(OrcCAPIExecutionTest, TestAddObjectFile) {
if (!TM)
return;
- std::unique_ptr<MemoryBuffer> ObjBuffer;
- {
- auto OwningObj = createTestObject();
- auto ObjAndBuffer = OwningObj->takeBinary();
- ObjBuffer = std::move(ObjAndBuffer.second);
- }
+ auto ObjBuffer = createTestObject();
LLVMOrcJITStackRef JIT =
LLVMOrcCreateInstance(wrap(TM.get()));
diff --git a/llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp
index 740abedeed9..2156ae883a8 100644
--- a/llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp
@@ -95,14 +95,13 @@ TEST(RTDyldObjectLinkingLayerTest, TestSetProcessAllSections) {
if (!TM)
return;
- auto Obj =
- std::make_shared<object::OwningBinary<object::ObjectFile>>(
- SimpleCompiler(*TM)(*M));
+ auto Obj = SimpleCompiler(*TM)(*M);
{
// Test with ProcessAllSections = false (the default).
auto K = ES.allocateVModule();
- cantFail(ObjLayer.addObject(K, Obj));
+ cantFail(ObjLayer.addObject(
+ K, MemoryBuffer::getMemBufferCopy(Obj->getBuffer())));
cantFail(ObjLayer.emitAndFinalize(K));
EXPECT_EQ(DebugSectionSeen, false)
<< "Unexpected debug info section";
@@ -113,7 +112,7 @@ TEST(RTDyldObjectLinkingLayerTest, TestSetProcessAllSections) {
// Test with ProcessAllSections = true.
ObjLayer.setProcessAllSections(true);
auto K = ES.allocateVModule();
- cantFail(ObjLayer.addObject(K, Obj));
+ cantFail(ObjLayer.addObject(K, std::move(Obj)));
cantFail(ObjLayer.emitAndFinalize(K));
EXPECT_EQ(DebugSectionSeen, true)
<< "Expected debug info section not seen";
@@ -164,9 +163,7 @@ TEST_F(RTDyldObjectLinkingLayerExecutionTest, NoDuplicateFinalization) {
Builder.CreateRet(FourtyTwo);
}
- auto Obj1 =
- std::make_shared<object::OwningBinary<object::ObjectFile>>(
- Compile(*MB1.getModule()));
+ auto Obj1 = Compile(*MB1.getModule());
ModuleBuilder MB2(Context, "", "dummy");
{
@@ -177,9 +174,7 @@ TEST_F(RTDyldObjectLinkingLayerExecutionTest, NoDuplicateFinalization) {
IRBuilder<> Builder(FooEntry);
Builder.CreateRet(Builder.CreateCall(BarDecl));
}
- auto Obj2 =
- std::make_shared<object::OwningBinary<object::ObjectFile>>(
- Compile(*MB2.getModule()));
+ auto Obj2 = Compile(*MB2.getModule());
auto K1 = ES.allocateVModule();
Resolvers[K1] = std::make_shared<NullResolver>();
@@ -249,9 +244,7 @@ TEST_F(RTDyldObjectLinkingLayerExecutionTest, NoPrematureAllocation) {
Builder.CreateRet(FourtyTwo);
}
- auto Obj1 =
- std::make_shared<object::OwningBinary<object::ObjectFile>>(
- Compile(*MB1.getModule()));
+ auto Obj1 = Compile(*MB1.getModule());
ModuleBuilder MB2(Context, "", "dummy");
{
@@ -263,9 +256,7 @@ TEST_F(RTDyldObjectLinkingLayerExecutionTest, NoPrematureAllocation) {
Value *Seven = ConstantInt::getSigned(Int32Ty, 7);
Builder.CreateRet(Seven);
}
- auto Obj2 =
- std::make_shared<object::OwningBinary<object::ObjectFile>>(
- Compile(*MB2.getModule()));
+ auto Obj2 = Compile(*MB2.getModule());
auto K = ES.allocateVModule();
cantFail(ObjLayer.addObject(K, std::move(Obj1)));
@@ -288,7 +279,7 @@ TEST_F(RTDyldObjectLinkingLayerExecutionTest, TestNotifyLoadedSignature) {
return RTDyldObjectLinkingLayer::Resources{
nullptr, std::make_shared<NullResolver>()};
},
- [](VModuleKey, const RTDyldObjectLinkingLayer::ObjectPtr &obj,
+ [](VModuleKey, const object::ObjectFile &obj,
const RuntimeDyld::LoadedObjectInfo &info) {});
}
diff --git a/llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp b/llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp
index d24aafed9b0..ae408a06f84 100644
--- a/llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp
@@ -24,8 +24,7 @@ public:
using ObjHandleT = uint64_t;
- using ObjectPtr =
- std::shared_ptr<object::OwningBinary<object::ObjectFile>>;
+ using ObjectPtr = std::unique_ptr<MemoryBuffer>;
using LookupFn = std::function<JITSymbol(StringRef, bool)>;
using SymbolLookupTable = std::map<ObjHandleT, LookupFn>;
@@ -43,7 +42,7 @@ public:
Expected<ObjHandleT> addObject(ObjectPtr Obj,
std::shared_ptr<JITSymbolResolver> Resolver) {
- return AddObject(Obj, SymTab);
+ return AddObject(std::move(Obj), SymTab);
}
Error removeObject(ObjHandleT H) {
@@ -102,8 +101,7 @@ MockObjectLayer::ObjectPtr createTestObject() {
B.CreateRet(ConstantInt::getSigned(Type::getInt32Ty(Ctx), 42));
SimpleCompiler IRCompiler(*TM);
- return std::make_shared<object::OwningBinary<object::ObjectFile>>(
- IRCompiler(*MB.getModule()));
+ return IRCompiler(*MB.getModule());
}
TEST(RemoteObjectLayer, AddObject) {
@@ -121,7 +119,7 @@ TEST(RemoteObjectLayer, AddObject) {
// Copy the bytes out of the test object: the copy will be used to verify
// that the original is correctly transmitted over RPC to the mock layer.
- StringRef ObjBytes = TestObject->getBinary()->getData();
+ StringRef ObjBytes = TestObject->getBuffer();
std::vector<char> ObjContents(ObjBytes.size());
std::copy(ObjBytes.begin(), ObjBytes.end(), ObjContents.begin());
@@ -134,7 +132,7 @@ TEST(RemoteObjectLayer, AddObject) {
MockObjectLayer::SymbolLookupTable &SymTab) {
// Check that the received object file content matches the original.
- StringRef RPCObjContents = Obj->getBinary()->getData();
+ StringRef RPCObjContents = Obj->getBuffer();
EXPECT_EQ(RPCObjContents.size(), ObjContents.size())
<< "RPC'd object file has incorrect size";
EXPECT_TRUE(std::equal(RPCObjContents.begin(), RPCObjContents.end(),
OpenPOWER on IntegriCloud