mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 06:27:45 +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:
parent
23d66fe719
commit
9b1157924b
1 changed files with 6 additions and 1 deletions
|
@ -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" {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue