Compare commits

...

5 Commits

Author SHA1 Message Date
lizzie 7de5db10ad ok 2026-08-09 17:00:57 +02:00
lizzie 1fdc6c13ae fix excepts 2026-08-09 17:00:57 +02:00
lizzie f4755a2a42 Trigger Build 2026-08-09 17:00:57 +02:00
lizzie b96b9107f1 Trigger Build 2026-08-09 17:00:57 +02:00
lizzie 966c2bd383 fx 2026-08-09 17:00:57 +02:00
5 changed files with 19 additions and 33 deletions
+10 -16
View File
@@ -195,22 +195,16 @@ public:
this->SetValue(this->GetDefault()); this->SetValue(this->GetDefault());
return; return;
} }
try { if constexpr (std::is_same_v<Type, std::string>) {
if constexpr (std::is_same_v<Type, std::string>) { this->SetValue(input);
this->SetValue(input); } else if constexpr (std::is_same_v<Type, std::optional<u32>>) {
} else if constexpr (std::is_same_v<Type, std::optional<u32>>) { this->SetValue(u32(std::strtoul(input.c_str(), nullptr, 10)));
this->SetValue(u32(std::stoul(input))); } else if constexpr (std::is_same_v<Type, bool>) {
} else if constexpr (std::is_same_v<Type, bool>) { this->SetValue(input == "true");
this->SetValue(input == "true"); } else if constexpr (std::is_same_v<Type, float>) {
} else if constexpr (std::is_same_v<Type, float>) { this->SetValue(std::strtof(input.c_str(), nullptr));
this->SetValue(std::stof(input)); } else {
} else { this->SetValue(Type(std::strtoll(input.c_str(), nullptr, 10)));
this->SetValue(Type(std::stoll(input)));
}
} catch (std::invalid_argument&) {
this->SetValue(this->GetDefault());
} catch (std::out_of_range&) {
this->SetValue(this->GetDefault());
} }
} }
+1 -2
View File
@@ -24,14 +24,13 @@
// You must ensure this matches with src/common/x64/xbyak.h on root dir // You must ensure this matches with src/common/x64/xbyak.h on root dir
#include <ankerl/unordered_dense.h> #include <ankerl/unordered_dense.h>
#include <boost/unordered_map.hpp> #include <boost/unordered_map.hpp>
#define XBYAK_NO_EXCEPTION 1
#define XBYAK_STD_UNORDERED_SET ankerl::unordered_dense::set #define XBYAK_STD_UNORDERED_SET ankerl::unordered_dense::set
#define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map #define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map
#define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap #define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap
#include <xbyak/xbyak.h> #include <xbyak/xbyak.h>
#include <xbyak/xbyak_util.h> #include <xbyak/xbyak_util.h>
#include <xbyak/xbyak.h>
namespace Common::X64 { namespace Common::X64 {
constexpr size_t RegToIndex(const Xbyak::Reg& reg) { constexpr size_t RegToIndex(const Xbyak::Reg& reg) {
+4 -1
View File
@@ -95,7 +95,6 @@ else()
-pedantic -pedantic
-Wno-missing-braces -Wno-missing-braces
-fno-rtti -fno-rtti
#-fno-exceptions
) )
if (CXX_GCC) if (CXX_GCC)
# GCC produces bogus -Warray-bounds warnings from xbyak headers for code paths that are not # GCC produces bogus -Warray-bounds warnings from xbyak headers for code paths that are not
@@ -113,6 +112,10 @@ else()
# Clang mistakenly blames CMake for using unused arguments during compilation # Clang mistakenly blames CMake for using unused arguments during compilation
list(APPEND DYNARMIC_CXX_FLAGS -Wno-unused-command-line-argument) list(APPEND DYNARMIC_CXX_FLAGS -Wno-unused-command-line-argument)
endif() endif()
# TODO: oaknut exceptions
if ("x86_64" IN_LIST ARCHITECTURE)
list(APPEND DYNARMIC_CXX_FLAGS -fno-exceptions)
endif()
endif() endif()
if (NOT Boost_FOUND) if (NOT Boost_FOUND)
@@ -66,10 +66,7 @@ public:
#ifdef _WIN32 #ifdef _WIN32
uint8_t* alloc(size_t size) override { uint8_t* alloc(size_t size) override {
void* p = VirtualAlloc(nullptr, size, MEM_RESERVE, PAGE_READWRITE); void* p = VirtualAlloc(nullptr, size, MEM_RESERVE, PAGE_READWRITE);
if (p == nullptr) { ASSERT(p != nullptr);
using Xbyak::Error;
XBYAK_THROW(Xbyak::ERR_CANT_ALLOC);
}
return static_cast<uint8_t*>(p); return static_cast<uint8_t*>(p);
} }
@@ -105,10 +102,7 @@ public:
prot |= PROT_MPROTECT(PROT_READ) | PROT_MPROTECT(PROT_WRITE) | PROT_MPROTECT(PROT_EXEC); prot |= PROT_MPROTECT(PROT_READ) | PROT_MPROTECT(PROT_WRITE) | PROT_MPROTECT(PROT_EXEC);
#endif #endif
void* p = mmap(nullptr, size, prot, mode, -1, 0); void* p = mmap(nullptr, size, prot, mode, -1, 0);
if (p == MAP_FAILED) { ASSERT(p != MAP_FAILED);
using Xbyak::Error;
XBYAK_THROW(Xbyak::ERR_CANT_ALLOC);
}
std::memcpy(p, &size, sizeof(size_t)); std::memcpy(p, &size, sizeof(size_t));
return static_cast<uint8_t*>(p) + DYNARMIC_PAGE_SIZE; return static_cast<uint8_t*>(p) + DYNARMIC_PAGE_SIZE;
} }
@@ -532,13 +526,8 @@ size_t BlockOfCode::GetTotalCodeSize() const {
} }
void* BlockOfCode::AllocateFromCodeSpace(size_t alloc_size) { void* BlockOfCode::AllocateFromCodeSpace(size_t alloc_size) {
if (size_ + alloc_size >= maxSize_) { ASSERT(size_ + alloc_size < maxSize_);
using Xbyak::Error;
XBYAK_THROW(Xbyak::ERR_CODE_IS_TOO_BIG);
}
EnsureMemoryCommitted(alloc_size); EnsureMemoryCommitted(alloc_size);
void* ret = getCurr<void*>(); void* ret = getCurr<void*>();
size_ += alloc_size; size_ += alloc_size;
memset(ret, 0, alloc_size); memset(ret, 0, alloc_size);
@@ -6,6 +6,7 @@
// You must ensure this matches with src/common/x64/xbyak.h on root dir // You must ensure this matches with src/common/x64/xbyak.h on root dir
#include <ankerl/unordered_dense.h> #include <ankerl/unordered_dense.h>
#include <boost/unordered_map.hpp> #include <boost/unordered_map.hpp>
#define XBYAK_NO_EXCEPTION 1
#define XBYAK_STD_UNORDERED_SET ankerl::unordered_dense::set #define XBYAK_STD_UNORDERED_SET ankerl::unordered_dense::set
#define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map #define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map
#define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap #define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap