svn commit: r508221 - in head/emulators/rpcs3: . files
Jan Beich
jbeich at FreeBSD.org
Tue Aug 6 00:29:54 UTC 2019
Author: jbeich
Date: Tue Aug 6 00:29:53 2019
New Revision: 508221
URL: https://svnweb.freebsd.org/changeset/ports/508221
Log:
emulators/rpcs3: update to 0.0.6.8443
Changes: https://github.com/RPCS3/rpcs3/compare/e40b76b25...05813c7e9
Added:
head/emulators/rpcs3/files/extra-patch-revert-5bd17a44c972 (contents, props changed)
Modified:
head/emulators/rpcs3/Makefile (contents, props changed)
head/emulators/rpcs3/distinfo (contents, props changed)
Modified: head/emulators/rpcs3/Makefile
==============================================================================
--- head/emulators/rpcs3/Makefile Mon Aug 5 23:37:31 2019 (r508220)
+++ head/emulators/rpcs3/Makefile Tue Aug 6 00:29:53 2019 (r508221)
@@ -2,9 +2,8 @@
PORTNAME= rpcs3
DISTVERSIONPREFIX= v
-DISTVERSION= 0.0.6-8435 # git rev-list --count HEAD
-DISTVERSIONSUFFIX= -ge40b76b25
-PORTREVISION= 1
+DISTVERSION= 0.0.6-8443 # git rev-list --count HEAD
+DISTVERSIONSUFFIX= -g05813c7e9
CATEGORIES= emulators
MAINTAINER= jbeich at FreeBSD.org
@@ -47,6 +46,7 @@ LDFLAGS+= -Wl,--as-needed # GLU
# XXX Remove after FreeBSD 11.2/12.0 reach EOL i.e., around 2020-02-01
.if !exists(/usr/include/c++/v1/charconv) && exists(/usr/lib/libc++.so)
EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-revert-f9ad6358563b
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-revert-5bd17a44c972
.endif
OPTIONS_DEFINE= ALSA EVDEV GDB LLVM PULSEAUDIO VULKAN
Modified: head/emulators/rpcs3/distinfo
==============================================================================
--- head/emulators/rpcs3/distinfo Mon Aug 5 23:37:31 2019 (r508220)
+++ head/emulators/rpcs3/distinfo Tue Aug 6 00:29:53 2019 (r508221)
@@ -1,6 +1,6 @@
-TIMESTAMP = 1564426684
-SHA256 (RPCS3-rpcs3-v0.0.6-8435-ge40b76b25_GH0.tar.gz) = 6a4eaceb45c42a4dd55956fb00f051ee5aa5d74e18834732885b3a9d8f863043
-SIZE (RPCS3-rpcs3-v0.0.6-8435-ge40b76b25_GH0.tar.gz) = 5531115
+TIMESTAMP = 1564942579
+SHA256 (RPCS3-rpcs3-v0.0.6-8443-g05813c7e9_GH0.tar.gz) = 14dff0e16d94ff3068bc6a79aa7e37fe8ce1286a456423fa4a0b3a4844c0ae4b
+SIZE (RPCS3-rpcs3-v0.0.6-8443-g05813c7e9_GH0.tar.gz) = 5532101
SHA256 (RPCS3-hidapi-hidapi-0.8.0-rc1-27-g9220f5e_GH0.tar.gz) = 3120e0b701943f452760e45f9fc1ac50bab356ad4c807b4cac4598041c5ca1a5
SIZE (RPCS3-hidapi-hidapi-0.8.0-rc1-27-g9220f5e_GH0.tar.gz) = 105400
SHA256 (RPCS3-llvm-b860b5e8f4ee_GH0.tar.gz) = c151972a0c8ceac568c24b61e63d2ecbdac0f125185e23fc2238e0a14048256e
Added: head/emulators/rpcs3/files/extra-patch-revert-5bd17a44c972
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/rpcs3/files/extra-patch-revert-5bd17a44c972 Tue Aug 6 00:29:53 2019 (r508221)
@@ -0,0 +1,160 @@
+rpcs3/util/atomic.cpp:55:51: error: no type named 'node_type' in 'std::__1::multimap<const void *, (anonymous namespace)::waiter, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, (anonymous namespace)::waiter> > >'; did you mean 'size_type'?
+ thread_local std::multimap<const void*, waiter>::node_type s_tls_waiter = []()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
+ size_type
+/usr/include/c++/v1/map:1507:60: note: 'size_type' declared here
+ typedef typename __alloc_traits::size_type size_type;
+ ^
+rpcs3/util/atomic.cpp:59:16: error: no member named 'extract' in 'std::__1::multimap<const void *, (anonymous namespace)::waiter, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, (anonymous namespace)::waiter> > >'
+ return dummy.extract(dummy.emplace(nullptr, &s_tls_waiter));
+ ~~~~~ ^
+rpcs3/util/atomic.cpp:55:61: error: cannot initialize a variable of type 'std::multimap<const void *, waiter>::size_type' (aka 'unsigned long') with an rvalue of type 'void'
+ thread_local std::multimap<const void*, waiter>::node_type s_tls_waiter = []()
+ ^ ~~~~
+rpcs3/util/atomic.cpp:92:69: error: no type named 'node_type' in 'std::__1::multimap<const void *, (anonymous namespace)::waiter, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, (anonymous namespace)::waiter> > >'; did you mean 'size_type'?
+ const auto ptls = static_cast<std::multimap<const void*, waiter>::node_type*>(found->second.tls_ptr);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
+ size_type
+/usr/include/c++/v1/map:1507:60: note: 'size_type' declared here
+ typedef typename __alloc_traits::size_type size_type;
+ ^
+rpcs3/util/atomic.cpp:93:21: error: no member named 'extract' in 'std::__1::multimap<const void *, (anonymous namespace)::waiter, std::__1::less<const void *>, std::__1::allocator<std::__1::pair<const void *const, (anonymous namespace)::waiter> > >'
+ *ptls = wmap.list.extract(found);
+ ~~~~~~~~~ ^
+rpcs3/util/atomic.cpp:94:7: error: member reference base type 'unsigned long' is not a structure or union
+ ptls->mapped().cond.notify_one();
+ ~~~~^ ~~~~~~
+
+--- rpcs3/util/atomic.cpp.orig 2019-08-04 18:16:19 UTC
++++ rpcs3/util/atomic.cpp
+@@ -2,10 +2,6 @@
+
+ #include "Utilities/sync.h"
+
+-#include <map>
+-#include <mutex>
+-#include <condition_variable>
+-
+ // Should be at least 65536, currently 2097152.
+ static constexpr std::uintptr_t s_hashtable_size = 1u << 21;
+
+@@ -31,113 +27,6 @@ static inline bool ptr_cmp(const void* data, std::size_t size, u64 old_value)
+ return false;
+ }
+
+-// Fallback implementation
+-namespace
+-{
+- struct waiter
+- {
+- std::condition_variable cond;
+- void* const tls_ptr;
+-
+- explicit waiter(void* tls_ptr)
+- : tls_ptr(tls_ptr)
+- {
+- }
+- };
+-
+- struct waiter_map
+- {
+- std::mutex mutex;
+- std::multimap<const void*, waiter> list;
+- };
+-
+- // Thread's unique node to insert without allocation
+- thread_local std::multimap<const void*, waiter>::node_type s_tls_waiter = []()
+- {
+- // Initialize node from a dummy container (there is no separate node constructor)
+- std::multimap<const void*, waiter> dummy;
+- return dummy.extract(dummy.emplace(nullptr, &s_tls_waiter));
+- }();
+-
+- waiter_map& get_fallback_map(const void* ptr)
+- {
+- static waiter_map s_waiter_maps[4096];
+-
+- return s_waiter_maps[std::hash<const void*>()(ptr) % std::size(s_waiter_maps)];
+- }
+-
+- void fallback_wait(const void* data, std::size_t size, u64 old_value)
+- {
+- auto& wmap = get_fallback_map(data);
+-
+- // Update node key
+- s_tls_waiter.key() = data;
+-
+- if (std::unique_lock lock(wmap.mutex); ptr_cmp(data, size, old_value))
+- {
+- // Add node to the waiter list
+- std::condition_variable& cond = wmap.list.insert(std::move(s_tls_waiter))->second.cond;
+-
+- // Wait until the node is returned to its TLS location
+- while (!s_tls_waiter)
+- {
+- cond.wait(lock);
+- }
+- }
+- }
+-
+- void fallback_notify(waiter_map& wmap, std::multimap<const void*, waiter>::iterator found)
+- {
+- // Return notified node to its TLS location
+- const auto ptls = static_cast<std::multimap<const void*, waiter>::node_type*>(found->second.tls_ptr);
+- *ptls = wmap.list.extract(found);
+- ptls->mapped().cond.notify_one();
+- }
+-
+- void fallback_notify_one(const void* data)
+- {
+- auto& wmap = get_fallback_map(data);
+-
+- std::lock_guard lock(wmap.mutex);
+-
+- if (auto found = wmap.list.find(data); found != wmap.list.end())
+- {
+- fallback_notify(wmap, found);
+- }
+- }
+-
+- void fallback_notify_all(const void* data)
+- {
+- auto& wmap = get_fallback_map(data);
+-
+- std::lock_guard lock(wmap.mutex);
+-
+- for (auto it = wmap.list.lower_bound(data); it != wmap.list.end() && it->first == data;)
+- {
+- fallback_notify(wmap, it++);
+- }
+- }
+-}
+-
+-#if !defined(_WIN32) && !defined(__linux__)
+-
+-void atomic_storage_futex::wait(const void* data, std::size_t size, u64 old_value)
+-{
+- fallback_wait(data, size, old_value);
+-}
+-
+-void atomic_storage_futex::notify_one(const void* data)
+-{
+- fallback_notify_one(data);
+-}
+-
+-void atomic_storage_futex::notify_all(const void* data)
+-{
+- fallback_notify_all(data);
+-}
+-
+-#else
+-
+ void atomic_storage_futex::wait(const void* data, std::size_t size, u64 old_value)
+ {
+ #ifdef _WIN32
+@@ -337,5 +226,3 @@ void atomic_storage_futex::notify_all(const void* data)
+ }
+ #endif
+ }
+-
+-#endif
More information about the svn-ports-all
mailing list