mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-04 15:19:47 +00:00
update
This commit is contained in:
parent
32d8dfc7fe
commit
673182f608
11 changed files with 33 additions and 24 deletions
|
@ -596,7 +596,7 @@ void fmt_class_string<std::source_location>::format(std::string& out, u64 arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func = func.substr(0, index);
|
func = func.substr(0, index) + "()";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -479,10 +479,6 @@ public:
|
||||||
gem_config_data(utils::serial& ar)
|
gem_config_data(utils::serial& ar)
|
||||||
{
|
{
|
||||||
save(ar);
|
save(ar);
|
||||||
|
|
||||||
if (ar.is_writing())
|
|
||||||
return;
|
|
||||||
|
|
||||||
load_configs();
|
load_configs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,10 @@ struct main_ppu_module : public ppu_module<T>
|
||||||
u32 elf_entry{};
|
u32 elf_entry{};
|
||||||
u32 seg0_code_end{};
|
u32 seg0_code_end{};
|
||||||
std::vector<u32> applied_patches;
|
std::vector<u32> applied_patches;
|
||||||
|
|
||||||
|
// Disable inherited savestate ordering
|
||||||
|
void save(utils::serial&) = delete;
|
||||||
|
static constexpr double savestate_init_pos = double{};
|
||||||
};
|
};
|
||||||
|
|
||||||
// Aux
|
// Aux
|
||||||
|
|
|
@ -186,3 +186,6 @@ lv2_socket& lv2_socket::operator=(thread_state s) noexcept
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lv2_socket::~lv2_socket() noexcept
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ public:
|
||||||
lv2_socket(utils::serial&, lv2_socket_type type);
|
lv2_socket(utils::serial&, lv2_socket_type type);
|
||||||
static std::function<void(void*)> load(utils::serial& ar);
|
static std::function<void(void*)> load(utils::serial& ar);
|
||||||
void save(utils::serial&, bool save_only_this_class = false);
|
void save(utils::serial&, bool save_only_this_class = false);
|
||||||
~lv2_socket() noexcept = default;
|
virtual ~lv2_socket() noexcept;
|
||||||
lv2_socket& operator=(thread_state s) noexcept;
|
lv2_socket& operator=(thread_state s) noexcept;
|
||||||
|
|
||||||
std::unique_lock<shared_mutex> lock();
|
std::unique_lock<shared_mutex> lock();
|
||||||
|
|
|
@ -57,6 +57,11 @@ void lv2_socket_native::save(utils::serial& ar)
|
||||||
ar(is_socket_connected());
|
ar(is_socket_connected());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lv2_socket_native::~lv2_socket_native() noexcept
|
||||||
|
{
|
||||||
|
lv2_socket_native::close();
|
||||||
|
}
|
||||||
|
|
||||||
s32 lv2_socket_native::create_socket()
|
s32 lv2_socket_native::create_socket()
|
||||||
{
|
{
|
||||||
ensure(family == SYS_NET_AF_INET);
|
ensure(family == SYS_NET_AF_INET);
|
||||||
|
|
|
@ -34,6 +34,7 @@ public:
|
||||||
|
|
||||||
lv2_socket_native(lv2_socket_family family, lv2_socket_type type, lv2_ip_protocol protocol);
|
lv2_socket_native(lv2_socket_family family, lv2_socket_type type, lv2_ip_protocol protocol);
|
||||||
lv2_socket_native(utils::serial& ar, lv2_socket_type type);
|
lv2_socket_native(utils::serial& ar, lv2_socket_type type);
|
||||||
|
~lv2_socket_native() noexcept override;
|
||||||
void save(utils::serial& ar);
|
void save(utils::serial& ar);
|
||||||
s32 create_socket();
|
s32 create_socket();
|
||||||
|
|
||||||
|
|
|
@ -1749,8 +1749,7 @@ namespace vm
|
||||||
if (is_memory_compatible_for_copy_from_executable_optimization(addr, shm.first))
|
if (is_memory_compatible_for_copy_from_executable_optimization(addr, shm.first))
|
||||||
{
|
{
|
||||||
// Revert changes
|
// Revert changes
|
||||||
ar.data.resize(ar.data.size() - (sizeof(u32) * 2 + sizeof(memory_page)));
|
ar.trunc(sizeof(u32) * 2 + sizeof(memory_page));
|
||||||
ar.seek_end();
|
|
||||||
vm_log.success("Removed memory block matching the memory of the executable from savestate. (addr=0x%x, size=0x%x)", addr, shm.first);
|
vm_log.success("Removed memory block matching the memory of the executable from savestate. (addr=0x%x, size=0x%x)", addr, shm.first);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@ static std::array<serial_ver_t, 27> s_serial_versions;
|
||||||
return ::s_serial_versions[identifier].current_version;\
|
return ::s_serial_versions[identifier].current_version;\
|
||||||
}
|
}
|
||||||
|
|
||||||
SERIALIZATION_VER(global_version, 0, 18) // For stuff not listed here
|
SERIALIZATION_VER(global_version, 0, 19) // For stuff not listed here
|
||||||
SERIALIZATION_VER(ppu, 1, 1, 2/*PPU sleep order*/, 3/*PPU FNID and module*/)
|
SERIALIZATION_VER(ppu, 1, 1, 2/*PPU sleep order*/, 3/*PPU FNID and module*/)
|
||||||
SERIALIZATION_VER(spu, 2, 1)
|
SERIALIZATION_VER(spu, 2, 1)
|
||||||
SERIALIZATION_VER(lv2_sync, 3, 1)
|
SERIALIZATION_VER(lv2_sync, 3, 1)
|
||||||
|
@ -393,7 +393,7 @@ namespace stx
|
||||||
if ((saved ^ tag) & data_mask)
|
if ((saved ^ tag) & data_mask)
|
||||||
{
|
{
|
||||||
ensure(!ar.is_writing());
|
ensure(!ar.is_writing());
|
||||||
fmt::throw_exception("serial_breathe_and_tag(%u): %s, object: '%s', next-object: '%s', expected/tag: 0x%x != 0x%x,", s_tls_call_count, ar, s_tls_object_name, name, tag, saved);
|
fmt::throw_exception("serial_breathe_and_tag(%u): %s\nobject: '%s', next-object: '%s', expected/tag: 0x%x != 0x%x,", s_tls_call_count, ar, s_tls_object_name, name, tag, saved);
|
||||||
}
|
}
|
||||||
|
|
||||||
s_tls_object_name = name;
|
s_tls_object_name = name;
|
||||||
|
|
|
@ -108,10 +108,10 @@ public:
|
||||||
{
|
{
|
||||||
if (m_is_writing) return;
|
if (m_is_writing) return;
|
||||||
|
|
||||||
const u32 offset1 = ::offset32(first) + sizeof(first);
|
const u32 offset1 = ::offset32(first) + sizeof(T);
|
||||||
const u32 offset2 = ::offset32(second);
|
const u32 offset2 = ::offset32(second);
|
||||||
|
|
||||||
AUDIT(offset2 >= offset1);
|
AUDIT(::offset32(first) <= ::offset32(second));
|
||||||
|
|
||||||
if (offset2 > offset1)
|
if (offset2 > offset1)
|
||||||
{
|
{
|
||||||
|
@ -459,10 +459,16 @@ public:
|
||||||
m_file_handler.reset();
|
m_file_handler.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
usz seek_end(usz backwards = 0)
|
usz seek_end()
|
||||||
{
|
{
|
||||||
ensure(data.size() + data_offset >= backwards);
|
pos = data.size() + data_offset;
|
||||||
pos = data.size() + data_offset - backwards;
|
return pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
usz trunc(usz count)
|
||||||
|
{
|
||||||
|
data.resize(data.size() - count);
|
||||||
|
seek_end();
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -451,23 +451,18 @@ namespace stx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Converts to unique (single) ptr if reference is 1, otherwise returns null. Nullifies self.
|
// Converts to unique (single) ptr if reference is 1. Nullifies self on success.
|
||||||
template <typename U> requires PtrSame<T, U>
|
template <typename U> requires PtrSame<T, U>
|
||||||
explicit operator single_ptr<U>() && noexcept
|
single_ptr<U> try_convert_to_single_ptr() noexcept
|
||||||
{
|
{
|
||||||
const auto o = d();
|
if (const auto o = m_ptr ? d() : nullptr; o && o->refs == 1u)
|
||||||
|
|
||||||
if (m_ptr && !--o->refs)
|
|
||||||
{
|
{
|
||||||
// Convert last reference to single_ptr instance.
|
// Convert last reference to single_ptr instance.
|
||||||
o->refs.release(1);
|
single_ptr<U> r;
|
||||||
single_ptr<T> r;
|
|
||||||
r.m_ptr = static_cast<decltype(r.m_ptr)>(std::exchange(m_ptr, nullptr));
|
r.m_ptr = static_cast<decltype(r.m_ptr)>(std::exchange(m_ptr, nullptr));
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, both pointers are gone. Didn't seem right to do it in the constructor.
|
|
||||||
m_ptr = nullptr;
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue