V8  latest master commit
V8 is Google's open source JavaScript engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
logging.h
Go to the documentation of this file.
1 // Copyright 2020 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef INCLUDE_CPPGC_INTERNAL_LOGGING_H_
6 #define INCLUDE_CPPGC_INTERNAL_LOGGING_H_
7 
9 #include "v8config.h" // NOLINT(build/include_directory)
10 
11 namespace cppgc {
12 namespace internal {
13 
14 void V8_EXPORT DCheckImpl(const char*,
15  const SourceLocation& = SourceLocation::Current());
16 [[noreturn]] void V8_EXPORT
17 FatalImpl(const char*, const SourceLocation& = SourceLocation::Current());
18 
19 // Used to ignore -Wunused-variable.
20 template <typename>
21 struct EatParams {};
22 
23 #if DEBUG
24 #define CPPGC_DCHECK_MSG(condition, message) \
25  do { \
26  if (V8_UNLIKELY(!(condition))) { \
27  ::cppgc::internal::DCheckImpl(message); \
28  } \
29  } while (false)
30 #else
31 #define CPPGC_DCHECK_MSG(condition, message) \
32  (static_cast<void>(::cppgc::internal::EatParams<decltype( \
33  static_cast<void>(condition), message)>{}))
34 #endif
35 
36 #define CPPGC_DCHECK(condition) CPPGC_DCHECK_MSG(condition, #condition)
37 
38 #define CPPGC_CHECK_MSG(condition, message) \
39  do { \
40  if (V8_UNLIKELY(!(condition))) { \
41  ::cppgc::internal::FatalImpl(message); \
42  } \
43  } while (false)
44 
45 #define CPPGC_CHECK(condition) CPPGC_CHECK_MSG(condition, #condition)
46 
47 } // namespace internal
48 } // namespace cppgc
49 
50 #endif // INCLUDE_CPPGC_INTERNAL_LOGGING_H_
cppgc::internal::FatalImpl
void V8_EXPORT FatalImpl(const char *, const SourceLocation &=SourceLocation::Current())
cppgc
Definition: allocation.h:18
v8config.h
V8_EXPORT
#define V8_EXPORT
Definition: v8config.h:467
cppgc::internal::EatParams
Definition: logging.h:21
cppgc::internal::DCheckImpl
void V8_EXPORT DCheckImpl(const char *, const SourceLocation &=SourceLocation::Current())
cppgc::SourceLocation::Current
static constexpr SourceLocation Current()
Definition: source-location.h:37
source-location.h