summaryrefslogtreecommitdiff
path: root/llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h')
-rw-r--r--llvm/include/llvm/ExecutionEngine/JITLink/JITLinkMemoryManager.h12
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;
};