diff options
author | Jan Beich <jbeich@FreeBSD.org> | 2018-05-07 22:29:46 +0000 |
---|---|---|
committer | Jan Beich <jbeich@FreeBSD.org> | 2018-05-07 22:29:46 +0000 |
commit | 67a9073255c853a66ec40e20ec79b92c2b44bc85 (patch) | |
tree | 9d553fcb5181a65656f17c284dc5954946973eb4 /emulators | |
parent | 9f6655b0e0dc5c41080004b9e7d0f84295ae8364 (diff) |
Notes
Diffstat (limited to 'emulators')
-rw-r--r-- | emulators/rpcs3/Makefile | 2 | ||||
-rw-r--r-- | emulators/rpcs3/files/extra-patch-no-thread_local | 156 |
2 files changed, 0 insertions, 158 deletions
diff --git a/emulators/rpcs3/Makefile b/emulators/rpcs3/Makefile index a2cc64fb9653..a90e0fc4996d 100644 --- a/emulators/rpcs3/Makefile +++ b/emulators/rpcs3/Makefile @@ -38,8 +38,6 @@ USES= cmake compiler:c++14-lang iconv:wchar_t localbase:ldflags \ USE_GL= gl glew USE_QT5= qmake_build buildtools_build core dbus gui network widgets qml USE_XORG= x11 -EXTRA_PATCHES+= ${EXTRA_PATCHES_${OPSYS}_${OSREL}} -EXTRA_PATCHES_FreeBSD_10.3= ${PATCHDIR}/extra-patch-no-thread_local CMAKE_ON= CMAKE_SKIP_RPATH USE_SYSTEM_FFMPEG USE_SYSTEM_LIBPNG CMAKE_OFF= USE_NATIVE_INSTRUCTIONS CXXFLAGS+= -D_GLIBCXX_USE_C99 # XXX ports/193528 diff --git a/emulators/rpcs3/files/extra-patch-no-thread_local b/emulators/rpcs3/files/extra-patch-no-thread_local deleted file mode 100644 index 0641b38a33d2..000000000000 --- a/emulators/rpcs3/files/extra-patch-no-thread_local +++ /dev/null @@ -1,156 +0,0 @@ -FreeBSD 10.3 lacks __cxa_thread_atexit, so revert -https://github.com/RPCS3/rpcs3/commit/c1450ad61627 - ---- rpcs3/Emu/VFS.cpp.orig 2018-03-12 20:29:35 UTC -+++ rpcs3/Emu/VFS.cpp -@@ -18,7 +18,7 @@ bool vfs::mount(const std::string& dev_name, const std - { - const auto table = fxm::get_always<vfs_manager>(); - -- safe_writer_lock lock(table->mutex); -+ writer_lock lock(table->mutex); - - return table->mounted.emplace(dev_name, path).second; - } -@@ -27,7 +27,7 @@ std::string vfs::get(const std::string& vpath, const s - { - const auto table = fxm::get_always<vfs_manager>(); - -- safe_reader_lock lock(table->mutex); -+ reader_lock lock(table->mutex); - - std::smatch match; - ---- Utilities/Log.cpp.orig 2017-09-19 12:07:07 UTC -+++ Utilities/Log.cpp -@@ -255,7 +255,7 @@ void logs::message::broadcast(const char* fmt, const f - } - - // Get text -- thread_local std::string text; text.clear(); -+ std::string text; - fmt::raw_append(text, fmt, sup, args); - std::string prefix = g_tls_log_prefix(); - -@@ -275,7 +275,7 @@ void logs::message::broadcast(const char* fmt, const f - } - - // Store message additionally -- get_logger()->messages.emplace_back(stored_message{*this, stamp, std::move(prefix), text}); -+ get_logger()->messages.emplace_back(stored_message{*this, stamp, std::move(prefix), std::move(text)}); - } - } - -@@ -405,7 +405,7 @@ logs::file_listener::file_listener(const std::string& - - void logs::file_listener::log(u64 stamp, const logs::message& msg, const std::string& prefix, const std::string& _text) - { -- thread_local std::string text; -+ std::string text; text.reserve(prefix.size() + _text.size() + 200); - - // Used character: U+00B7 (Middle Dot) - switch (msg.sev) ---- Utilities/mutex.cpp.orig 2017-10-08 20:37:54 UTC -+++ Utilities/mutex.cpp -@@ -5,8 +5,10 @@ - #include <vector> - #include <algorithm> - -+#if 0 - // TLS variable for tracking owned mutexes - thread_local std::vector<shared_mutex*> g_tls_locks; -+#endif - - void shared_mutex::imp_lock_shared(s64 _old) - { -@@ -258,6 +260,7 @@ bool shared_mutex::try_lock_degrade() - return m_value.compare_and_swap_test(0, c_one - c_min); - } - -+#if 0 - safe_reader_lock::safe_reader_lock(shared_mutex& mutex) - : m_mutex(mutex) - , m_is_owned(false) -@@ -332,3 +335,4 @@ safe_writer_lock::~safe_writer_lock() - - // TODO: order locks - } -+#endif ---- Utilities/mutex.h.orig 2017-10-08 20:37:54 UTC -+++ Utilities/mutex.h -@@ -177,6 +177,7 @@ class writer_lock final (public) - } - }; - -+#if 0 - // Safe reader lock. Can be recursive above other safe locks (reader or writer). - class safe_reader_lock final - { -@@ -229,3 +230,4 @@ class safe_writer_lock final (public) - - ~safe_writer_lock(); - }; -+#endif ---- Utilities/types.h.orig 2017-08-24 18:20:18 UTC -+++ Utilities/types.h -@@ -32,6 +32,7 @@ - #define SAFE_BUFFERS - #define NEVER_INLINE __attribute__((noinline)) - #define FORCE_INLINE __attribute__((always_inline)) inline -+#define thread_local __thread - #endif - - #define CHECK_SIZE(type, size) static_assert(sizeof(type) == size, "Invalid " #type " type size") ---- rpcs3/Emu/System.cpp.orig 2017-08-24 18:20:18 UTC -+++ rpcs3/Emu/System.cpp -@@ -797,20 +797,26 @@ void Emulator::Stop() - - s32 error_code::error_report(const fmt_type_info* sup, u64 arg, const fmt_type_info* sup2, u64 arg2) - { -- static thread_local std::unordered_map<std::string, std::size_t> g_tls_error_stats; -- static thread_local std::string g_tls_error_str; -+ static thread_local std::unordered_map<std::string, std::size_t>* g_tls_error_stats{}; -+ static thread_local std::string* g_tls_error_str{}; - -- if (g_tls_error_stats.empty()) -+ if (!g_tls_error_stats) - { -+ g_tls_error_stats = new std::unordered_map<std::string, std::size_t>; -+ g_tls_error_str = new std::string; -+ - thread_ctrl::atexit([] - { -- for (auto&& pair : g_tls_error_stats) -+ for (auto&& pair : *g_tls_error_stats) - { - if (pair.second > 3) - { - LOG_ERROR(GENERAL, "Stat: %s [x%u]", pair.first, pair.second); - } - } -+ -+ delete g_tls_error_stats; -+ delete g_tls_error_str; - }); - } - -@@ -840,15 +846,15 @@ s32 error_code::error_report(const fmt_type_info* sup, - } - - // Format log message (use preallocated buffer) -- g_tls_error_str.clear(); -- fmt::append(g_tls_error_str, "'%s' failed with 0x%08x%s%s%s%s", func, arg, sup ? " : " : "", std::make_pair(sup, arg), sup2 ? ", " : "", std::make_pair(sup2, arg2)); -+ g_tls_error_str->clear(); -+ fmt::append(*g_tls_error_str, "'%s' failed with 0x%08x%s%s%s%s", func, arg, sup ? " : " : "", std::make_pair(sup, arg), sup2 ? ", " : "", std::make_pair(sup2, arg2)); - - // Update stats and check log threshold -- const auto stat = ++g_tls_error_stats[g_tls_error_str]; -+ const auto stat = ++(*g_tls_error_stats)[*g_tls_error_str]; - - if (stat <= 3) - { -- channel->format(level, "%s [%u]", g_tls_error_str, stat); -+ channel->format(level, "%s [%u]", *g_tls_error_str, stat); - } - - return static_cast<s32>(arg); |