mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-14 01:27:00 +00:00
Savestates/vm: Improve saving performance
This commit is contained in:
parent
f0c93ae9dc
commit
858e493b52
@ -1665,13 +1665,13 @@ namespace vm
|
||||
|
||||
ar.breathe();
|
||||
|
||||
for (usz iter_count = 0; size; iter_count++, ptr += byte_of_pages)
|
||||
for (usz iter_count = 0; size; iter_count += sizeof(u32), ptr += byte_of_pages * sizeof(u32))
|
||||
{
|
||||
size -= byte_of_pages;
|
||||
const u32 bitmap = read_from_ptr<le_t<u32>>(bit_array, iter_count);
|
||||
|
||||
const u8 bitmap = bit_array[iter_count];
|
||||
size -= byte_of_pages * sizeof(bitmap);
|
||||
|
||||
for (usz i = 0; i < byte_of_pages;)
|
||||
for (usz i = 0; i < byte_of_pages * sizeof(bitmap);)
|
||||
{
|
||||
usz block_count = 0;
|
||||
|
||||
|
@ -109,11 +109,7 @@ public:
|
||||
// Reserve memory for serialization
|
||||
void reserve(usz size)
|
||||
{
|
||||
// Is a NO-OP for deserialization in order to allow usage from serialization specializations regardless
|
||||
if (is_writing())
|
||||
{
|
||||
data.reserve(data.size() + size);
|
||||
}
|
||||
data.reserve(data.size() + size);
|
||||
}
|
||||
|
||||
template <typename Func> requires (std::is_convertible_v<std::invoke_result_t<Func>, const void*>)
|
||||
@ -136,9 +132,9 @@ public:
|
||||
|
||||
if (is_writing())
|
||||
{
|
||||
ensure(pos >= data_offset);
|
||||
ensure(pos == data_offset + data.size());
|
||||
const auto ptr = reinterpret_cast<const u8*>(memory_provider());
|
||||
data.insert(data.begin() + (pos - data_offset), ptr, ptr + size);
|
||||
data.insert(data.end(), ptr, ptr + size);
|
||||
pos += size;
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user