aboutsummaryrefslogtreecommitdiff
path: root/src/common/host_memory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/host_memory.cpp')
-rw-r--r--src/common/host_memory.cpp38
1 files changed, 12 insertions, 26 deletions
diff --git a/src/common/host_memory.cpp b/src/common/host_memory.cpp
index 5400b97018..51ee0d333b 100644
--- a/src/common/host_memory.cpp
+++ b/src/common/host_memory.cpp
@@ -68,8 +68,8 @@ static int memfd_create(const char* name, unsigned int flags) {
namespace Common {
-constexpr size_t PageAlignment = 0x1000;
-constexpr size_t HugePageSize = 0x200000;
+[[maybe_unused]] constexpr size_t PageAlignment = 0x1000;
+[[maybe_unused]] constexpr size_t HugePageSize = 0x200000;
#ifdef _WIN32
@@ -692,30 +692,16 @@ private:
#endif // ^^^ POSIX ^^^
-HostMemory::HostMemory(size_t backing_size_, size_t virtual_size_)
- : backing_size(backing_size_), virtual_size(virtual_size_) {
- try {
- // Try to allocate a fastmem arena.
- // The implementation will fail with std::bad_alloc on errors.
- impl =
- std::make_unique<HostMemory::Impl>(AlignUp(backing_size, PageAlignment),
- AlignUp(virtual_size, PageAlignment) + HugePageSize);
- backing_base = impl->backing_base;
- virtual_base = impl->virtual_base;
-
- if (virtual_base) {
- // Ensure the virtual base is aligned to the L2 block size.
- virtual_base = reinterpret_cast<u8*>(
- Common::AlignUp(reinterpret_cast<uintptr_t>(virtual_base), HugePageSize));
- virtual_base_offset = virtual_base - impl->virtual_base;
- }
-
- } catch (const std::bad_alloc&) {
- LOG_CRITICAL(HW_Memory,
- "Fastmem unavailable, falling back to VirtualBuffer for memory allocation");
- fallback_buffer = std::make_unique<Common::VirtualBuffer<u8>>(backing_size);
- backing_base = fallback_buffer->data();
- virtual_base = nullptr;
+HostMemory::HostMemory(size_t backing_size_, size_t virtual_size_) : backing_size(backing_size_), virtual_size(virtual_size_) {
+ // Try to allocate a fastmem arena.
+ // The implementation will fail with std::bad_alloc on errors.
+ impl = std::make_unique<HostMemory::Impl>(AlignUp(backing_size, PageAlignment), AlignUp(virtual_size, PageAlignment) + HugePageSize);
+ backing_base = impl->backing_base;
+ virtual_base = impl->virtual_base;
+ if (virtual_base) {
+ // Ensure the virtual base is aligned to the L2 block size.
+ virtual_base = reinterpret_cast<u8*>(Common::AlignUp(uintptr_t(virtual_base), HugePageSize));
+ virtual_base_offset = virtual_base - impl->virtual_base;
}
}