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:
Nitish Sakhawalkar 2019-03-08 12:13:20 -08:00 committed by Anna Henningsen
parent 0df581c307
commit 00ba75ed5e
No known key found for this signature in database
GPG Key ID: 9C63F3A6CD2AD8F9
3 changed files with 15 additions and 9 deletions

View File

@ -3456,7 +3456,7 @@ static ManagedEVPPKey GetPublicOrPrivateKeyFromJs(
is_public = false;
break;
default:
CHECK(!"Invalid key encoding type");
UNREACHABLE("Invalid key encoding type");
}
if (is_public) {

View File

@ -162,7 +162,7 @@ template <typename NativeT,
constexpr NativeT ToNative(uv_timespec_t ts) {
// This template has exactly two specializations below.
static_assert(std::is_arithmetic<NativeT>::value == false, "Not implemented");
UNREACHABLE();
return NativeT();
}
template <>

View File

@ -116,6 +116,16 @@ void DumpBacktrace(FILE* fp);
#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__
#define LIKELY(expr) __builtin_expect(!!(expr), 1)
#define UNLIKELY(expr) __builtin_expect(!!(expr), 0)
@ -132,12 +142,7 @@ void DumpBacktrace(FILE* fp);
#define CHECK(expr) \
do { \
if (UNLIKELY(!(expr))) { \
/* 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); \
ERROR_AND_ABORT(expr); \
} \
} while (0)
@ -176,7 +181,8 @@ void DumpBacktrace(FILE* fp);
#endif
#define UNREACHABLE() ABORT()
#define UNREACHABLE(expr) \
ERROR_AND_ABORT("Unreachable code reached: " expr)
// TAILQ-style intrusive list node.
template <typename T>