v8
13.6.233 (node 24.1.0)
V8 is Google's open source JavaScript engine
Loading...
Searching...
No Matches
v8-source-location.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_SOURCE_LOCATION_H_
6
#define INCLUDE_SOURCE_LOCATION_H_
7
8
#include <cstddef>
9
#include <string>
10
11
#include "
v8config.h
"
// NOLINT(build/include_directory)
12
13
#if defined(__has_builtin)
14
#define V8_SUPPORTS_SOURCE_LOCATION \
15
(__has_builtin(__builtin_FUNCTION) && __has_builtin(__builtin_FILE) && \
16
__has_builtin(__builtin_LINE))
// NOLINT
17
#elif defined(V8_CC_GNU) && __GNUC__ >= 7
18
#define V8_SUPPORTS_SOURCE_LOCATION 1
19
#elif defined(V8_CC_INTEL) && __ICC >= 1800
20
#define V8_SUPPORTS_SOURCE_LOCATION 1
21
#else
22
#define V8_SUPPORTS_SOURCE_LOCATION 0
23
#endif
24
25
namespace
v8
{
26
31
class
V8_EXPORT
SourceLocation
final {
32
public
:
37
#if V8_SUPPORTS_SOURCE_LOCATION
38
static
constexpr
SourceLocation
Current
(
39
const
char
* function = __builtin_FUNCTION(),
40
const
char
* file = __builtin_FILE(),
size_t
line = __builtin_LINE()) {
41
return
SourceLocation
(function, file, line);
42
}
43
#else
44
static
constexpr
SourceLocation
Current
() {
return
SourceLocation
(); }
45
#endif
// V8_SUPPORTS_SOURCE_LOCATION
46
50
constexpr
SourceLocation
() =
default
;
51
58
constexpr
const
char
*
Function
()
const
{
return
function_; }
59
65
constexpr
const
char
*
FileName
()
const
{
return
file_; }
66
72
constexpr
size_t
Line
()
const
{
return
line_; }
73
79
std::string
ToString
()
const
{
80
if
(!file_) {
81
return
{};
82
}
83
return
std::string(function_) +
"@"
+ file_ +
":"
+ std::to_string(line_);
84
}
85
86
private
:
87
constexpr
SourceLocation
(
const
char
* function,
const
char
* file,
size_t
line)
88
: function_(function), file_(file), line_(line) {}
89
90
const
char
* function_ =
nullptr
;
91
const
char
* file_ =
nullptr
;
92
size_t
line_ = 0u;
93
};
94
95
}
// namespace v8
96
97
#endif
// INCLUDE_SOURCE_LOCATION_H_
v8::SourceLocation
Definition
v8-source-location.h:31
v8::SourceLocation::Line
constexpr size_t Line() const
Definition
v8-source-location.h:72
v8::SourceLocation::ToString
std::string ToString() const
Definition
v8-source-location.h:79
v8::SourceLocation::SourceLocation
constexpr SourceLocation()=default
v8::SourceLocation::FileName
constexpr const char * FileName() const
Definition
v8-source-location.h:65
v8::SourceLocation::Function
constexpr const char * Function() const
Definition
v8-source-location.h:58
v8::SourceLocation::Current
static constexpr SourceLocation Current()
Definition
v8-source-location.h:44
v8
Definition
libplatform.h:15
v8config.h
V8_EXPORT
#define V8_EXPORT
Definition
v8config.h:800
include
v8-source-location.h
Generated on Fri May 30 2025 01:56:44 for v8 by
1.13.2