diff options
author | Zachary Turner <zturner@google.com> | 2014-06-16 22:49:41 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2014-06-16 22:49:41 +0000 |
commit | 5ea46694d0b48eebcf04d9e1fc0dac6382356f32 (patch) | |
tree | 686459ef65febf5538b05e7f68c26f04c6a5d7c8 /include | |
parent | 298ff80849de645ab7afb92004759350309de400 (diff) | |
download | llvm-5ea46694d0b48eebcf04d9e1fc0dac6382356f32.tar.gz llvm-5ea46694d0b48eebcf04d9e1fc0dac6382356f32.tar.bz2 llvm-5ea46694d0b48eebcf04d9e1fc0dac6382356f32.tar.xz |
Revert r211066, 211067, 211068, 211069, 211070.
These were committed accidentally from the wrong branch before having
a review sign-off.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211072 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm-c/Core.h | 13 | ||||
-rw-r--r-- | include/llvm/Support/ManagedStatic.h | 3 | ||||
-rw-r--r-- | include/llvm/Support/Mutex.h | 4 | ||||
-rw-r--r-- | include/llvm/Support/Threading.h | 31 |
4 files changed, 37 insertions, 14 deletions
diff --git a/include/llvm-c/Core.h b/include/llvm-c/Core.h index 8693a3020a..0e78ed71fa 100644 --- a/include/llvm-c/Core.h +++ b/include/llvm-c/Core.h @@ -2848,13 +2848,16 @@ void LLVMDisposePassManager(LLVMPassManagerRef PM); * @{ */ -/** Deprecated: Multi-threading can only be enabled/disabled with the compile - time define LLVM_ENABLE_THREADS. This function always returns - LLVMIsMultithreaded(). */ +/** Allocate and initialize structures needed to make LLVM safe for + multithreading. The return value indicates whether multithreaded + initialization succeeded. Must be executed in isolation from all + other LLVM api calls. + @see llvm::llvm_start_multithreaded */ LLVMBool LLVMStartMultithreaded(void); -/** Deprecated: Multi-threading can only be enabled/disabled with the compile - time define LLVM_ENABLE_THREADS. */ +/** Deallocate structures necessary to make LLVM safe for multithreading. + Must be executed in isolation from all other LLVM api calls. + @see llvm::llvm_stop_multithreaded */ void LLVMStopMultithreaded(void); /** Check whether LLVM is executing in thread-safe mode or not. diff --git a/include/llvm/Support/ManagedStatic.h b/include/llvm/Support/ManagedStatic.h index d8fbfeb8e2..1bb8cea092 100644 --- a/include/llvm/Support/ManagedStatic.h +++ b/include/llvm/Support/ManagedStatic.h @@ -103,6 +103,9 @@ void llvm_shutdown(); /// llvm_shutdown() when it is destroyed. struct llvm_shutdown_obj { llvm_shutdown_obj() { } + explicit llvm_shutdown_obj(bool multithreaded) { + if (multithreaded) llvm_start_multithreaded(); + } ~llvm_shutdown_obj() { llvm_shutdown(); } }; diff --git a/include/llvm/Support/Mutex.h b/include/llvm/Support/Mutex.h index 2f3201a201..496a4381f3 100644 --- a/include/llvm/Support/Mutex.h +++ b/include/llvm/Support/Mutex.h @@ -15,13 +15,11 @@ #define LLVM_SUPPORT_MUTEX_H #include "llvm/Support/Compiler.h" +#include "llvm/Support/Threading.h" #include <cassert> namespace llvm { - // Forward declare. - bool llvm_is_multithreaded(); - namespace sys { /// @brief Platform agnostic Mutex class. diff --git a/include/llvm/Support/Threading.h b/include/llvm/Support/Threading.h index 8f87cbc7f4..a7e8774558 100644 --- a/include/llvm/Support/Threading.h +++ b/include/llvm/Support/Threading.h @@ -7,21 +7,40 @@ // //===----------------------------------------------------------------------===// // -// This file defines helper functions for running LLVM in a multi-threaded -// environment. +// TThis file defines llvm_start_multithreaded() and friends. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_THREADING_H #define LLVM_SUPPORT_THREADING_H -#include "llvm/Support/Mutex.h" - namespace llvm { - /// llvm_is_multithreaded - returns true if LLVM is compiled with support - /// for multiple threads, and false otherwise. + /// llvm_start_multithreaded - Allocate and initialize structures needed to + /// make LLVM safe for multithreading. The return value indicates whether + /// multithreaded initialization succeeded. LLVM will still be operational + /// on "failed" return, and will still be safe for hosting threading + /// applications in the JIT, but will not be safe for concurrent calls to the + /// LLVM APIs. + /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS. + bool llvm_start_multithreaded(); + + /// llvm_stop_multithreaded - Deallocate structures necessary to make LLVM + /// safe for multithreading. + /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS. + void llvm_stop_multithreaded(); + + /// llvm_is_multithreaded - Check whether LLVM is executing in thread-safe + /// mode or not. bool llvm_is_multithreaded(); + /// acquire_global_lock - Acquire the global lock. This is a no-op if called + /// before llvm_start_multithreaded(). + void llvm_acquire_global_lock(); + + /// release_global_lock - Release the global lock. This is a no-op if called + /// before llvm_start_multithreaded(). + void llvm_release_global_lock(); + /// llvm_execute_on_thread - Execute the given \p UserFn on a separate /// thread, passing it the provided \p UserData. /// |