1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:17:44 +00:00

Kernel: Add [[unlikely]] attribute to VERIFY

This optimization has already been done in LibC's `assert.h`, which
Userland `VERIFY()` calls resolve to. We now use it in the kernel, but
with the nicer C++ *unlikely* attribute instead of `__builtin_expect`.

This tells the compiler to arrange the generated machine code so that
the error-free branches execute faster (e.g. fewer jumps, better cache
locality).
This commit is contained in:
Daniel Bertalan 2021-06-29 15:46:50 +02:00 committed by Ali Mohammad Pur
parent 23d66fe719
commit 9b1157924b

View file

@ -10,7 +10,12 @@
#define __STRINGIFY(x) __STRINGIFY_HELPER(x) #define __STRINGIFY(x) __STRINGIFY_HELPER(x)
[[noreturn]] void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func); [[noreturn]] void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func);
#define VERIFY(expr) (static_cast<bool>(expr) ? void(0) : __assertion_failed(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__)) #define VERIFY(expr) \
do { \
if (!static_cast<bool>(expr)) [[unlikely]] \
__assertion_failed(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); \
} while (0)
#define VERIFY_NOT_REACHED() VERIFY(false) #define VERIFY_NOT_REACHED() VERIFY(false)
extern "C" { extern "C" {