Util: Fix asserts in release mode

This commit is contained in:
Riyyi
2022-08-18 23:29:25 +02:00
parent d39fd8d8e7
commit 0eadcc555a
+10 -5
View File
@@ -16,19 +16,24 @@
#include "ruc/format/format.h" #include "ruc/format/format.h"
#include "ruc/meta/compiler.h" #include "ruc/meta/compiler.h"
#define CRASH() asm volatile("int $0x03"); #define CRASH() ruc::__crash()
#ifndef NDEBUG #ifndef NDEBUG
#define VERIFY(expr, ...) (static_cast<bool>(expr) ? (void)0 : ruc::__assertion_failed(#expr, __FILE__, __LINE__, FUNCTION_MACRO __VA_OPT__(, ) __VA_ARGS__)) #define VERIFY(expr, ...) (static_cast<bool>(expr) ? (void)0 : ruc::__assertion_failed(#expr, __FILE__, __LINE__, FUNCTION_MACRO __VA_OPT__(, ) __VA_ARGS__))
#define VERIFY_NOT_REACHED() VERIFY(false) #define VERIFY_NOT_REACHED() VERIFY(false)
#else #else
#define VERIFY(expr, ...) (static_cast<bool>(expr) ? (void)0 : CRASH() #define VERIFY(expr, ...) (static_cast<bool>(expr) ? (void)0 : CRASH())
#define VERIFY_NOT_REACHED() CRASH() #define VERIFY_NOT_REACHED() VERIFY(false)
#endif #endif
#ifndef NDEBUG
namespace ruc { namespace ruc {
inline void __crash()
{
asm volatile("int $0x03");
}
#ifndef NDEBUG
template<typename... Parameters> template<typename... Parameters>
inline void __assertion_failed(const char* assertion, const char* file, uint32_t line, const char* function, const Parameters&... parameters) inline void __assertion_failed(const char* assertion, const char* file, uint32_t line, const char* function, const Parameters&... parameters)
{ {
@@ -91,6 +96,6 @@ inline void __assertion_failed(const char* assertion, const char* file, uint32_t
CRASH(); CRASH();
} }
#endif
} // namespace ruc } // namespace ruc
#endif