src: update UNREACHABLE macro to take a string
PR-URL: https://github.com/nodejs/node/pull/26502 Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
parent
0df581c307
commit
00ba75ed5e
@ -3456,7 +3456,7 @@ static ManagedEVPPKey GetPublicOrPrivateKeyFromJs(
|
|||||||
is_public = false;
|
is_public = false;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
CHECK(!"Invalid key encoding type");
|
UNREACHABLE("Invalid key encoding type");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_public) {
|
if (is_public) {
|
||||||
|
@ -162,7 +162,7 @@ template <typename NativeT,
|
|||||||
constexpr NativeT ToNative(uv_timespec_t ts) {
|
constexpr NativeT ToNative(uv_timespec_t ts) {
|
||||||
// This template has exactly two specializations below.
|
// This template has exactly two specializations below.
|
||||||
static_assert(std::is_arithmetic<NativeT>::value == false, "Not implemented");
|
static_assert(std::is_arithmetic<NativeT>::value == false, "Not implemented");
|
||||||
UNREACHABLE();
|
return NativeT();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
|
20
src/util.h
20
src/util.h
@ -116,6 +116,16 @@ void DumpBacktrace(FILE* fp);
|
|||||||
|
|
||||||
#define ABORT() node::Abort()
|
#define ABORT() node::Abort()
|
||||||
|
|
||||||
|
#define ERROR_AND_ABORT(expr) \
|
||||||
|
do { \
|
||||||
|
/* Make sure that this struct does not end up in inline code, but */ \
|
||||||
|
/* rather in a read-only data section when modifying this code. */ \
|
||||||
|
static const node::AssertionInfo args = { \
|
||||||
|
__FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME \
|
||||||
|
}; \
|
||||||
|
node::Assert(args); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define LIKELY(expr) __builtin_expect(!!(expr), 1)
|
#define LIKELY(expr) __builtin_expect(!!(expr), 1)
|
||||||
#define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
|
#define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
|
||||||
@ -132,12 +142,7 @@ void DumpBacktrace(FILE* fp);
|
|||||||
#define CHECK(expr) \
|
#define CHECK(expr) \
|
||||||
do { \
|
do { \
|
||||||
if (UNLIKELY(!(expr))) { \
|
if (UNLIKELY(!(expr))) { \
|
||||||
/* Make sure that this struct does not end up in inline code, but */ \
|
ERROR_AND_ABORT(expr); \
|
||||||
/* rather in a read-only data section when modifying this code. */ \
|
|
||||||
static const node::AssertionInfo args = { \
|
|
||||||
__FILE__ ":" STRINGIFY(__LINE__), #expr, PRETTY_FUNCTION_NAME \
|
|
||||||
}; \
|
|
||||||
node::Assert(args); \
|
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@ -176,7 +181,8 @@ void DumpBacktrace(FILE* fp);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define UNREACHABLE() ABORT()
|
#define UNREACHABLE(expr) \
|
||||||
|
ERROR_AND_ABORT("Unreachable code reached: " expr)
|
||||||
|
|
||||||
// TAILQ-style intrusive list node.
|
// TAILQ-style intrusive list node.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user