diff --git a/src/common/x64/xbyak_abi.h b/src/common/x64/xbyak_abi.h index 8aea5db583..24ffe09eb8 100644 --- a/src/common/x64/xbyak_abi.h +++ b/src/common/x64/xbyak_abi.h @@ -5,6 +5,7 @@ #include #include +#define XBYAK_NO_EXCEPTION 1 #include #include "common/assert.h" diff --git a/src/common/x64/xbyak_util.h b/src/common/x64/xbyak_util.h index 250e5cddb9..800b25d6f4 100644 --- a/src/common/x64/xbyak_util.h +++ b/src/common/x64/xbyak_util.h @@ -4,6 +4,7 @@ #pragma once #include +#define XBYAK_NO_EXCEPTION 1 #include #include "common/x64/xbyak_abi.h" diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt index dd1def5273..bebebc71e4 100644 --- a/src/dynarmic/CMakeLists.txt +++ b/src/dynarmic/CMakeLists.txt @@ -95,7 +95,7 @@ else() -pedantic -Wno-missing-braces -fno-rtti - #-fno-exceptions + -fno-exceptions ) if (CXX_GCC) # GCC produces bogus -Warray-bounds warnings from xbyak headers for code paths that are not diff --git a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp index 3a161fca6b..3f8f8ae732 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp +++ b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp @@ -66,10 +66,7 @@ public: #ifdef _WIN32 uint8_t* alloc(size_t size) override { void* p = VirtualAlloc(nullptr, size, MEM_RESERVE, PAGE_READWRITE); - if (p == nullptr) { - using Xbyak::Error; - XBYAK_THROW(Xbyak::ERR_CANT_ALLOC); - } + ASSERT(p != nullptr); return static_cast(p); } @@ -105,10 +102,7 @@ public: prot |= PROT_MPROTECT(PROT_READ) | PROT_MPROTECT(PROT_WRITE) | PROT_MPROTECT(PROT_EXEC); #endif void* p = mmap(nullptr, size, prot, mode, -1, 0); - if (p == MAP_FAILED) { - using Xbyak::Error; - XBYAK_THROW(Xbyak::ERR_CANT_ALLOC); - } + ASSERT(p != MAP_FAILED); std::memcpy(p, &size, sizeof(size_t)); return static_cast(p) + DYNARMIC_PAGE_SIZE; } @@ -532,13 +526,8 @@ size_t BlockOfCode::GetTotalCodeSize() const { } void* BlockOfCode::AllocateFromCodeSpace(size_t alloc_size) { - if (size_ + alloc_size >= maxSize_) { - using Xbyak::Error; - XBYAK_THROW(Xbyak::ERR_CODE_IS_TOO_BIG); - } - + ASSERT(!(size_ + alloc_size >= maxSize_)); EnsureMemoryCommitted(alloc_size); - void* ret = getCurr(); size_ += alloc_size; memset(ret, 0, alloc_size); diff --git a/src/dynarmic/src/dynarmic/backend/x64/hostloc.h b/src/dynarmic/src/dynarmic/backend/x64/hostloc.h index 2feecf5d5e..a69da69250 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/hostloc.h +++ b/src/dynarmic/src/dynarmic/backend/x64/hostloc.h @@ -8,6 +8,7 @@ #pragma once #include +#define XBYAK_NO_EXCEPTION 1 #include #include "dynarmic/common/assert.h" diff --git a/src/dynarmic/src/dynarmic/backend/x64/xbyak.h b/src/dynarmic/src/dynarmic/backend/x64/xbyak.h index ee74794fb4..4c96584b42 100644 --- a/src/dynarmic/src/dynarmic/backend/x64/xbyak.h +++ b/src/dynarmic/src/dynarmic/backend/x64/xbyak.h @@ -11,5 +11,6 @@ // #define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map // #define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap +#define XBYAK_NO_EXCEPTION 1 #include #include diff --git a/src/video_core/macro.cpp b/src/video_core/macro.cpp index 66cea5afbd..2fd1ec7076 100644 --- a/src/video_core/macro.cpp +++ b/src/video_core/macro.cpp @@ -21,6 +21,7 @@ #pragma clang diagnostic ignored "-Wconversion" #pragma clang diagnostic ignored "-Wshadow" #endif +#define XBYAK_NO_EXCEPTION 1 #include #endif