diff options
author | Lang Hames <lhames@gmail.com> | 2020-09-10 13:10:27 -0700 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2020-09-10 13:21:46 -0700 |
commit | c74900ca67241bf963b7a4cfa1fae8eadf6bb8cd (patch) | |
tree | 3a0279d99e95b713357acab7ae8c3d9acdbb3c78 /llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp | |
parent | a5168bdb4a25485ac62e18bdc538b4842bc9fbd9 (diff) | |
download | llvm-c74900ca67241bf963b7a4cfa1fae8eadf6bb8cd.zip llvm-c74900ca67241bf963b7a4cfa1fae8eadf6bb8cd.tar.gz llvm-c74900ca67241bf963b7a4cfa1fae8eadf6bb8cd.tar.bz2 |
[ORC] Make MaterializationResponsibility immovable, pass by unique_ptr.
Making MaterializationResponsibility instances immovable allows their
associated VModuleKeys to be updated by the ExecutionSession while the
responsibility is still in-flight. This will be used in the upcoming
removable code feature to enable safe merging of resource keys even if
there are active compiles using the keys being merged.
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp index d18eb38..a57662e 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectTransformLayer.cpp @@ -17,8 +17,9 @@ ObjectTransformLayer::ObjectTransformLayer(ExecutionSession &ES, TransformFunction Transform) : ObjectLayer(ES), BaseLayer(BaseLayer), Transform(std::move(Transform)) {} -void ObjectTransformLayer::emit(MaterializationResponsibility R, - std::unique_ptr<MemoryBuffer> O) { +void ObjectTransformLayer::emit( + std::unique_ptr<MaterializationResponsibility> R, + std::unique_ptr<MemoryBuffer> O) { assert(O && "Module must not be null"); // If there is a transform set then apply it. @@ -26,7 +27,7 @@ void ObjectTransformLayer::emit(MaterializationResponsibility R, if (auto TransformedObj = Transform(std::move(O))) O = std::move(*TransformedObj); else { - R.failMaterialization(); + R->failMaterialization(); getExecutionSession().reportError(TransformedObj.takeError()); return; } |