diff options
Diffstat (limited to 'llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h')
-rw-r--r-- | llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h b/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h index ac5a593bb77b..0c8514a60a50 100644 --- a/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h +++ b/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h @@ -17,7 +17,10 @@ #include "llvm/ExecutionEngine/JITSymbol.h" #include "llvm/Support/Error.h" #include "llvm/Support/Memory.h" +#include "llvm/Support/MSVCErrorWorkarounds.h" + #include <cstdint> +#include <future> namespace llvm { namespace jitlink { @@ -74,6 +77,15 @@ public: /// working memory. virtual void finalizeAsync(FinalizeContinuation OnFinalize) = 0; + /// Calls finalizeAsync and waits for completion. + Error finalize() { + std::promise<MSVCPError> FinalizeResultP; + auto FinalizeResultF = FinalizeResultP.get_future(); + finalizeAsync( + [&](Error Err) { FinalizeResultP.set_value(std::move(Err)); }); + return FinalizeResultF.get(); + } + /// Should deallocate target memory. virtual Error deallocate() = 0; }; |