v8  9.4.146 (node 16.13.0)
V8 is Google's open source JavaScript engine
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 
8 #include "cppgc/source-location.h"
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_