Loading...
Searching...
No Matches
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
11namespace cppgc {
12namespace internal {
13
14void V8_EXPORT DCheckImpl(const char*,
16[[noreturn]] void V8_EXPORT
18
19// Used to ignore -Wunused-variable.
20template <typename>
21struct EatParams {};
22
23#ifdef CPPGC_ENABLE_API_CHECKS
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 // !CPPGC_ENABLE_API_CHECKS
31#define CPPGC_DCHECK_MSG(condition, message) \
32 (static_cast<void>(::cppgc::internal::EatParams<decltype( \
33 static_cast<void>(condition), message)>{}))
34#endif // !CPPGC_ENABLE_API_CHECKS
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_
Definition: v8-source-location.h:31
static constexpr SourceLocation Current()
Definition: v8-source-location.h:44
void DCheckImpl(const char *, const SourceLocation &=SourceLocation::Current())
void FatalImpl(const char *, const SourceLocation &=SourceLocation::Current())
Definition: allocation.h:38
Definition: logging.h:21
#define V8_EXPORT
Definition: v8config.h:793