mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-18 11:24:01 +00:00
Remove support for runtime multi-threading.
This patch removes the functions llvm_start_multithreaded() and llvm_stop_multithreaded(), and changes llvm_is_multithreaded() to return a constant value based on the value of the compile-time definition LLVM_ENABLE_THREADS. Previously, it was possible to have compile-time support for threads on, and runtime support for threads off, in which case certain mutexes were not allocated or ever acquired. Now, if the build is created with threads enabled, mutexes are always acquired. A test before/after patch of compiling a very large TU showed no noticeable performance impact of this change. Reviewers: rnk Differential Revision: http://reviews.llvm.org/D4076 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210600 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -23,6 +23,7 @@
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include <cassert>
|
||||
#include <cstdlib>
|
||||
#include <mutex>
|
||||
|
||||
#if defined(HAVE_UNISTD_H)
|
||||
# include <unistd.h>
|
||||
@ -37,16 +38,18 @@ using namespace llvm;
|
||||
static fatal_error_handler_t ErrorHandler = nullptr;
|
||||
static void *ErrorHandlerUserData = nullptr;
|
||||
|
||||
static llvm::recursive_mutex ErrorHandlerMutex;
|
||||
|
||||
void llvm::install_fatal_error_handler(fatal_error_handler_t handler,
|
||||
void *user_data) {
|
||||
assert(!llvm_is_multithreaded() &&
|
||||
"Cannot register error handlers after starting multithreaded mode!\n");
|
||||
std::lock_guard<llvm::recursive_mutex> Lock(ErrorHandlerMutex);
|
||||
assert(!ErrorHandler && "Error handler already registered!\n");
|
||||
ErrorHandler = handler;
|
||||
ErrorHandlerUserData = user_data;
|
||||
}
|
||||
|
||||
void llvm::remove_fatal_error_handler() {
|
||||
std::lock_guard<llvm::recursive_mutex> Lock(ErrorHandlerMutex);
|
||||
ErrorHandler = nullptr;
|
||||
}
|
||||
|
||||
@ -63,6 +66,7 @@ void llvm::report_fatal_error(StringRef Reason, bool GenCrashDiag) {
|
||||
}
|
||||
|
||||
void llvm::report_fatal_error(const Twine &Reason, bool GenCrashDiag) {
|
||||
std::lock_guard<llvm::recursive_mutex> Lock(ErrorHandlerMutex);
|
||||
if (ErrorHandler) {
|
||||
ErrorHandler(ErrorHandlerUserData, Reason.str(), GenCrashDiag);
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user