Coverage Report

Created: 2025-10-31 09:06

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/node/deps/v8/include/v8-internal.h
Line
Count
Source
1
// Copyright 2018 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_V8_INTERNAL_H_
6
#define INCLUDE_V8_INTERNAL_H_
7
8
#include <stddef.h>
9
#include <stdint.h>
10
#include <string.h>
11
12
#include <atomic>
13
#include <iterator>
14
#include <limits>
15
#include <memory>
16
#include <optional>
17
#include <type_traits>
18
19
#include "v8config.h"  // NOLINT(build/include_directory)
20
21
// TODO(pkasting): Use <compare>/spaceship unconditionally after dropping
22
// support for old libstdc++ versions.
23
#if __has_include(<version>)
24
#include <version>
25
#endif
26
#if defined(__cpp_lib_three_way_comparison) &&   \
27
    __cpp_lib_three_way_comparison >= 201711L && \
28
    defined(__cpp_lib_concepts) && __cpp_lib_concepts >= 202002L
29
#include <compare>
30
#include <concepts>
31
32
#define V8_HAVE_SPACESHIP_OPERATOR 1
33
#else
34
#define V8_HAVE_SPACESHIP_OPERATOR 0
35
#endif
36
37
namespace v8 {
38
39
class Array;
40
class Context;
41
class Data;
42
class Isolate;
43
44
namespace internal {
45
46
class Heap;
47
class LocalHeap;
48
class Isolate;
49
class IsolateGroup;
50
class LocalIsolate;
51
52
typedef uintptr_t Address;
53
static constexpr Address kNullAddress = 0;
54
55
constexpr int KB = 1024;
56
constexpr int MB = KB * 1024;
57
constexpr int GB = MB * 1024;
58
#ifdef V8_TARGET_ARCH_X64
59
constexpr size_t TB = size_t{GB} * 1024;
60
#endif
61
62
/**
63
 * Configuration of tagging scheme.
64
 */
65
const int kApiSystemPointerSize = sizeof(void*);
66
const int kApiDoubleSize = sizeof(double);
67
const int kApiInt32Size = sizeof(int32_t);
68
const int kApiInt64Size = sizeof(int64_t);
69
const int kApiSizetSize = sizeof(size_t);
70
71
// Tag information for HeapObject.
72
const int kHeapObjectTag = 1;
73
const int kWeakHeapObjectTag = 3;
74
const int kHeapObjectTagSize = 2;
75
const intptr_t kHeapObjectTagMask = (1 << kHeapObjectTagSize) - 1;
76
const intptr_t kHeapObjectReferenceTagMask = 1 << (kHeapObjectTagSize - 1);
77
78
// Tag information for fowarding pointers stored in object headers.
79
// 0b00 at the lowest 2 bits in the header indicates that the map word is a
80
// forwarding pointer.
81
const int kForwardingTag = 0;
82
const int kForwardingTagSize = 2;
83
const intptr_t kForwardingTagMask = (1 << kForwardingTagSize) - 1;
84
85
// Tag information for Smi.
86
const int kSmiTag = 0;
87
const int kSmiTagSize = 1;
88
const intptr_t kSmiTagMask = (1 << kSmiTagSize) - 1;
89
90
template <size_t tagged_ptr_size>
91
struct SmiTagging;
92
93
constexpr intptr_t kIntptrAllBitsSet = intptr_t{-1};
94
constexpr uintptr_t kUintptrAllBitsSet =
95
    static_cast<uintptr_t>(kIntptrAllBitsSet);
96
97
// Smi constants for systems where tagged pointer is a 32-bit value.
98
template <>
99
struct SmiTagging<4> {
100
  enum { kSmiShiftSize = 0, kSmiValueSize = 31 };
101
102
  static constexpr intptr_t kSmiMinValue =
103
      static_cast<intptr_t>(kUintptrAllBitsSet << (kSmiValueSize - 1));
104
  static constexpr intptr_t kSmiMaxValue = -(kSmiMinValue + 1);
105
106
0
  V8_INLINE static constexpr int SmiToInt(Address value) {
107
0
    int shift_bits = kSmiTagSize + kSmiShiftSize;
108
0
    // Truncate and shift down (requires >> to be sign extending).
109
0
    return static_cast<int32_t>(static_cast<uint32_t>(value)) >> shift_bits;
110
0
  }
111
112
  template <class T, typename std::enable_if_t<std::is_integral_v<T> &&
113
                                               std::is_signed_v<T>>* = nullptr>
114
  V8_INLINE static constexpr bool IsValidSmi(T value) {
115
    // Is value in range [kSmiMinValue, kSmiMaxValue].
116
    // Use unsigned operations in order to avoid undefined behaviour in case of
117
    // signed integer overflow.
118
    return (static_cast<uintptr_t>(value) -
119
            static_cast<uintptr_t>(kSmiMinValue)) <=
120
           (static_cast<uintptr_t>(kSmiMaxValue) -
121
            static_cast<uintptr_t>(kSmiMinValue));
122
  }
123
124
  template <class T,
125
            typename std::enable_if_t<std::is_integral_v<T> &&
126
                                      std::is_unsigned_v<T>>* = nullptr>
127
  V8_INLINE static constexpr bool IsValidSmi(T value) {
128
    static_assert(kSmiMaxValue <= std::numeric_limits<uintptr_t>::max());
129
    return value <= static_cast<uintptr_t>(kSmiMaxValue);
130
  }
131
132
  // Same as the `intptr_t` version but works with int64_t on 32-bit builds
133
  // without slowing down anything else.
134
0
  V8_INLINE static constexpr bool IsValidSmi(int64_t value) {
135
0
    return (static_cast<uint64_t>(value) -
136
0
            static_cast<uint64_t>(kSmiMinValue)) <=
137
0
           (static_cast<uint64_t>(kSmiMaxValue) -
138
0
            static_cast<uint64_t>(kSmiMinValue));
139
0
  }
140
141
0
  V8_INLINE static constexpr bool IsValidSmi(uint64_t value) {
142
0
    static_assert(kSmiMaxValue <= std::numeric_limits<uint64_t>::max());
143
0
    return value <= static_cast<uint64_t>(kSmiMaxValue);
144
0
  }
145
};
146
147
// Smi constants for systems where tagged pointer is a 64-bit value.
148
template <>
149
struct SmiTagging<8> {
150
  enum { kSmiShiftSize = 31, kSmiValueSize = 32 };
151
152
  static constexpr intptr_t kSmiMinValue =
153
      static_cast<intptr_t>(kUintptrAllBitsSet << (kSmiValueSize - 1));
154
  static constexpr intptr_t kSmiMaxValue = -(kSmiMinValue + 1);
155
156
4
  V8_INLINE static constexpr int SmiToInt(Address value) {
157
4
    int shift_bits = kSmiTagSize + kSmiShiftSize;
158
    // Shift down and throw away top 32 bits.
159
4
    return static_cast<int>(static_cast<intptr_t>(value) >> shift_bits);
160
4
  }
161
162
  template <class T, typename std::enable_if_t<std::is_integral_v<T> &&
163
                                               std::is_signed_v<T>>* = nullptr>
164
0
  V8_INLINE static constexpr bool IsValidSmi(T value) {
165
    // To be representable as a long smi, the value must be a 32-bit integer.
166
0
    return std::numeric_limits<int32_t>::min() <= value &&
167
0
           value <= std::numeric_limits<int32_t>::max();
168
0
  }
Unexecuted instantiation: _ZN2v88internal10SmiTaggingILm8EE10IsValidSmiIsTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE11is_signed_vIS6_EEvE4typeELPv0EEEbS6_
Unexecuted instantiation: _ZN2v88internal10SmiTaggingILm8EE10IsValidSmiIiTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE11is_signed_vIS6_EEvE4typeELPv0EEEbS6_
Unexecuted instantiation: _ZN2v88internal10SmiTaggingILm8EE10IsValidSmiIlTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE11is_signed_vIS6_EEvE4typeELPv0EEEbS6_
169
170
  template <class T,
171
            typename std::enable_if_t<std::is_integral_v<T> &&
172
                                      std::is_unsigned_v<T>>* = nullptr>
173
35
  V8_INLINE static constexpr bool IsValidSmi(T value) {
174
35
    return value <= std::numeric_limits<int32_t>::max();
175
35
  }
Unexecuted instantiation: _ZN2v88internal10SmiTaggingILm8EE10IsValidSmiItTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE13is_unsigned_vIS6_EEvE4typeELPv0EEEbS6_
_ZN2v88internal10SmiTaggingILm8EE10IsValidSmiIjTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE13is_unsigned_vIS6_EEvE4typeELPv0EEEbS6_
Line
Count
Source
173
35
  V8_INLINE static constexpr bool IsValidSmi(T value) {
174
35
    return value <= std::numeric_limits<int32_t>::max();
175
35
  }
Unexecuted instantiation: _ZN2v88internal10SmiTaggingILm8EE10IsValidSmiImTnPNSt3__19enable_ifIXaasr3stdE13is_integral_vIT_Esr3stdE13is_unsigned_vIS6_EEvE4typeELPv0EEEbS6_
176
};
177
178
#ifdef V8_COMPRESS_POINTERS
179
// See v8:7703 or src/common/ptr-compr-inl.h for details about pointer
180
// compression.
181
constexpr size_t kPtrComprCageReservationSize = size_t{1} << 32;
182
constexpr size_t kPtrComprCageBaseAlignment = size_t{1} << 32;
183
184
static_assert(
185
    kApiSystemPointerSize == kApiInt64Size,
186
    "Pointer compression can be enabled only for 64-bit architectures");
187
const int kApiTaggedSize = kApiInt32Size;
188
#else
189
const int kApiTaggedSize = kApiSystemPointerSize;
190
#endif
191
192
0
constexpr bool PointerCompressionIsEnabled() {
193
0
  return kApiTaggedSize != kApiSystemPointerSize;
194
0
}
195
196
#ifdef V8_31BIT_SMIS_ON_64BIT_ARCH
197
using PlatformSmiTagging = SmiTagging<kApiInt32Size>;
198
#else
199
using PlatformSmiTagging = SmiTagging<kApiTaggedSize>;
200
#endif
201
202
// TODO(ishell): Consinder adding kSmiShiftBits = kSmiShiftSize + kSmiTagSize
203
// since it's used much more often than the inividual constants.
204
const int kSmiShiftSize = PlatformSmiTagging::kSmiShiftSize;
205
const int kSmiValueSize = PlatformSmiTagging::kSmiValueSize;
206
const int kSmiMinValue = static_cast<int>(PlatformSmiTagging::kSmiMinValue);
207
const int kSmiMaxValue = static_cast<int>(PlatformSmiTagging::kSmiMaxValue);
208
0
constexpr bool SmiValuesAre31Bits() { return kSmiValueSize == 31; }
209
0
constexpr bool SmiValuesAre32Bits() { return kSmiValueSize == 32; }
210
0
constexpr bool Is64() { return kApiSystemPointerSize == sizeof(int64_t); }
211
212
0
V8_INLINE static constexpr Address IntToSmi(int value) {
213
0
  return (static_cast<Address>(value) << (kSmiTagSize + kSmiShiftSize)) |
214
0
         kSmiTag;
215
0
}
Unexecuted instantiation: node_snapshot_stub.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_common.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_sign_verify.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: environment.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: hooks.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: async_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: base_object.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: cleanup_queue.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: env.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: heap_utils.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: module_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_api.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_binding.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_blob.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_buffer.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_builtins.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_config.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_config_file.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_constants.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_contextify.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_credentials.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_dir.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_dotenv.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_env_var.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_errors.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_file.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_http_parser.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_http2.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_i18n.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_locks.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_main_instance.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_messaging.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_metadata.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_modules.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_options.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_os.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_perf.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_platform.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_process_events.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_process_methods.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_process_object.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_realm.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_report.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_report_module.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_report_utils.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_sea.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_serdes.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_shadow_realm.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_snapshotable.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_sockaddr.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_stat_watcher.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_symbols.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_task_queue.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_task_runner.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_trace_events.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_types.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_url.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_url_pattern.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_util.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_v8.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_wasi.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_wasm_web_api.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_watchdog.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_worker.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_zlib.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: path.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: wasi_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: worker_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: net_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: addon_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: pipe_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: process_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: signal_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: spawn_sync.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: stream_base.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: stream_pipe.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: stream_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: string_bytes.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: string_decoder.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: tcp_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: timers.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_trace_buffer.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_trace_writer.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: trace_event.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: traced_value.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: tty_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: udp_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: util.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: uv.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: quic.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: cppgc_helpers.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_large_page.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_sqlite.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_webstorage.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_io.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_profiler.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_js_api.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_socket_server.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: main_thread_interface.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_json.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_string.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: runtime_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: tracing_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: worker_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: network_inspector.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: network_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: target_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: worker_inspector.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: io_agent.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: network_resource_manager.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_context.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_util.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_keys.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_tls.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_x509.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_crypto.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_javascript.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: Protocol.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: NodeWorker.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: NodeTracing.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: NodeRuntime.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: Network.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: Target.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: IO.cpp:v8::internal::IntToSmi(int)
Unexecuted instantiation: async_resource.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: callback.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: embed_helpers.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: encoding.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: exceptions.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: utils.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: async_context_frame.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: cares_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: compile_cache.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: connect_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: connection_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: queue.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: debug_utils.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: encoding_binding.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fs_event_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: handle_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: histogram.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: internal_only_v8.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: js_native_api_v8.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: js_stream.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: js_udp_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: node_external_reference.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: child_process_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fs_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_permission.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: timer_wrap.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: bindingdata.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: endpoint.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: http3.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: session.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: streams.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: tlscontext.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: transportparams.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: inspector_socket.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_aes.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_argon2.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_bio.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_chacha20_poly1305.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_common.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_dsa.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_hkdf.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_pbkdf2.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_sig.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_timing.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_cipher.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_ec.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_ml_dsa.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_kem.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_hmac.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_kmac.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_random.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_rsa.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_spkac.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_clienthello.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_dh.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_hash.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_keygen.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: crypto_scrypt.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: cid.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: data.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: logstream.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: packet.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: preferredaddress.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: sessionticket.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: tokens.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: application.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_resolve.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_createPrivateKeyDER.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_querystring_parse.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_relative.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_tls_socket_request.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_createPrivateKeyJWK.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_buffer_equals.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_toNamespacedPath.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_fs_write_open_read.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_isAbsolute.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_zlib_brotliDecompress.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_diffieHellmanJWK.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_zlib_createBrotliDecompress.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_ClientHelloParser.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_basename.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_strings.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_string_decoder.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_parse.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_blob.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_diffieHellmanPEM.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_join.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_extname.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_format.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_dirname.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_buffer_compare.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_stream1.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_zlib_gzip_createUnzip.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_createPrivateKeyPEM.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_fs_write_read_append.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_path_normalize.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_zlib_brotliCompress.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_httpparser1.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_x509.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_diffieHellmanDER.cc:v8::internal::IntToSmi(int)
Unexecuted instantiation: fuzz_buffer_includes.cc:v8::internal::IntToSmi(int)
216
217
/*
218
 * Sandbox related types, constants, and functions.
219
 */
220
0
constexpr bool SandboxIsEnabled() {
221
0
#ifdef V8_ENABLE_SANDBOX
222
0
  return true;
223
0
#else
224
0
  return false;
225
0
#endif
226
0
}
227
228
// SandboxedPointers are guaranteed to point into the sandbox. This is achieved
229
// for example by storing them as offset rather than as raw pointers.
230
using SandboxedPointer_t = Address;
231
232
#ifdef V8_ENABLE_SANDBOX
233
234
// Size of the sandbox, excluding the guard regions surrounding it.
235
#if defined(V8_TARGET_OS_ANDROID)
236
// On Android, most 64-bit devices seem to be configured with only 39 bits of
237
// virtual address space for userspace. As such, limit the sandbox to 128GB (a
238
// quarter of the total available address space).
239
constexpr size_t kSandboxSizeLog2 = 37;  // 128 GB
240
#elif defined(V8_TARGET_OS_IOS)
241
// On iOS, we only get 64 GB of usable virtual address space even with the
242
// "jumbo" extended virtual addressing entitlement. Limit the sandbox size to
243
// 16 GB so that the base address + size for the emulated virtual address space
244
// lies within the 64 GB total virtual address space.
245
constexpr size_t kSandboxSizeLog2 = 34;  // 16 GB
246
#else
247
// Everywhere else use a 1TB sandbox.
248
constexpr size_t kSandboxSizeLog2 = 40;  // 1 TB
249
#endif  // V8_TARGET_OS_ANDROID
250
constexpr size_t kSandboxSize = 1ULL << kSandboxSizeLog2;
251
252
// Required alignment of the sandbox. For simplicity, we require the
253
// size of the guard regions to be a multiple of this, so that this specifies
254
// the alignment of the sandbox including and excluding surrounding guard
255
// regions. The alignment requirement is due to the pointer compression cage
256
// being located at the start of the sandbox.
257
constexpr size_t kSandboxAlignment = kPtrComprCageBaseAlignment;
258
259
// Sandboxed pointers are stored inside the heap as offset from the sandbox
260
// base shifted to the left. This way, it is guaranteed that the offset is
261
// smaller than the sandbox size after shifting it to the right again. This
262
// constant specifies the shift amount.
263
constexpr uint64_t kSandboxedPointerShift = 64 - kSandboxSizeLog2;
264
265
// Size of the guard regions surrounding the sandbox. This assumes a worst-case
266
// scenario of a 32-bit unsigned index used to access an array of 64-bit values
267
// with an additional 4GB (compressed pointer) offset. In particular, accesses
268
// to TypedArrays are effectively computed as
269
// `entry_pointer = array->base + array->offset + index * array->element_size`.
270
// See also https://crbug.com/40070746 for more details.
271
constexpr size_t kSandboxGuardRegionSize = 32ULL * GB + 4ULL * GB;
272
273
static_assert((kSandboxGuardRegionSize % kSandboxAlignment) == 0,
274
              "The size of the guard regions around the sandbox must be a "
275
              "multiple of its required alignment.");
276
277
// On OSes where reserving virtual memory is too expensive to reserve the
278
// entire address space backing the sandbox, notably Windows pre 8.1, we create
279
// a partially reserved sandbox that doesn't actually reserve most of the
280
// memory, and so doesn't have the desired security properties as unrelated
281
// memory allocations could end up inside of it, but which still ensures that
282
// objects that should be located inside the sandbox are allocated within
283
// kSandboxSize bytes from the start of the sandbox. The minimum size of the
284
// region that is actually reserved for such a sandbox is specified by this
285
// constant and should be big enough to contain the pointer compression cage as
286
// well as the ArrayBuffer partition.
287
constexpr size_t kSandboxMinimumReservationSize = 8ULL * GB;
288
289
static_assert(kSandboxMinimumReservationSize > kPtrComprCageReservationSize,
290
              "The minimum reservation size for a sandbox must be larger than "
291
              "the pointer compression cage contained within it.");
292
293
// The maximum buffer size allowed inside the sandbox. This is mostly dependent
294
// on the size of the guard regions around the sandbox: an attacker must not be
295
// able to construct a buffer that appears larger than the guard regions and
296
// thereby "reach out of" the sandbox.
297
constexpr size_t kMaxSafeBufferSizeForSandbox = 32ULL * GB - 1;
298
static_assert(kMaxSafeBufferSizeForSandbox <= kSandboxGuardRegionSize,
299
              "The maximum allowed buffer size must not be larger than the "
300
              "sandbox's guard regions");
301
302
constexpr size_t kBoundedSizeShift = 29;
303
static_assert(1ULL << (64 - kBoundedSizeShift) ==
304
                  kMaxSafeBufferSizeForSandbox + 1,
305
              "The maximum size of a BoundedSize must be synchronized with the "
306
              "kMaxSafeBufferSizeForSandbox");
307
308
#endif  // V8_ENABLE_SANDBOX
309
310
#ifdef V8_COMPRESS_POINTERS
311
312
#ifdef V8_TARGET_OS_ANDROID
313
// The size of the virtual memory reservation for an external pointer table.
314
// This determines the maximum number of entries in a table. Using a maximum
315
// size allows omitting bounds checks on table accesses if the indices are
316
// guaranteed (e.g. through shifting) to be below the maximum index. This
317
// value must be a power of two.
318
constexpr size_t kExternalPointerTableReservationSize = 256 * MB;
319
320
// The external pointer table indices stored in HeapObjects as external
321
// pointers are shifted to the left by this amount to guarantee that they are
322
// smaller than the maximum table size even after the C++ compiler multiplies
323
// them by 8 to be used as indexes into a table of 64 bit pointers.
324
constexpr uint32_t kExternalPointerIndexShift = 7;
325
#else
326
constexpr size_t kExternalPointerTableReservationSize = 512 * MB;
327
constexpr uint32_t kExternalPointerIndexShift = 6;
328
#endif  // V8_TARGET_OS_ANDROID
329
330
// The maximum number of entries in an external pointer table.
331
constexpr int kExternalPointerTableEntrySize = 8;
332
constexpr int kExternalPointerTableEntrySizeLog2 = 3;
333
constexpr size_t kMaxExternalPointers =
334
    kExternalPointerTableReservationSize / kExternalPointerTableEntrySize;
335
static_assert((1 << (32 - kExternalPointerIndexShift)) == kMaxExternalPointers,
336
              "kExternalPointerTableReservationSize and "
337
              "kExternalPointerIndexShift don't match");
338
339
#else  // !V8_COMPRESS_POINTERS
340
341
// Needed for the V8.SandboxedExternalPointersCount histogram.
342
constexpr size_t kMaxExternalPointers = 0;
343
344
#endif  // V8_COMPRESS_POINTERS
345
346
constexpr uint64_t kExternalPointerMarkBit = 1ULL << 48;
347
constexpr uint64_t kExternalPointerTagShift = 49;
348
constexpr uint64_t kExternalPointerTagMask = 0x00fe000000000000ULL;
349
constexpr uint64_t kExternalPointerShiftedTagMask =
350
    kExternalPointerTagMask >> kExternalPointerTagShift;
351
static_assert(kExternalPointerShiftedTagMask << kExternalPointerTagShift ==
352
              kExternalPointerTagMask);
353
constexpr uint64_t kExternalPointerTagAndMarkbitMask = 0x00ff000000000000ULL;
354
constexpr uint64_t kExternalPointerPayloadMask = 0xff00ffffffffffffULL;
355
356
// A ExternalPointerHandle represents a (opaque) reference to an external
357
// pointer that can be stored inside the sandbox. A ExternalPointerHandle has
358
// meaning only in combination with an (active) Isolate as it references an
359
// external pointer stored in the currently active Isolate's
360
// ExternalPointerTable. Internally, an ExternalPointerHandles is simply an
361
// index into an ExternalPointerTable that is shifted to the left to guarantee
362
// that it is smaller than the size of the table.
363
using ExternalPointerHandle = uint32_t;
364
365
// ExternalPointers point to objects located outside the sandbox. When the V8
366
// sandbox is enabled, these are stored on heap as ExternalPointerHandles,
367
// otherwise they are simply raw pointers.
368
#ifdef V8_ENABLE_SANDBOX
369
using ExternalPointer_t = ExternalPointerHandle;
370
#else
371
using ExternalPointer_t = Address;
372
#endif
373
374
constexpr ExternalPointer_t kNullExternalPointer = 0;
375
constexpr ExternalPointerHandle kNullExternalPointerHandle = 0;
376
377
// See `ExternalPointerHandle` for the main documentation. The difference to
378
// `ExternalPointerHandle` is that the handle does not represent an arbitrary
379
// external pointer but always refers to an object managed by `CppHeap`. The
380
// handles are using in combination with a dedicated table for `CppHeap`
381
// references.
382
using CppHeapPointerHandle = uint32_t;
383
384
// The actual pointer to objects located on the `CppHeap`. When pointer
385
// compression is enabled these pointers are stored as `CppHeapPointerHandle`.
386
// In non-compressed configurations the pointers are simply stored as raw
387
// pointers.
388
#ifdef V8_COMPRESS_POINTERS
389
using CppHeapPointer_t = CppHeapPointerHandle;
390
#else
391
using CppHeapPointer_t = Address;
392
#endif
393
394
constexpr CppHeapPointer_t kNullCppHeapPointer = 0;
395
constexpr CppHeapPointerHandle kNullCppHeapPointerHandle = 0;
396
397
constexpr uint64_t kCppHeapPointerMarkBit = 1ULL;
398
constexpr uint64_t kCppHeapPointerTagShift = 1;
399
constexpr uint64_t kCppHeapPointerPayloadShift = 16;
400
401
#ifdef V8_COMPRESS_POINTERS
402
// CppHeapPointers use a dedicated pointer table. These constants control the
403
// size and layout of the table. See the corresponding constants for the
404
// external pointer table for further details.
405
constexpr size_t kCppHeapPointerTableReservationSize =
406
    kExternalPointerTableReservationSize;
407
constexpr uint32_t kCppHeapPointerIndexShift = kExternalPointerIndexShift;
408
409
constexpr int kCppHeapPointerTableEntrySize = 8;
410
constexpr int kCppHeapPointerTableEntrySizeLog2 = 3;
411
constexpr size_t kMaxCppHeapPointers =
412
    kCppHeapPointerTableReservationSize / kCppHeapPointerTableEntrySize;
413
static_assert((1 << (32 - kCppHeapPointerIndexShift)) == kMaxCppHeapPointers,
414
              "kCppHeapPointerTableReservationSize and "
415
              "kCppHeapPointerIndexShift don't match");
416
417
#else  // !V8_COMPRESS_POINTERS
418
419
// Needed for the V8.SandboxedCppHeapPointersCount histogram.
420
constexpr size_t kMaxCppHeapPointers = 0;
421
422
#endif  // V8_COMPRESS_POINTERS
423
424
// The number of tags reserved for embedder data stored in internal fields. The
425
// value is picked arbitrarily, and is slightly larger than the number of tags
426
// currently used in Chrome.
427
#define V8_EMBEDDER_DATA_TAG_COUNT 15
428
429
// Generic tag range struct to represent ranges of type tags.
430
//
431
// When referencing external objects via pointer tables, type tags are
432
// frequently necessary to guarantee type safety for the external objects. When
433
// support for subtyping is necessary, range-based type checks are used in
434
// which all subtypes of a given supertype use contiguous tags. This struct can
435
// then be used to represent such a type range.
436
//
437
// In addition, there is an option for performance tweaks: if the size of the
438
// type range corresponding to a supertype is a power of two and starts at a
439
// power of two (e.g. [0x100, 0x13f]), then the compiler can often optimize
440
// the type check to use even fewer instructions (essentially replace a AND +
441
// SUB with a single AND).
442
//
443
template <typename Tag>
444
struct TagRange {
445
  static_assert(std::is_enum_v<Tag> &&
446
                    std::is_same_v<std::underlying_type_t<Tag>, uint16_t>,
447
                "Tag parameter must be an enum with base type uint16_t");
448
449
  // Construct the inclusive tag range [first, last].
450
  constexpr TagRange(Tag first, Tag last) : first(first), last(last) {}
451
452
  // Construct a tag range consisting of a single tag.
453
  //
454
  // A single tag is always implicitly convertible to a tag range. This greatly
455
  // increases readability as most of the time, the exact tag of a field is
456
  // known and so no tag range needs to explicitly be created for it.
457
  constexpr TagRange(Tag tag)  // NOLINT(runtime/explicit)
458
5.05M
      : first(tag), last(tag) {}
459
460
  // Construct an empty tag range.
461
  constexpr TagRange() : TagRange(static_cast<Tag>(0)) {}
462
463
  // A tag range is considered empty if it only contains the null tag.
464
  constexpr bool IsEmpty() const { return first == 0 && last == 0; }
465
466
  constexpr size_t Size() const {
467
    if (IsEmpty()) {
468
      return 0;
469
    } else {
470
      return last - first + 1;
471
    }
472
  }
473
474
0
  constexpr bool Contains(Tag tag) const {
475
0
    // Need to perform the math with uint32_t. Otherwise, the uint16_ts would
476
0
    // be promoted to (signed) int, allowing the compiler to (wrongly) assume
477
0
    // that an underflow cannot happen as that would be undefined behavior.
478
0
    return static_cast<uint32_t>(tag) - first <=
479
0
           static_cast<uint32_t>(last) - first;
480
0
  }
481
482
0
  constexpr bool Contains(TagRange tag_range) const {
483
0
    return tag_range.first >= first && tag_range.last <= last;
484
0
  }
485
486
  constexpr bool operator==(const TagRange other) const {
487
    return first == other.first && last == other.last;
488
  }
489
490
  constexpr size_t hash_value() const {
491
    static_assert(std::is_same_v<std::underlying_type_t<Tag>, uint16_t>);
492
    return (static_cast<size_t>(first) << 16) | last;
493
  }
494
495
  // Internally we represent tag ranges as half-open ranges [first, last).
496
  const Tag first;
497
  const Tag last;
498
};
499
500
//
501
// External Pointers.
502
//
503
// When the sandbox is enabled, external pointers are stored in an external
504
// pointer table and are referenced from HeapObjects through an index (a
505
// "handle"). When stored in the table, the pointers are tagged with per-type
506
// tags to prevent type confusion attacks between different external objects.
507
//
508
// When loading an external pointer, a range of allowed tags can be specified.
509
// This way, type hierarchies can be supported. The main requirement for that
510
// is that all (transitive) child classes of a given parent class have type ids
511
// in the same range, and that there are no unrelated types in that range. For
512
// more details about how to assign type tags to types, see the TagRange class.
513
//
514
// The external pointer sandboxing mechanism ensures that every access to an
515
// external pointer field will result in a valid pointer of the expected type
516
// even in the presence of an attacker able to corrupt memory inside the
517
// sandbox. However, if any data related to the external object is stored
518
// inside the sandbox it may still be corrupted and so must be validated before
519
// use or moved into the external object. Further, an attacker will always be
520
// able to substitute different external pointers of the same type for each
521
// other. Therefore, code using external pointers must be written in a
522
// "substitution-safe" way, i.e. it must always be possible to substitute
523
// external pointers of the same type without causing memory corruption outside
524
// of the sandbox. Generally this is achieved by referencing any group of
525
// related external objects through a single external pointer.
526
//
527
// Currently we use bit 62 for the marking bit which should always be unused as
528
// it's part of the non-canonical address range. When Arm's top-byte ignore
529
// (TBI) is enabled, this bit will be part of the ignored byte, and we assume
530
// that the Embedder is not using this byte (really only this one bit) for any
531
// other purpose. This bit also does not collide with the memory tagging
532
// extension (MTE) which would use bits [56, 60).
533
//
534
// External pointer tables are also available even when the sandbox is off but
535
// pointer compression is on. In that case, the mechanism can be used to ease
536
// alignment requirements as it turns unaligned 64-bit raw pointers into
537
// aligned 32-bit indices. To "opt-in" to the external pointer table mechanism
538
// for this purpose, instead of using the ExternalPointer accessors one needs to
539
// use ExternalPointerHandles directly and use them to access the pointers in an
540
// ExternalPointerTable.
541
//
542
// The tag is currently in practice limited to 15 bits since it needs to fit
543
// together with a marking bit into the unused parts of a pointer.
544
enum ExternalPointerTag : uint16_t {
545
  kFirstExternalPointerTag = 0,
546
  kExternalPointerNullTag = 0,
547
548
  // When adding new tags, please ensure that the code using these tags is
549
  // "substitution-safe", i.e. still operate safely if external pointers of the
550
  // same type are swapped by an attacker. See comment above for more details.
551
552
  // Shared external pointers are owned by the shared Isolate and stored in the
553
  // shared external pointer table associated with that Isolate, where they can
554
  // be accessed from multiple threads at the same time. The objects referenced
555
  // in this way must therefore always be thread-safe.
556
  kFirstSharedExternalPointerTag,
557
  kWaiterQueueNodeTag = kFirstSharedExternalPointerTag,
558
  kExternalStringResourceTag,
559
  kExternalStringResourceDataTag,
560
  kLastSharedExternalPointerTag = kExternalStringResourceDataTag,
561
562
  // External pointers using these tags are kept in a per-Isolate external
563
  // pointer table and can only be accessed when this Isolate is active.
564
  kNativeContextMicrotaskQueueTag,
565
566
  // Placeholders for embedder data.
567
  kFirstEmbedderDataTag,
568
  kLastEmbedderDataTag = kFirstEmbedderDataTag + V8_EMBEDDER_DATA_TAG_COUNT - 1,
569
  // This tag essentially stands for a `void*` pointer in the V8 API, and it is
570
  // the Embedder's responsibility to ensure type safety (against substitution)
571
  // and lifetime validity of these objects.
572
  kExternalObjectValueTag,
573
  kFirstMaybeReadOnlyExternalPointerTag,
574
  kFunctionTemplateInfoCallbackTag = kFirstMaybeReadOnlyExternalPointerTag,
575
  kAccessorInfoGetterTag,
576
  kAccessorInfoSetterTag,
577
578
  // InterceptorInfo external pointers.
579
  kFirstInterceptorInfoExternalPointerTag,
580
  kApiNamedPropertyQueryCallbackTag = kFirstInterceptorInfoExternalPointerTag,
581
  kApiNamedPropertyGetterCallbackTag,
582
  kApiNamedPropertySetterCallbackTag,
583
  kApiNamedPropertyDescriptorCallbackTag,
584
  kApiNamedPropertyDefinerCallbackTag,
585
  kApiNamedPropertyDeleterCallbackTag,
586
  kApiNamedPropertyEnumeratorCallbackTag,
587
  kApiIndexedPropertyQueryCallbackTag,
588
  kApiIndexedPropertyGetterCallbackTag,
589
  kApiIndexedPropertySetterCallbackTag,
590
  kApiIndexedPropertyDescriptorCallbackTag,
591
  kApiIndexedPropertyDefinerCallbackTag,
592
  kApiIndexedPropertyDeleterCallbackTag,
593
  kApiIndexedPropertyEnumeratorCallbackTag,
594
  kLastInterceptorInfoExternalPointerTag =
595
      kApiIndexedPropertyEnumeratorCallbackTag,
596
597
  kLastMaybeReadOnlyExternalPointerTag = kLastInterceptorInfoExternalPointerTag,
598
599
  kWasmStackMemoryTag,
600
601
  // Foreigns
602
  kFirstForeignExternalPointerTag,
603
  kGenericForeignTag = kFirstForeignExternalPointerTag,
604
605
  kApiAccessCheckCallbackTag,
606
  kApiAbortScriptExecutionCallbackTag,
607
  kSyntheticModuleTag,
608
  kMicrotaskCallbackTag,
609
  kMicrotaskCallbackDataTag,
610
  kCFunctionTag,
611
  kCFunctionInfoTag,
612
  kMessageListenerTag,
613
  kWaiterQueueForeignTag,
614
615
  // Managed
616
  kFirstManagedResourceTag,
617
  kFirstManagedExternalPointerTag = kFirstManagedResourceTag,
618
  kGenericManagedTag = kFirstManagedExternalPointerTag,
619
  kWasmWasmStreamingTag,
620
  kWasmFuncDataTag,
621
  kWasmManagedDataTag,
622
  kWasmNativeModuleTag,
623
  kIcuBreakIteratorTag,
624
  kIcuUnicodeStringTag,
625
  kIcuListFormatterTag,
626
  kIcuLocaleTag,
627
  kIcuSimpleDateFormatTag,
628
  kIcuDateIntervalFormatTag,
629
  kIcuRelativeDateTimeFormatterTag,
630
  kIcuLocalizedNumberFormatterTag,
631
  kIcuPluralRulesTag,
632
  kIcuCollatorTag,
633
  kTemporalDurationTag,
634
  kTemporalInstantTag,
635
  kTemporalPlainDateTag,
636
  kTemporalPlainTimeTag,
637
  kTemporalPlainDateTimeTag,
638
  kTemporalPlainYearMonthTag,
639
  kTemporalPlainMonthDayTag,
640
  kTemporalZonedDateTimeTag,
641
  kDisplayNamesInternalTag,
642
  kD8WorkerTag,
643
  kD8ModuleEmbedderDataTag,
644
  kLastForeignExternalPointerTag = kD8ModuleEmbedderDataTag,
645
  kLastManagedExternalPointerTag = kLastForeignExternalPointerTag,
646
  // External resources whose lifetime is tied to their entry in the external
647
  // pointer table but which are not referenced via a Managed
648
  kArrayBufferExtensionTag,
649
  kLastManagedResourceTag = kArrayBufferExtensionTag,
650
651
  kExternalPointerZappedEntryTag = 0x7d,
652
  kExternalPointerEvacuationEntryTag = 0x7e,
653
  kExternalPointerFreeEntryTag = 0x7f,
654
  // The tags are limited to 7 bits, so the last tag is 0x7f.
655
  kLastExternalPointerTag = 0x7f,
656
};
657
658
using ExternalPointerTagRange = TagRange<ExternalPointerTag>;
659
660
constexpr ExternalPointerTagRange kAnyExternalPointerTagRange(
661
    kFirstExternalPointerTag, kLastExternalPointerTag);
662
constexpr ExternalPointerTagRange kAnySharedExternalPointerTagRange(
663
    kFirstSharedExternalPointerTag, kLastSharedExternalPointerTag);
664
constexpr ExternalPointerTagRange kAnyForeignExternalPointerTagRange(
665
    kFirstForeignExternalPointerTag, kLastForeignExternalPointerTag);
666
constexpr ExternalPointerTagRange kAnyInterceptorInfoExternalPointerTagRange(
667
    kFirstInterceptorInfoExternalPointerTag,
668
    kLastInterceptorInfoExternalPointerTag);
669
constexpr ExternalPointerTagRange kAnyManagedExternalPointerTagRange(
670
    kFirstManagedExternalPointerTag, kLastManagedExternalPointerTag);
671
constexpr ExternalPointerTagRange kAnyMaybeReadOnlyExternalPointerTagRange(
672
    kFirstMaybeReadOnlyExternalPointerTag,
673
    kLastMaybeReadOnlyExternalPointerTag);
674
constexpr ExternalPointerTagRange kAnyManagedResourceExternalPointerTag(
675
    kFirstManagedResourceTag, kLastManagedResourceTag);
676
677
// True if the external pointer must be accessed from the shared isolate's
678
// external pointer table.
679
V8_INLINE static constexpr bool IsSharedExternalPointerType(
680
0
    ExternalPointerTagRange tag_range) {
681
0
  return kAnySharedExternalPointerTagRange.Contains(tag_range);
682
0
}
Unexecuted instantiation: node_snapshot_stub.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_common.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_sign_verify.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: environment.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: hooks.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: base_object.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cleanup_queue.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: env.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: heap_utils.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: module_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_api.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_binding.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_blob.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_buffer.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_builtins.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config_file.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_constants.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_contextify.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_credentials.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dir.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dotenv.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_env_var.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_errors.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_file.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http_parser.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http2.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_i18n.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_locks.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_main_instance.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_messaging.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_metadata.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_modules.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_options.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_os.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_perf.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_platform.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_events.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_methods.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_object.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_realm.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_module.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_utils.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sea.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_serdes.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_shadow_realm.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_snapshotable.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sockaddr.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_stat_watcher.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_symbols.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_queue.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_runner.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_events.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_types.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url_pattern.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_util.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_v8.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasi.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasm_web_api.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_watchdog.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_worker.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_zlib.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: path.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: wasi_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: net_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: addon_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: pipe_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: process_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: signal_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: spawn_sync.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_base.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_pipe.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_bytes.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_decoder.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tcp_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timers.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_buffer.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_writer.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: trace_event.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: traced_value.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tty_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: udp_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: util.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: uv.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: quic.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cppgc_helpers.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_large_page.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sqlite.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_webstorage.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_io.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_profiler.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_js_api.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket_server.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: main_thread_interface.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_json.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_string.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: runtime_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tracing_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_inspector.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: target_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_inspector.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: io_agent.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_resource_manager.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_context.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_util.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keys.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_tls.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_x509.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_crypto.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_javascript.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Protocol.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeWorker.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeTracing.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeRuntime.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Network.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Target.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: IO.cpp:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_resource.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: callback.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: embed_helpers.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: exceptions.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: utils.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_context_frame.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cares_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: compile_cache.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connect_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connection_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: queue.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: debug_utils.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding_binding.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_event_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: handle_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: histogram.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: internal_only_v8.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_native_api_v8.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_stream.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_udp_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_external_reference.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: child_process_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_permission.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timer_wrap.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: bindingdata.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: endpoint.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: http3.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: session.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: streams.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tlscontext.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: transportparams.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_aes.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_argon2.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_bio.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_chacha20_poly1305.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_common.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dsa.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hkdf.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_pbkdf2.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_sig.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_timing.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_cipher.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ec.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ml_dsa.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kem.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hmac.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kmac.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_random.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_rsa.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_spkac.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_clienthello.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dh.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hash.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keygen.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_scrypt.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cid.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: data.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: logstream.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: packet.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: preferredaddress.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: sessionticket.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tokens.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: application.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_resolve.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyDER.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_querystring_parse.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_relative.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_tls_socket_request.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyJWK.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_equals.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_toNamespacedPath.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_open_read.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_isAbsolute.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliDecompress.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanJWK.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_createBrotliDecompress.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_ClientHelloParser.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_basename.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_strings.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_string_decoder.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_parse.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_blob.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanPEM.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_join.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_extname.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_format.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_dirname.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_compare.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_stream1.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_gzip_createUnzip.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyPEM.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_read_append.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_normalize.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliCompress.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_httpparser1.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_x509.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanDER.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_includes.cc:v8::internal::IsSharedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
683
684
// True if the external pointer may live in a read-only object, in which case
685
// the table entry will be in the shared read-only segment of the external
686
// pointer table.
687
V8_INLINE static constexpr bool IsMaybeReadOnlyExternalPointerType(
688
0
    ExternalPointerTagRange tag_range) {
689
0
  return kAnyMaybeReadOnlyExternalPointerTagRange.Contains(tag_range);
690
0
}
Unexecuted instantiation: node_snapshot_stub.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_common.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_sign_verify.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: environment.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: hooks.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: base_object.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cleanup_queue.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: env.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: heap_utils.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: module_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_api.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_binding.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_blob.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_buffer.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_builtins.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config_file.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_constants.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_contextify.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_credentials.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dir.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dotenv.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_env_var.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_errors.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_file.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http_parser.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http2.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_i18n.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_locks.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_main_instance.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_messaging.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_metadata.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_modules.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_options.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_os.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_perf.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_platform.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_events.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_methods.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_object.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_realm.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_module.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_utils.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sea.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_serdes.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_shadow_realm.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_snapshotable.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sockaddr.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_stat_watcher.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_symbols.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_queue.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_runner.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_events.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_types.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url_pattern.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_util.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_v8.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasi.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasm_web_api.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_watchdog.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_worker.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_zlib.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: path.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: wasi_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: net_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: addon_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: pipe_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: process_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: signal_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: spawn_sync.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_base.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_pipe.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_bytes.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_decoder.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tcp_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timers.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_buffer.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_writer.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: trace_event.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: traced_value.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tty_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: udp_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: util.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: uv.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: quic.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cppgc_helpers.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_large_page.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sqlite.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_webstorage.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_io.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_profiler.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_js_api.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket_server.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: main_thread_interface.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_json.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_string.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: runtime_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tracing_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_inspector.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: target_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_inspector.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: io_agent.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_resource_manager.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_context.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_util.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keys.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_tls.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_x509.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_crypto.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_javascript.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Protocol.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeWorker.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeTracing.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeRuntime.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Network.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Target.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: IO.cpp:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_resource.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: callback.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: embed_helpers.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: exceptions.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: utils.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_context_frame.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cares_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: compile_cache.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connect_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connection_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: queue.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: debug_utils.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding_binding.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_event_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: handle_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: histogram.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: internal_only_v8.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_native_api_v8.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_stream.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_udp_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_external_reference.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: child_process_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_permission.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timer_wrap.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: bindingdata.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: endpoint.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: http3.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: session.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: streams.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tlscontext.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: transportparams.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_aes.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_argon2.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_bio.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_chacha20_poly1305.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_common.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dsa.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hkdf.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_pbkdf2.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_sig.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_timing.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_cipher.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ec.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ml_dsa.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kem.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hmac.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kmac.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_random.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_rsa.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_spkac.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_clienthello.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dh.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hash.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keygen.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_scrypt.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cid.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: data.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: logstream.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: packet.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: preferredaddress.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: sessionticket.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tokens.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: application.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_resolve.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyDER.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_querystring_parse.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_relative.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_tls_socket_request.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyJWK.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_equals.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_toNamespacedPath.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_open_read.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_isAbsolute.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliDecompress.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanJWK.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_createBrotliDecompress.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_ClientHelloParser.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_basename.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_strings.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_string_decoder.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_parse.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_blob.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanPEM.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_join.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_extname.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_format.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_dirname.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_compare.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_stream1.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_gzip_createUnzip.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyPEM.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_read_append.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_normalize.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliCompress.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_httpparser1.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_x509.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanDER.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_includes.cc:v8::internal::IsMaybeReadOnlyExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
691
692
// True if the external pointer references an external object whose lifetime is
693
// tied to the entry in the external pointer table.
694
// In this case, the entry in the ExternalPointerTable always points to an
695
// object derived from ExternalPointerTable::ManagedResource.
696
V8_INLINE static constexpr bool IsManagedExternalPointerType(
697
0
    ExternalPointerTagRange tag_range) {
698
0
  return kAnyManagedResourceExternalPointerTag.Contains(tag_range);
699
0
}
Unexecuted instantiation: node_snapshot_stub.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_common.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_sign_verify.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: environment.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: hooks.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: base_object.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cleanup_queue.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: env.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: heap_utils.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: module_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_api.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_binding.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_blob.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_buffer.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_builtins.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config_file.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_constants.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_contextify.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_credentials.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dir.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dotenv.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_env_var.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_errors.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_file.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http_parser.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http2.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_i18n.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_locks.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_main_instance.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_messaging.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_metadata.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_modules.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_options.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_os.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_perf.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_platform.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_events.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_methods.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_object.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_realm.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_module.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_utils.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sea.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_serdes.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_shadow_realm.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_snapshotable.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sockaddr.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_stat_watcher.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_symbols.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_queue.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_runner.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_events.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_types.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url_pattern.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_util.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_v8.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasi.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasm_web_api.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_watchdog.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_worker.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_zlib.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: path.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: wasi_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: net_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: addon_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: pipe_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: process_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: signal_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: spawn_sync.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_base.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_pipe.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_bytes.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_decoder.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tcp_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timers.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_buffer.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_writer.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: trace_event.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: traced_value.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tty_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: udp_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: util.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: uv.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: quic.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cppgc_helpers.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_large_page.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sqlite.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_webstorage.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_io.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_profiler.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_js_api.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket_server.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: main_thread_interface.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_json.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_string.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: runtime_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tracing_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_inspector.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: target_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_inspector.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: io_agent.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_resource_manager.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_context.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_util.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keys.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_tls.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_x509.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_crypto.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_javascript.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Protocol.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeWorker.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeTracing.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeRuntime.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Network.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Target.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: IO.cpp:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_resource.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: callback.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: embed_helpers.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: exceptions.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: utils.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_context_frame.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cares_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: compile_cache.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connect_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connection_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: queue.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: debug_utils.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding_binding.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_event_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: handle_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: histogram.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: internal_only_v8.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_native_api_v8.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_stream.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_udp_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_external_reference.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: child_process_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_permission.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timer_wrap.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: bindingdata.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: endpoint.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: http3.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: session.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: streams.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tlscontext.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: transportparams.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_aes.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_argon2.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_bio.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_chacha20_poly1305.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_common.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dsa.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hkdf.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_pbkdf2.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_sig.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_timing.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_cipher.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ec.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ml_dsa.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kem.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hmac.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kmac.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_random.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_rsa.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_spkac.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_clienthello.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dh.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hash.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keygen.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_scrypt.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cid.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: data.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: logstream.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: packet.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: preferredaddress.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: sessionticket.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tokens.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: application.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_resolve.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyDER.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_querystring_parse.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_relative.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_tls_socket_request.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyJWK.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_equals.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_toNamespacedPath.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_open_read.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_isAbsolute.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliDecompress.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanJWK.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_createBrotliDecompress.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_ClientHelloParser.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_basename.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_strings.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_string_decoder.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_parse.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_blob.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanPEM.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_join.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_extname.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_format.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_dirname.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_compare.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_stream1.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_gzip_createUnzip.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyPEM.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_read_append.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_normalize.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliCompress.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_httpparser1.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_x509.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanDER.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_includes.cc:v8::internal::IsManagedExternalPointerType(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
700
701
// When an external poiner field can contain the null external pointer handle,
702
// the type checking mechanism needs to also check for null.
703
// TODO(saelo): this is mostly a temporary workaround to introduce range-based
704
// type checks. In the future, we should either (a) change the type tagging
705
// scheme so that null always passes or (b) (more likely) introduce dedicated
706
// null entries for those tags that need them (similar to other well-known
707
// empty value constants such as the empty fixed array).
708
V8_INLINE static constexpr bool ExternalPointerCanBeEmpty(
709
0
    ExternalPointerTagRange tag_range) {
710
0
  return tag_range.Contains(kArrayBufferExtensionTag) ||
711
0
         (tag_range.first <= kLastEmbedderDataTag &&
712
0
          kFirstEmbedderDataTag <= tag_range.last) ||
713
0
         kAnyInterceptorInfoExternalPointerTagRange.Contains(tag_range);
714
0
}
Unexecuted instantiation: node_snapshot_stub.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_common.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_sign_verify.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: environment.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: hooks.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: base_object.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cleanup_queue.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: env.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: heap_utils.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: module_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_api.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_binding.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_blob.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_buffer.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_builtins.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_config_file.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_constants.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_contextify.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_credentials.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dir.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_dotenv.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_env_var.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_errors.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_file.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http_parser.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_http2.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_i18n.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_locks.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_main_instance.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_messaging.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_metadata.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_modules.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_options.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_os.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_perf.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_platform.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_events.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_methods.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_process_object.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_realm.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_module.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_report_utils.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sea.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_serdes.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_shadow_realm.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_snapshotable.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sockaddr.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_stat_watcher.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_symbols.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_queue.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_task_runner.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_events.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_types.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_url_pattern.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_util.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_v8.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasi.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_wasm_web_api.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_watchdog.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_worker.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_zlib.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: path.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: wasi_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: net_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: addon_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: pipe_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: process_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: signal_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: spawn_sync.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_base.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_pipe.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: stream_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_bytes.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: string_decoder.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tcp_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timers.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_buffer.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_trace_writer.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: trace_event.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: traced_value.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tty_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: udp_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: util.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: uv.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: quic.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cppgc_helpers.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_large_page.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_sqlite.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_webstorage.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_io.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_profiler.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_js_api.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket_server.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: main_thread_interface.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_json.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_string.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: runtime_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tracing_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_inspector.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: target_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: worker_inspector.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: io_agent.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: network_resource_manager.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_context.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_util.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keys.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_tls.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_x509.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_crypto.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_javascript.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Protocol.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeWorker.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeTracing.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: NodeRuntime.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Network.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: Target.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: IO.cpp:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_resource.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: callback.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: embed_helpers.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: exceptions.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: utils.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: async_context_frame.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cares_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: compile_cache.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connect_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: connection_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: queue.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: debug_utils.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: encoding_binding.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_event_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: handle_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: histogram.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: internal_only_v8.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_native_api_v8.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_stream.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: js_udp_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: node_external_reference.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: child_process_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fs_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_permission.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: timer_wrap.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: bindingdata.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: endpoint.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: http3.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: session.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: streams.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tlscontext.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: transportparams.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: inspector_socket.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_aes.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_argon2.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_bio.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_chacha20_poly1305.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_common.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dsa.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hkdf.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_pbkdf2.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_sig.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_timing.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_cipher.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ec.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_ml_dsa.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kem.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hmac.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_kmac.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_random.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_rsa.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_spkac.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_clienthello.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_dh.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_hash.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_keygen.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: crypto_scrypt.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: cid.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: data.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: logstream.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: packet.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: preferredaddress.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: sessionticket.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: tokens.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: application.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_resolve.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyDER.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_querystring_parse.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_relative.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_tls_socket_request.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyJWK.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_equals.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_toNamespacedPath.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_open_read.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_isAbsolute.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliDecompress.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanJWK.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_createBrotliDecompress.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_ClientHelloParser.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_basename.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_strings.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_string_decoder.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_parse.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_blob.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanPEM.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_join.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_extname.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_format.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_dirname.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_compare.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_stream1.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_gzip_createUnzip.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_createPrivateKeyPEM.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_fs_write_read_append.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_path_normalize.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_zlib_brotliCompress.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_httpparser1.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_x509.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_diffieHellmanDER.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
Unexecuted instantiation: fuzz_buffer_includes.cc:v8::internal::ExternalPointerCanBeEmpty(v8::internal::TagRange<v8::internal::ExternalPointerTag>)
715
716
// Indirect Pointers.
717
//
718
// When the sandbox is enabled, indirect pointers are used to reference
719
// HeapObjects that live outside of the sandbox (but are still managed by V8's
720
// garbage collector). When object A references an object B through an indirect
721
// pointer, object A will contain a IndirectPointerHandle, i.e. a shifted
722
// 32-bit index, which identifies an entry in a pointer table (either the
723
// trusted pointer table for TrustedObjects, or the code pointer table if it is
724
// a Code object). This table entry then contains the actual pointer to object
725
// B. Further, object B owns this pointer table entry, and it is responsible
726
// for updating the "self-pointer" in the entry when it is relocated in memory.
727
// This way, in contrast to "normal" pointers, indirect pointers never need to
728
// be tracked by the GC (i.e. there is no remembered set for them).
729
// These pointers do not exist when the sandbox is disabled.
730
731
// An IndirectPointerHandle represents a 32-bit index into a pointer table.
732
using IndirectPointerHandle = uint32_t;
733
734
// A null handle always references an entry that contains nullptr.
735
constexpr IndirectPointerHandle kNullIndirectPointerHandle = 0;
736
737
// When the sandbox is enabled, indirect pointers are used to implement:
738
// - TrustedPointers: an indirect pointer using the trusted pointer table (TPT)
739
//   and referencing a TrustedObject in one of the trusted heap spaces.
740
// - CodePointers, an indirect pointer using the code pointer table (CPT) and
741
//   referencing a Code object together with its instruction stream.
742
743
//
744
// Trusted Pointers.
745
//
746
// A pointer to a TrustedObject.
747
// When the sandbox is enabled, these are indirect pointers using the trusted
748
// pointer table (TPT). They are used to reference trusted objects (located in
749
// one of V8's trusted heap spaces, outside of the sandbox) from inside the
750
// sandbox in a memory-safe way. When the sandbox is disabled, these are
751
// regular tagged pointers.
752
using TrustedPointerHandle = IndirectPointerHandle;
753
754
// The size of the virtual memory reservation for the trusted pointer table.
755
// As with the external pointer table, a maximum table size in combination with
756
// shifted indices allows omitting bounds checks.
757
constexpr size_t kTrustedPointerTableReservationSize = 64 * MB;
758
759
// The trusted pointer handles are stored shifted to the left by this amount
760
// to guarantee that they are smaller than the maximum table size.
761
constexpr uint32_t kTrustedPointerHandleShift = 9;
762
763
// A null handle always references an entry that contains nullptr.
764
constexpr TrustedPointerHandle kNullTrustedPointerHandle =
765
    kNullIndirectPointerHandle;
766
767
// The maximum number of entries in an trusted pointer table.
768
constexpr int kTrustedPointerTableEntrySize = 8;
769
constexpr int kTrustedPointerTableEntrySizeLog2 = 3;
770
constexpr size_t kMaxTrustedPointers =
771
    kTrustedPointerTableReservationSize / kTrustedPointerTableEntrySize;
772
static_assert((1 << (32 - kTrustedPointerHandleShift)) == kMaxTrustedPointers,
773
              "kTrustedPointerTableReservationSize and "
774
              "kTrustedPointerHandleShift don't match");
775
776
//
777
// Code Pointers.
778
//
779
// A pointer to a Code object.
780
// Essentially a specialized version of a trusted pointer that (when the
781
// sandbox is enabled) uses the code pointer table (CPT) instead of the TPT.
782
// Each entry in the CPT contains both a pointer to a Code object as well as a
783
// pointer to the Code's entrypoint. This allows calling/jumping into Code with
784
// one fewer memory access (compared to the case where the entrypoint pointer
785
// first needs to be loaded from the Code object). As such, a CodePointerHandle
786
// can be used both to obtain the referenced Code object and to directly load
787
// its entrypoint.
788
//
789
// When the sandbox is disabled, these are regular tagged pointers.
790
using CodePointerHandle = IndirectPointerHandle;
791
792
// The size of the virtual memory reservation for the code pointer table.
793
// As with the other tables, a maximum table size in combination with shifted
794
// indices allows omitting bounds checks.
795
constexpr size_t kCodePointerTableReservationSize = 128 * MB;
796
797
// Code pointer handles are shifted by a different amount than indirect pointer
798
// handles as the tables have a different maximum size.
799
constexpr uint32_t kCodePointerHandleShift = 9;
800
801
// A null handle always references an entry that contains nullptr.
802
constexpr CodePointerHandle kNullCodePointerHandle = kNullIndirectPointerHandle;
803
804
// It can sometimes be necessary to distinguish a code pointer handle from a
805
// trusted pointer handle. A typical example would be a union trusted pointer
806
// field that can refer to both Code objects and other trusted objects. To
807
// support these use-cases, we use a simple marking scheme where some of the
808
// low bits of a code pointer handle are set, while they will be unset on a
809
// trusted pointer handle. This way, the correct table to resolve the handle
810
// can be determined even in the absence of a type tag.
811
constexpr uint32_t kCodePointerHandleMarker = 0x1;
812
static_assert(kCodePointerHandleShift > 0);
813
static_assert(kTrustedPointerHandleShift > 0);
814
815
// The maximum number of entries in a code pointer table.
816
constexpr int kCodePointerTableEntrySize = 16;
817
constexpr int kCodePointerTableEntrySizeLog2 = 4;
818
constexpr size_t kMaxCodePointers =
819
    kCodePointerTableReservationSize / kCodePointerTableEntrySize;
820
static_assert(
821
    (1 << (32 - kCodePointerHandleShift)) == kMaxCodePointers,
822
    "kCodePointerTableReservationSize and kCodePointerHandleShift don't match");
823
824
constexpr int kCodePointerTableEntryEntrypointOffset = 0;
825
constexpr int kCodePointerTableEntryCodeObjectOffset = 8;
826
827
// Constants that can be used to mark places that should be modified once
828
// certain types of objects are moved out of the sandbox and into trusted space.
829
constexpr bool kRuntimeGeneratedCodeObjectsLiveInTrustedSpace = true;
830
constexpr bool kBuiltinCodeObjectsLiveInTrustedSpace = false;
831
constexpr bool kAllCodeObjectsLiveInTrustedSpace =
832
    kRuntimeGeneratedCodeObjectsLiveInTrustedSpace &&
833
    kBuiltinCodeObjectsLiveInTrustedSpace;
834
835
// {obj} must be the raw tagged pointer representation of a HeapObject
836
// that's guaranteed to never be in ReadOnlySpace.
837
V8_DEPRECATE_SOON(
838
    "Use GetCurrentIsolate() instead, which is guaranteed to return the same "
839
    "isolate since https://crrev.com/c/6458560.")
840
V8_EXPORT internal::Isolate* IsolateFromNeverReadOnlySpaceObject(Address obj);
841
842
// Returns if we need to throw when an error occurs. This infers the language
843
// mode based on the current context and the closure. This returns true if the
844
// language mode is strict.
845
V8_EXPORT bool ShouldThrowOnError(internal::Isolate* isolate);
846
847
struct HandleScopeData final {
848
  static constexpr uint32_t kSizeInBytes =
849
      2 * kApiSystemPointerSize + 2 * kApiInt32Size;
850
851
  Address* next;
852
  Address* limit;
853
  int level;
854
  int sealed_level;
855
856
0
  void Initialize() {
857
0
    next = limit = nullptr;
858
0
    sealed_level = level = 0;
859
0
  }
860
};
861
862
static_assert(HandleScopeData::kSizeInBytes == sizeof(HandleScopeData));
863
864
/**
865
 * This class exports constants and functionality from within v8 that
866
 * is necessary to implement inline functions in the v8 api.  Don't
867
 * depend on functions and constants defined here.
868
 */
869
class Internals {
870
#ifdef V8_MAP_PACKING
871
  V8_INLINE static constexpr Address UnpackMapWord(Address mapword) {
872
    // TODO(wenyuzhao): Clear header metadata.
873
    return mapword ^ kMapWordXorMask;
874
  }
875
#endif
876
877
 public:
878
  // These values match non-compiler-dependent values defined within
879
  // the implementation of v8.
880
  static const int kHeapObjectMapOffset = 0;
881
  static const int kMapInstanceTypeOffset = 1 * kApiTaggedSize + kApiInt32Size;
882
  static const int kStringResourceOffset =
883
      1 * kApiTaggedSize + 2 * kApiInt32Size;
884
885
  static const int kOddballKindOffset = 4 * kApiTaggedSize + kApiDoubleSize;
886
  static const int kJSObjectHeaderSize = 3 * kApiTaggedSize;
887
#ifdef V8_COMPRESS_POINTERS
888
  static const int kJSAPIObjectWithEmbedderSlotsHeaderSize =
889
      kJSObjectHeaderSize + kApiInt32Size;
890
#else   // !V8_COMPRESS_POINTERS
891
  static const int kJSAPIObjectWithEmbedderSlotsHeaderSize =
892
      kJSObjectHeaderSize + kApiTaggedSize;
893
#endif  // !V8_COMPRESS_POINTERS
894
  static const int kFixedArrayHeaderSize = 2 * kApiTaggedSize;
895
  static const int kEmbedderDataArrayHeaderSize = 2 * kApiTaggedSize;
896
  static const int kEmbedderDataSlotSize = kApiSystemPointerSize;
897
#ifdef V8_ENABLE_SANDBOX
898
  static const int kEmbedderDataSlotExternalPointerOffset = kApiTaggedSize;
899
#else
900
  static const int kEmbedderDataSlotExternalPointerOffset = 0;
901
#endif
902
  static const int kNativeContextEmbedderDataOffset = 6 * kApiTaggedSize;
903
  static const int kStringRepresentationAndEncodingMask = 0x0f;
904
  static const int kStringEncodingMask = 0x8;
905
  static const int kExternalTwoByteRepresentationTag = 0x02;
906
  static const int kExternalOneByteRepresentationTag = 0x0a;
907
908
  static const uint32_t kNumIsolateDataSlots = 4;
909
  static const int kStackGuardSize = 8 * kApiSystemPointerSize;
910
  static const int kNumberOfBooleanFlags = 6;
911
  static const int kErrorMessageParamSize = 1;
912
  static const int kTablesAlignmentPaddingSize = 1;
913
  static const int kRegExpStaticResultOffsetsVectorSize = kApiSystemPointerSize;
914
  static const int kBuiltinTier0EntryTableSize = 7 * kApiSystemPointerSize;
915
  static const int kBuiltinTier0TableSize = 7 * kApiSystemPointerSize;
916
  static const int kLinearAllocationAreaSize = 3 * kApiSystemPointerSize;
917
  static const int kThreadLocalTopSize = 29 * kApiSystemPointerSize;
918
  static const int kHandleScopeDataSize =
919
      2 * kApiSystemPointerSize + 2 * kApiInt32Size;
920
921
  // ExternalPointerTable and TrustedPointerTable layout guarantees.
922
  static const int kExternalPointerTableBasePointerOffset = 0;
923
  static const int kSegmentedTableSegmentPoolSize = 4;
924
  static const int kExternalPointerTableSize =
925
      4 * kApiSystemPointerSize +
926
      kSegmentedTableSegmentPoolSize * sizeof(uint32_t);
927
  static const int kTrustedPointerTableSize =
928
      4 * kApiSystemPointerSize +
929
      kSegmentedTableSegmentPoolSize * sizeof(uint32_t);
930
  static const int kTrustedPointerTableBasePointerOffset = 0;
931
932
  // IsolateData layout guarantees.
933
  static const int kIsolateCageBaseOffset = 0;
934
  static const int kIsolateStackGuardOffset =
935
      kIsolateCageBaseOffset + kApiSystemPointerSize;
936
  static const int kVariousBooleanFlagsOffset =
937
      kIsolateStackGuardOffset + kStackGuardSize;
938
  static const int kErrorMessageParamOffset =
939
      kVariousBooleanFlagsOffset + kNumberOfBooleanFlags;
940
  static const int kBuiltinTier0EntryTableOffset =
941
      kErrorMessageParamOffset + kErrorMessageParamSize +
942
      kTablesAlignmentPaddingSize + kRegExpStaticResultOffsetsVectorSize;
943
  static const int kBuiltinTier0TableOffset =
944
      kBuiltinTier0EntryTableOffset + kBuiltinTier0EntryTableSize;
945
  static const int kNewAllocationInfoOffset =
946
      kBuiltinTier0TableOffset + kBuiltinTier0TableSize;
947
  static const int kOldAllocationInfoOffset =
948
      kNewAllocationInfoOffset + kLinearAllocationAreaSize;
949
  static const int kLastYoungAllocationOffset =
950
      kOldAllocationInfoOffset + kApiSystemPointerSize;
951
952
  static const int kFastCCallAlignmentPaddingSize =
953
      kApiSystemPointerSize == 8 ? 5 * kApiSystemPointerSize
954
                                 : 1 * kApiSystemPointerSize;
955
  static const int kIsolateFastCCallCallerPcOffset =
956
      kLastYoungAllocationOffset + kLinearAllocationAreaSize +
957
      kFastCCallAlignmentPaddingSize;
958
  static const int kIsolateFastCCallCallerFpOffset =
959
      kIsolateFastCCallCallerPcOffset + kApiSystemPointerSize;
960
  static const int kIsolateFastApiCallTargetOffset =
961
      kIsolateFastCCallCallerFpOffset + kApiSystemPointerSize;
962
  static const int kIsolateLongTaskStatsCounterOffset =
963
      kIsolateFastApiCallTargetOffset + kApiSystemPointerSize;
964
  static const int kIsolateThreadLocalTopOffset =
965
      kIsolateLongTaskStatsCounterOffset + kApiSizetSize;
966
  static const int kIsolateHandleScopeDataOffset =
967
      kIsolateThreadLocalTopOffset + kThreadLocalTopSize;
968
  static const int kIsolateEmbedderDataOffset =
969
      kIsolateHandleScopeDataOffset + kHandleScopeDataSize;
970
#ifdef V8_COMPRESS_POINTERS
971
  static const int kIsolateExternalPointerTableOffset =
972
      kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize;
973
  static const int kIsolateSharedExternalPointerTableAddressOffset =
974
      kIsolateExternalPointerTableOffset + kExternalPointerTableSize;
975
  static const int kIsolateCppHeapPointerTableOffset =
976
      kIsolateSharedExternalPointerTableAddressOffset + kApiSystemPointerSize;
977
#ifdef V8_ENABLE_SANDBOX
978
  static const int kIsolateTrustedCageBaseOffset =
979
      kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize;
980
  static const int kIsolateTrustedPointerTableOffset =
981
      kIsolateTrustedCageBaseOffset + kApiSystemPointerSize;
982
  static const int kIsolateSharedTrustedPointerTableAddressOffset =
983
      kIsolateTrustedPointerTableOffset + kTrustedPointerTableSize;
984
  static const int kIsolateTrustedPointerPublishingScopeOffset =
985
      kIsolateSharedTrustedPointerTableAddressOffset + kApiSystemPointerSize;
986
  static const int kIsolateCodePointerTableBaseAddressOffset =
987
      kIsolateTrustedPointerPublishingScopeOffset + kApiSystemPointerSize;
988
  static const int kIsolateApiCallbackThunkArgumentOffset =
989
      kIsolateCodePointerTableBaseAddressOffset + kApiSystemPointerSize;
990
#else
991
  static const int kIsolateApiCallbackThunkArgumentOffset =
992
      kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize;
993
#endif  // V8_ENABLE_SANDBOX
994
#else
995
  static const int kIsolateApiCallbackThunkArgumentOffset =
996
      kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize;
997
#endif  // V8_COMPRESS_POINTERS
998
  static const int kJSDispatchTableOffset =
999
      kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize;
1000
  static const int kIsolateRegexpExecVectorArgumentOffset =
1001
      kJSDispatchTableOffset + kApiSystemPointerSize;
1002
  static const int kContinuationPreservedEmbedderDataOffset =
1003
      kIsolateRegexpExecVectorArgumentOffset + kApiSystemPointerSize;
1004
  static const int kIsolateRootsOffset =
1005
      kContinuationPreservedEmbedderDataOffset + kApiSystemPointerSize;
1006
1007
  // Assert scopes
1008
  static const int kDisallowGarbageCollectionAlign = alignof(uint32_t);
1009
  static const int kDisallowGarbageCollectionSize = sizeof(uint32_t);
1010
1011
#if V8_STATIC_ROOTS_BOOL
1012
1013
// These constants are copied from static-roots.h and guarded by static asserts.
1014
#define EXPORTED_STATIC_ROOTS_PTR_LIST(V)                            \
1015
  V(UndefinedValue, 0x11)                                            \
1016
  V(NullValue, 0x2d)                                                 \
1017
  V(TrueValue, 0x71)                                                 \
1018
  V(FalseValue, 0x55)                                                \
1019
  V(EmptyString, 0x49)                                               \
1020
  /* The Hole moves around depending on build flags, so define it */ \
1021
  /* separately inside StaticReadOnlyRoot using build macros */      \
1022
  V(TheHoleValue, kBuildDependentTheHoleValue)
1023
1024
  using Tagged_t = uint32_t;
1025
  struct StaticReadOnlyRoot {
1026
#ifdef V8_ENABLE_WEBASSEMBLY
1027
    static constexpr Tagged_t kBuildDependentTheHoleValue = 0x20001;
1028
#else
1029
#ifdef V8_INTL_SUPPORT
1030
    static constexpr Tagged_t kBuildDependentTheHoleValue = 0x6559;
1031
#else
1032
    static constexpr Tagged_t kBuildDependentTheHoleValue = 0x58bd;
1033
#endif
1034
#endif
1035
1036
#define DEF_ROOT(name, value) static constexpr Tagged_t k##name = value;
1037
    EXPORTED_STATIC_ROOTS_PTR_LIST(DEF_ROOT)
1038
#undef DEF_ROOT
1039
1040
    // Use 0 for kStringMapLowerBound since string maps are the first maps.
1041
    static constexpr Tagged_t kStringMapLowerBound = 0;
1042
    static constexpr Tagged_t kStringMapUpperBound = 0x425;
1043
1044
#define PLUSONE(...) +1
1045
    static constexpr size_t kNumberOfExportedStaticRoots =
1046
        2 + EXPORTED_STATIC_ROOTS_PTR_LIST(PLUSONE);
1047
#undef PLUSONE
1048
  };
1049
1050
#endif  // V8_STATIC_ROOTS_BOOL
1051
1052
  static const int kUndefinedValueRootIndex = 0;
1053
  static const int kTheHoleValueRootIndex = 1;
1054
  static const int kNullValueRootIndex = 2;
1055
  static const int kTrueValueRootIndex = 3;
1056
  static const int kFalseValueRootIndex = 4;
1057
  static const int kEmptyStringRootIndex = 5;
1058
1059
  static const int kNodeClassIdOffset = 1 * kApiSystemPointerSize;
1060
  static const int kNodeFlagsOffset = 1 * kApiSystemPointerSize + 3;
1061
  static const int kNodeStateMask = 0x3;
1062
  static const int kNodeStateIsWeakValue = 2;
1063
1064
  static const int kFirstNonstringType = 0x80;
1065
  static const int kOddballType = 0x83;
1066
  static const int kForeignType = 0xcc;
1067
  static const int kJSSpecialApiObjectType = 0x410;
1068
  static const int kJSObjectType = 0x421;
1069
  static const int kFirstJSApiObjectType = 0x422;
1070
  static const int kLastJSApiObjectType = 0x80A;
1071
  // Defines a range [kFirstEmbedderJSApiObjectType, kJSApiObjectTypesCount]
1072
  // of JSApiObject instance type values that an embedder can use.
1073
  static const int kFirstEmbedderJSApiObjectType = 0;
1074
  static const int kLastEmbedderJSApiObjectType =
1075
      kLastJSApiObjectType - kFirstJSApiObjectType;
1076
1077
  static const int kUndefinedOddballKind = 4;
1078
  static const int kNullOddballKind = 3;
1079
1080
  // Constants used by PropertyCallbackInfo to check if we should throw when an
1081
  // error occurs.
1082
  static const int kDontThrow = 0;
1083
  static const int kThrowOnError = 1;
1084
  static const int kInferShouldThrowMode = 2;
1085
1086
  // Soft limit for AdjustAmountofExternalAllocatedMemory. Trigger an
1087
  // incremental GC once the external memory reaches this limit.
1088
  static constexpr size_t kExternalAllocationSoftLimit = 64 * 1024 * 1024;
1089
1090
#ifdef V8_MAP_PACKING
1091
  static const uintptr_t kMapWordMetadataMask = 0xffffULL << 48;
1092
  // The lowest two bits of mapwords are always `0b10`
1093
  static const uintptr_t kMapWordSignature = 0b10;
1094
  // XORing a (non-compressed) map with this mask ensures that the two
1095
  // low-order bits are 0b10. The 0 at the end makes this look like a Smi,
1096
  // although real Smis have all lower 32 bits unset. We only rely on these
1097
  // values passing as Smis in very few places.
1098
  static const int kMapWordXorMask = 0b11;
1099
#endif
1100
1101
  V8_EXPORT static void CheckInitializedImpl(v8::Isolate* isolate);
1102
11.0k
  V8_INLINE static void CheckInitialized(v8::Isolate* isolate) {
1103
#ifdef V8_ENABLE_CHECKS
1104
    CheckInitializedImpl(isolate);
1105
#endif
1106
11.0k
  }
1107
1108
249k
  V8_INLINE static constexpr bool HasHeapObjectTag(Address value) {
1109
249k
    return (value & kHeapObjectTagMask) == static_cast<Address>(kHeapObjectTag);
1110
249k
  }
1111
1112
4
  V8_INLINE static constexpr int SmiValue(Address value) {
1113
4
    return PlatformSmiTagging::SmiToInt(value);
1114
4
  }
1115
1116
35
  V8_INLINE static constexpr Address AddressToSmi(Address value) {
1117
35
    return (value << (kSmiTagSize + PlatformSmiTagging::kSmiShiftSize)) |
1118
35
           kSmiTag;
1119
35
  }
1120
1121
0
  V8_INLINE static constexpr Address IntToSmi(int value) {
1122
0
    return AddressToSmi(static_cast<Address>(value));
1123
0
  }
1124
1125
  template <typename T,
1126
            typename std::enable_if_t<std::is_integral_v<T>>* = nullptr>
1127
0
  V8_INLINE static constexpr Address IntegralToSmi(T value) {
1128
0
    return AddressToSmi(static_cast<Address>(value));
1129
0
  }
Unexecuted instantiation: _ZN2v88internal9Internals13IntegralToSmiIsTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEEmS5_
Unexecuted instantiation: _ZN2v88internal9Internals13IntegralToSmiItTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEEmS5_
Unexecuted instantiation: _ZN2v88internal9Internals13IntegralToSmiIiTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEEmS5_
1130
1131
  template <typename T,
1132
            typename std::enable_if_t<std::is_integral_v<T>>* = nullptr>
1133
0
  V8_INLINE static constexpr bool IsValidSmi(T value) {
1134
0
    return PlatformSmiTagging::IsValidSmi(value);
1135
0
  }
Unexecuted instantiation: _ZN2v88internal9Internals10IsValidSmiIsTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEEbS5_
Unexecuted instantiation: _ZN2v88internal9Internals10IsValidSmiItTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEEbS5_
1136
1137
  template <typename T,
1138
            typename std::enable_if_t<std::is_integral_v<T>>* = nullptr>
1139
35
  static constexpr std::optional<Address> TryIntegralToSmi(T value) {
1140
35
    if (V8_LIKELY(PlatformSmiTagging::IsValidSmi(value))) {
1141
35
      return {AddressToSmi(static_cast<Address>(value))};
1142
35
    }
1143
0
    return {};
1144
35
  }
Unexecuted instantiation: _ZN2v88internal9Internals16TryIntegralToSmiIiTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEENS3_8optionalImEES5_
Unexecuted instantiation: _ZN2v88internal9Internals16TryIntegralToSmiIlTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEENS3_8optionalImEES5_
_ZN2v88internal9Internals16TryIntegralToSmiIjTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEENS3_8optionalImEES5_
Line
Count
Source
1139
35
  static constexpr std::optional<Address> TryIntegralToSmi(T value) {
1140
35
    if (V8_LIKELY(PlatformSmiTagging::IsValidSmi(value))) {
1141
35
      return {AddressToSmi(static_cast<Address>(value))};
1142
35
    }
1143
0
    return {};
1144
35
  }
Unexecuted instantiation: _ZN2v88internal9Internals16TryIntegralToSmiImTnPNSt3__19enable_ifIXsr3stdE13is_integral_vIT_EEvE4typeELPv0EEENS3_8optionalImEES5_
1145
1146
#if V8_STATIC_ROOTS_BOOL
1147
  V8_INLINE static bool is_identical(Address obj, Tagged_t constant) {
1148
    return static_cast<Tagged_t>(obj) == constant;
1149
  }
1150
1151
  V8_INLINE static bool CheckInstanceMapRange(Address obj, Tagged_t first_map,
1152
                                              Tagged_t last_map) {
1153
    auto map = ReadRawField<Tagged_t>(obj, kHeapObjectMapOffset);
1154
#ifdef V8_MAP_PACKING
1155
    map = UnpackMapWord(map);
1156
#endif
1157
    return map >= first_map && map <= last_map;
1158
  }
1159
#endif
1160
1161
249k
  V8_INLINE static int GetInstanceType(Address obj) {
1162
249k
    Address map = ReadTaggedPointerField(obj, kHeapObjectMapOffset);
1163
#ifdef V8_MAP_PACKING
1164
    map = UnpackMapWord(map);
1165
#endif
1166
249k
    return ReadRawField<uint16_t>(map, kMapInstanceTypeOffset);
1167
249k
  }
1168
1169
0
  V8_INLINE static Address LoadMap(Address obj) {
1170
0
    if (!HasHeapObjectTag(obj)) return kNullAddress;
1171
0
    Address map = ReadTaggedPointerField(obj, kHeapObjectMapOffset);
1172
0
#ifdef V8_MAP_PACKING
1173
0
    map = UnpackMapWord(map);
1174
0
#endif
1175
0
    return map;
1176
0
  }
1177
1178
4
  V8_INLINE static int GetOddballKind(Address obj) {
1179
4
    return SmiValue(ReadTaggedSignedField(obj, kOddballKindOffset));
1180
4
  }
1181
1182
0
  V8_INLINE static bool IsExternalTwoByteString(int instance_type) {
1183
0
    int representation = (instance_type & kStringRepresentationAndEncodingMask);
1184
0
    return representation == kExternalTwoByteRepresentationTag;
1185
0
  }
1186
1187
0
  V8_INLINE static constexpr bool CanHaveInternalField(int instance_type) {
1188
0
    static_assert(kJSObjectType + 1 == kFirstJSApiObjectType);
1189
0
    static_assert(kJSObjectType < kLastJSApiObjectType);
1190
0
    static_assert(kFirstJSApiObjectType < kLastJSApiObjectType);
1191
    // Check for IsJSObject() || IsJSSpecialApiObject() || IsJSApiObject()
1192
0
    return instance_type == kJSSpecialApiObjectType ||
1193
           // inlined version of base::IsInRange
1194
0
           (static_cast<unsigned>(static_cast<unsigned>(instance_type) -
1195
0
                                  static_cast<unsigned>(kJSObjectType)) <=
1196
0
            static_cast<unsigned>(kLastJSApiObjectType - kJSObjectType));
1197
0
  }
1198
1199
0
  V8_INLINE static uint8_t GetNodeFlag(Address* obj, int shift) {
1200
0
    uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + kNodeFlagsOffset;
1201
0
    return *addr & static_cast<uint8_t>(1U << shift);
1202
0
  }
1203
1204
0
  V8_INLINE static void UpdateNodeFlag(Address* obj, bool value, int shift) {
1205
0
    uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + kNodeFlagsOffset;
1206
0
    uint8_t mask = static_cast<uint8_t>(1U << shift);
1207
0
    *addr = static_cast<uint8_t>((*addr & ~mask) | (value << shift));
1208
0
  }
1209
1210
560
  V8_INLINE static uint8_t GetNodeState(Address* obj) {
1211
560
    uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + kNodeFlagsOffset;
1212
560
    return *addr & kNodeStateMask;
1213
560
  }
1214
1215
0
  V8_INLINE static void UpdateNodeState(Address* obj, uint8_t value) {
1216
0
    uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + kNodeFlagsOffset;
1217
0
    *addr = static_cast<uint8_t>((*addr & ~kNodeStateMask) | value);
1218
0
  }
1219
1220
  V8_INLINE static void SetEmbedderData(v8::Isolate* isolate, uint32_t slot,
1221
0
                                        void* data) {
1222
0
    Address addr = reinterpret_cast<Address>(isolate) +
1223
0
                   kIsolateEmbedderDataOffset + slot * kApiSystemPointerSize;
1224
0
    *reinterpret_cast<void**>(addr) = data;
1225
0
  }
1226
1227
  V8_INLINE static void* GetEmbedderData(const v8::Isolate* isolate,
1228
0
                                         uint32_t slot) {
1229
0
    Address addr = reinterpret_cast<Address>(isolate) +
1230
0
                   kIsolateEmbedderDataOffset + slot * kApiSystemPointerSize;
1231
0
    return *reinterpret_cast<void* const*>(addr);
1232
0
  }
1233
1234
8.30M
  V8_INLINE static HandleScopeData* GetHandleScopeData(v8::Isolate* isolate) {
1235
8.30M
    Address addr =
1236
8.30M
        reinterpret_cast<Address>(isolate) + kIsolateHandleScopeDataOffset;
1237
8.30M
    return reinterpret_cast<HandleScopeData*>(addr);
1238
8.30M
  }
1239
1240
0
  V8_INLINE static void IncrementLongTasksStatsCounter(v8::Isolate* isolate) {
1241
0
    Address addr =
1242
0
        reinterpret_cast<Address>(isolate) + kIsolateLongTaskStatsCounterOffset;
1243
0
    ++(*reinterpret_cast<size_t*>(addr));
1244
0
  }
1245
1246
11.1k
  V8_INLINE static Address* GetRootSlot(v8::Isolate* isolate, int index) {
1247
11.1k
    Address addr = reinterpret_cast<Address>(isolate) + kIsolateRootsOffset +
1248
11.1k
                   index * kApiSystemPointerSize;
1249
11.1k
    return reinterpret_cast<Address*>(addr);
1250
11.1k
  }
1251
1252
70
  V8_INLINE static Address GetRoot(v8::Isolate* isolate, int index) {
1253
#if V8_STATIC_ROOTS_BOOL
1254
    Address base = *reinterpret_cast<Address*>(
1255
        reinterpret_cast<uintptr_t>(isolate) + kIsolateCageBaseOffset);
1256
    switch (index) {
1257
#define DECOMPRESS_ROOT(name, ...) \
1258
  case k##name##RootIndex:         \
1259
    return base + StaticReadOnlyRoot::k##name;
1260
      EXPORTED_STATIC_ROOTS_PTR_LIST(DECOMPRESS_ROOT)
1261
#undef DECOMPRESS_ROOT
1262
#undef EXPORTED_STATIC_ROOTS_PTR_LIST
1263
      default:
1264
        break;
1265
    }
1266
#endif  // V8_STATIC_ROOTS_BOOL
1267
70
    return *GetRootSlot(isolate, index);
1268
70
  }
1269
1270
#ifdef V8_ENABLE_SANDBOX
1271
  V8_INLINE static Address* GetExternalPointerTableBase(v8::Isolate* isolate) {
1272
    Address addr = reinterpret_cast<Address>(isolate) +
1273
                   kIsolateExternalPointerTableOffset +
1274
                   kExternalPointerTableBasePointerOffset;
1275
    return *reinterpret_cast<Address**>(addr);
1276
  }
1277
1278
  V8_INLINE static Address* GetSharedExternalPointerTableBase(
1279
      v8::Isolate* isolate) {
1280
    Address addr = reinterpret_cast<Address>(isolate) +
1281
                   kIsolateSharedExternalPointerTableAddressOffset;
1282
    addr = *reinterpret_cast<Address*>(addr);
1283
    addr += kExternalPointerTableBasePointerOffset;
1284
    return *reinterpret_cast<Address**>(addr);
1285
  }
1286
#endif
1287
1288
  template <typename T>
1289
10.6M
  V8_INLINE static T ReadRawField(Address heap_object_ptr, int offset) {
1290
10.6M
    Address addr = heap_object_ptr + offset - kHeapObjectTag;
1291
#ifdef V8_COMPRESS_POINTERS
1292
    if constexpr (sizeof(T) > kApiTaggedSize) {
1293
      // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
1294
      // fields (external pointers, doubles and BigInt data) are only
1295
      // kTaggedSize aligned so we have to use unaligned pointer friendly way of
1296
      // accessing them in order to avoid undefined behavior in C++ code.
1297
      T r;
1298
      memcpy(&r, reinterpret_cast<void*>(addr), sizeof(T));
1299
      return r;
1300
    }
1301
#endif
1302
10.6M
    return *reinterpret_cast<const T*>(addr);
1303
10.6M
  }
unsigned short v8::internal::Internals::ReadRawField<unsigned short>(unsigned long, int)
Line
Count
Source
1289
249k
  V8_INLINE static T ReadRawField(Address heap_object_ptr, int offset) {
1290
249k
    Address addr = heap_object_ptr + offset - kHeapObjectTag;
1291
#ifdef V8_COMPRESS_POINTERS
1292
    if constexpr (sizeof(T) > kApiTaggedSize) {
1293
      // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
1294
      // fields (external pointers, doubles and BigInt data) are only
1295
      // kTaggedSize aligned so we have to use unaligned pointer friendly way of
1296
      // accessing them in order to avoid undefined behavior in C++ code.
1297
      T r;
1298
      memcpy(&r, reinterpret_cast<void*>(addr), sizeof(T));
1299
      return r;
1300
    }
1301
#endif
1302
249k
    return *reinterpret_cast<const T*>(addr);
1303
249k
  }
unsigned long v8::internal::Internals::ReadRawField<unsigned long>(unsigned long, int)
Line
Count
Source
1289
10.3M
  V8_INLINE static T ReadRawField(Address heap_object_ptr, int offset) {
1290
10.3M
    Address addr = heap_object_ptr + offset - kHeapObjectTag;
1291
#ifdef V8_COMPRESS_POINTERS
1292
    if constexpr (sizeof(T) > kApiTaggedSize) {
1293
      // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size
1294
      // fields (external pointers, doubles and BigInt data) are only
1295
      // kTaggedSize aligned so we have to use unaligned pointer friendly way of
1296
      // accessing them in order to avoid undefined behavior in C++ code.
1297
      T r;
1298
      memcpy(&r, reinterpret_cast<void*>(addr), sizeof(T));
1299
      return r;
1300
    }
1301
#endif
1302
10.3M
    return *reinterpret_cast<const T*>(addr);
1303
10.3M
  }
1304
1305
  V8_INLINE static Address ReadTaggedPointerField(Address heap_object_ptr,
1306
5.30M
                                                  int offset) {
1307
#ifdef V8_COMPRESS_POINTERS
1308
    uint32_t value = ReadRawField<uint32_t>(heap_object_ptr, offset);
1309
    Address base = GetPtrComprCageBaseFromOnHeapAddress(heap_object_ptr);
1310
    return base + static_cast<Address>(static_cast<uintptr_t>(value));
1311
#else
1312
5.30M
    return ReadRawField<Address>(heap_object_ptr, offset);
1313
5.30M
#endif
1314
5.30M
  }
1315
1316
  V8_INLINE static Address ReadTaggedSignedField(Address heap_object_ptr,
1317
4
                                                 int offset) {
1318
#ifdef V8_COMPRESS_POINTERS
1319
    uint32_t value = ReadRawField<uint32_t>(heap_object_ptr, offset);
1320
    return static_cast<Address>(static_cast<uintptr_t>(value));
1321
#else
1322
4
    return ReadRawField<Address>(heap_object_ptr, offset);
1323
4
#endif
1324
4
  }
1325
1326
  // Returns v8::Isolate::Current(), but without needing to include the
1327
  // v8-isolate.h header.
1328
  V8_EXPORT static v8::Isolate* GetCurrentIsolate();
1329
1330
5.05M
  V8_INLINE static v8::Isolate* GetCurrentIsolateForSandbox() {
1331
#ifdef V8_ENABLE_SANDBOX
1332
    return GetCurrentIsolate();
1333
#else
1334
    // Not used in non-sandbox mode.
1335
5.05M
    return nullptr;
1336
5.05M
#endif
1337
5.05M
  }
1338
1339
  template <ExternalPointerTagRange tag_range>
1340
  V8_INLINE static Address ReadExternalPointerField(v8::Isolate* isolate,
1341
                                                    Address heap_object_ptr,
1342
0
                                                    int offset) {
1343
#ifdef V8_ENABLE_SANDBOX
1344
    static_assert(!tag_range.IsEmpty());
1345
    // See src/sandbox/external-pointer-table.h. Logic duplicated here so
1346
    // it can be inlined and doesn't require an additional call.
1347
    Address* table = IsSharedExternalPointerType(tag_range)
1348
                         ? GetSharedExternalPointerTableBase(isolate)
1349
                         : GetExternalPointerTableBase(isolate);
1350
    internal::ExternalPointerHandle handle =
1351
        ReadRawField<ExternalPointerHandle>(heap_object_ptr, offset);
1352
    uint32_t index = handle >> kExternalPointerIndexShift;
1353
    std::atomic<Address>* ptr =
1354
        reinterpret_cast<std::atomic<Address>*>(&table[index]);
1355
    Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed);
1356
    ExternalPointerTag actual_tag = static_cast<ExternalPointerTag>(
1357
        (entry & kExternalPointerTagMask) >> kExternalPointerTagShift);
1358
    if (V8_LIKELY(tag_range.Contains(actual_tag))) {
1359
      return entry & kExternalPointerPayloadMask;
1360
    } else {
1361
      return 0;
1362
    }
1363
    return entry;
1364
#else
1365
0
    return ReadRawField<Address>(heap_object_ptr, offset);
1366
0
#endif  // V8_ENABLE_SANDBOX
1367
0
  }
1368
1369
  V8_INLINE static Address ReadExternalPointerField(
1370
      v8::Isolate* isolate, Address heap_object_ptr, int offset,
1371
5.05M
      ExternalPointerTagRange tag_range) {
1372
#ifdef V8_ENABLE_SANDBOX
1373
    // See src/sandbox/external-pointer-table.h. Logic duplicated here so
1374
    // it can be inlined and doesn't require an additional call.
1375
    Address* table = IsSharedExternalPointerType(tag_range)
1376
                         ? GetSharedExternalPointerTableBase(isolate)
1377
                         : GetExternalPointerTableBase(isolate);
1378
    internal::ExternalPointerHandle handle =
1379
        ReadRawField<ExternalPointerHandle>(heap_object_ptr, offset);
1380
    uint32_t index = handle >> kExternalPointerIndexShift;
1381
    std::atomic<Address>* ptr =
1382
        reinterpret_cast<std::atomic<Address>*>(&table[index]);
1383
    Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed);
1384
    ExternalPointerTag actual_tag = static_cast<ExternalPointerTag>(
1385
        (entry & kExternalPointerTagMask) >> kExternalPointerTagShift);
1386
    if (V8_LIKELY(tag_range.Contains(actual_tag))) {
1387
      return entry & kExternalPointerPayloadMask;
1388
    } else {
1389
      return 0;
1390
    }
1391
    return entry;
1392
#else
1393
5.05M
    return ReadRawField<Address>(heap_object_ptr, offset);
1394
5.05M
#endif  // V8_ENABLE_SANDBOX
1395
5.05M
  }
1396
1397
#ifdef V8_COMPRESS_POINTERS
1398
  V8_INLINE static Address GetPtrComprCageBaseFromOnHeapAddress(Address addr) {
1399
    return addr & -static_cast<intptr_t>(kPtrComprCageBaseAlignment);
1400
  }
1401
1402
  V8_INLINE static uint32_t CompressTagged(Address value) {
1403
    return static_cast<uint32_t>(value);
1404
  }
1405
1406
  V8_INLINE static Address DecompressTaggedField(Address heap_object_ptr,
1407
                                                 uint32_t value) {
1408
    Address base = GetPtrComprCageBaseFromOnHeapAddress(heap_object_ptr);
1409
    return base + static_cast<Address>(static_cast<uintptr_t>(value));
1410
  }
1411
1412
#endif  // V8_COMPRESS_POINTERS
1413
};
1414
1415
// Only perform cast check for types derived from v8::Data since
1416
// other types do not implement the Cast method.
1417
template <bool PerformCheck>
1418
struct CastCheck {
1419
  template <class T>
1420
  static void Perform(T* data);
1421
};
1422
1423
template <>
1424
template <class T>
1425
0
void CastCheck<true>::Perform(T* data) {
1426
0
  T::Cast(data);
1427
0
}
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Private>(v8::Private*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Symbol>(v8::Symbol*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::String>(v8::String*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::DictionaryTemplate>(v8::DictionaryTemplate*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::FunctionTemplate>(v8::FunctionTemplate*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::ObjectTemplate>(v8::ObjectTemplate*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Uint32Array>(v8::Uint32Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Uint8Array>(v8::Uint8Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Float64Array>(v8::Float64Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Array>(v8::Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Object>(v8::Object*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Int32Array>(v8::Int32Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::BigInt64Array>(v8::BigInt64Array*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Function>(v8::Function*)
Unexecuted instantiation: void v8::internal::CastCheck<true>::Perform<v8::Context>(v8::Context*)
1428
1429
template <>
1430
template <class T>
1431
void CastCheck<false>::Perform(T* data) {}
1432
1433
template <class T>
1434
0
V8_INLINE void PerformCastCheck(T* data) {
1435
0
  CastCheck<std::is_base_of_v<Data, T> &&
1436
0
            !std::is_same_v<Data, std::remove_cv_t<T>>>::Perform(data);
1437
0
}
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Private>(v8::Private*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Symbol>(v8::Symbol*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::String>(v8::String*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::DictionaryTemplate>(v8::DictionaryTemplate*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::FunctionTemplate>(v8::FunctionTemplate*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::ObjectTemplate>(v8::ObjectTemplate*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Uint32Array>(v8::Uint32Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Uint8Array>(v8::Uint8Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Float64Array>(v8::Float64Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Array>(v8::Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Object>(v8::Object*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Int32Array>(v8::Int32Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::BigInt64Array>(v8::BigInt64Array*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Function>(v8::Function*)
Unexecuted instantiation: void v8::internal::PerformCastCheck<v8::Context>(v8::Context*)
1438
1439
// A base class for backing stores, which is needed due to vagaries of
1440
// how static casts work with std::shared_ptr.
1441
class BackingStoreBase {};
1442
1443
// The maximum value in enum GarbageCollectionReason, defined in heap.h.
1444
// This is needed for histograms sampling garbage collection reasons.
1445
constexpr int kGarbageCollectionReasonMaxValue = 30;
1446
1447
// Base class for the address block allocator compatible with standard
1448
// containers, which registers its allocated range as strong roots.
1449
class V8_EXPORT StrongRootAllocatorBase {
1450
 public:
1451
0
  Heap* heap() const { return heap_; }
1452
1453
  friend bool operator==(const StrongRootAllocatorBase& a,
1454
0
                         const StrongRootAllocatorBase& b) {
1455
0
    // TODO(pkasting): Replace this body with `= default` after dropping support
1456
0
    // for old gcc versions.
1457
0
    return a.heap_ == b.heap_;
1458
0
  }
1459
1460
 protected:
1461
0
  explicit StrongRootAllocatorBase(Heap* heap) : heap_(heap) {}
1462
  explicit StrongRootAllocatorBase(LocalHeap* heap);
1463
  explicit StrongRootAllocatorBase(Isolate* isolate);
1464
  explicit StrongRootAllocatorBase(v8::Isolate* isolate);
1465
  explicit StrongRootAllocatorBase(LocalIsolate* isolate);
1466
1467
  // Allocate/deallocate a range of n elements of type internal::Address.
1468
  Address* allocate_impl(size_t n);
1469
  void deallocate_impl(Address* p, size_t n) noexcept;
1470
1471
 private:
1472
  Heap* heap_;
1473
};
1474
1475
// The general version of this template behaves just as std::allocator, with
1476
// the exception that the constructor takes the isolate as parameter. Only
1477
// specialized versions, e.g., internal::StrongRootAllocator<internal::Address>
1478
// and internal::StrongRootAllocator<v8::Local<T>> register the allocated range
1479
// as strong roots.
1480
template <typename T>
1481
class StrongRootAllocator : private std::allocator<T> {
1482
 public:
1483
  using value_type = T;
1484
1485
  template <typename HeapOrIsolateT>
1486
  explicit StrongRootAllocator(HeapOrIsolateT*) {}
1487
  template <typename U>
1488
  StrongRootAllocator(const StrongRootAllocator<U>& other) noexcept {}
1489
1490
  using std::allocator<T>::allocate;
1491
  using std::allocator<T>::deallocate;
1492
};
1493
1494
// TODO(pkasting): Replace with `requires` clauses after dropping support for
1495
// old gcc versions.
1496
template <typename Iterator, typename = void>
1497
inline constexpr bool kHaveIteratorConcept = false;
1498
template <typename Iterator>
1499
inline constexpr bool kHaveIteratorConcept<
1500
    Iterator, std::void_t<typename Iterator::iterator_concept>> = true;
1501
1502
template <typename Iterator, typename = void>
1503
inline constexpr bool kHaveIteratorCategory = false;
1504
template <typename Iterator>
1505
inline constexpr bool kHaveIteratorCategory<
1506
    Iterator, std::void_t<typename Iterator::iterator_category>> = true;
1507
1508
// Helper struct that contains an `iterator_concept` type alias only when either
1509
// `Iterator` or `std::iterator_traits<Iterator>` do.
1510
// Default: no alias.
1511
template <typename Iterator, typename = void>
1512
struct MaybeDefineIteratorConcept {};
1513
// Use `Iterator::iterator_concept` if available.
1514
template <typename Iterator>
1515
struct MaybeDefineIteratorConcept<
1516
    Iterator, std::enable_if_t<kHaveIteratorConcept<Iterator>>> {
1517
  using iterator_concept = typename Iterator::iterator_concept;
1518
};
1519
// Otherwise fall back to `std::iterator_traits<Iterator>` if possible.
1520
template <typename Iterator>
1521
struct MaybeDefineIteratorConcept<
1522
    Iterator, std::enable_if_t<kHaveIteratorCategory<Iterator> &&
1523
                               !kHaveIteratorConcept<Iterator>>> {
1524
  // There seems to be no feature-test macro covering this, so use the
1525
  // presence of `<ranges>` as a crude proxy, since it was added to the
1526
  // standard as part of the Ranges papers.
1527
  // TODO(pkasting): Add this unconditionally after dropping support for old
1528
  // libstdc++ versions.
1529
#if __has_include(<ranges>)
1530
  using iterator_concept =
1531
      typename std::iterator_traits<Iterator>::iterator_concept;
1532
#endif
1533
};
1534
1535
// A class of iterators that wrap some different iterator type.
1536
// If specified, ElementType is the type of element accessed by the wrapper
1537
// iterator; in this case, the actual reference and pointer types of Iterator
1538
// must be convertible to ElementType& and ElementType*, respectively.
1539
template <typename Iterator, typename ElementType = void>
1540
class WrappedIterator : public MaybeDefineIteratorConcept<Iterator> {
1541
 public:
1542
  static_assert(
1543
      std::is_void_v<ElementType> ||
1544
      (std::is_convertible_v<typename std::iterator_traits<Iterator>::pointer,
1545
                             std::add_pointer_t<ElementType>> &&
1546
       std::is_convertible_v<typename std::iterator_traits<Iterator>::reference,
1547
                             std::add_lvalue_reference_t<ElementType>>));
1548
1549
  using difference_type =
1550
      typename std::iterator_traits<Iterator>::difference_type;
1551
  using value_type =
1552
      std::conditional_t<std::is_void_v<ElementType>,
1553
                         typename std::iterator_traits<Iterator>::value_type,
1554
                         ElementType>;
1555
  using pointer =
1556
      std::conditional_t<std::is_void_v<ElementType>,
1557
                         typename std::iterator_traits<Iterator>::pointer,
1558
                         std::add_pointer_t<ElementType>>;
1559
  using reference =
1560
      std::conditional_t<std::is_void_v<ElementType>,
1561
                         typename std::iterator_traits<Iterator>::reference,
1562
                         std::add_lvalue_reference_t<ElementType>>;
1563
  using iterator_category =
1564
      typename std::iterator_traits<Iterator>::iterator_category;
1565
1566
  constexpr WrappedIterator() noexcept = default;
1567
0
  constexpr explicit WrappedIterator(Iterator it) noexcept : it_(it) {}
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >::WrappedIterator(std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>)
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::String>*>, v8::Local<v8::String> >::WrappedIterator(std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::String>*>)
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Value>*>, v8::Local<v8::Value> >::WrappedIterator(std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Value>*>)
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::WrappedIterator(std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>)
1568
1569
  // TODO(pkasting): Switch to `requires` and concepts after dropping support
1570
  // for old gcc and libstdc++ versions.
1571
  template <typename OtherIterator, typename OtherElementType,
1572
            typename = std::enable_if_t<
1573
                std::is_convertible_v<OtherIterator, Iterator>>>
1574
  constexpr WrappedIterator(
1575
      const WrappedIterator<OtherIterator, OtherElementType>& other) noexcept
1576
      : it_(other.base()) {}
1577
1578
0
  [[nodiscard]] constexpr reference operator*() const noexcept { return *it_; }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >::operator*() const
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator*() const
1579
0
  [[nodiscard]] constexpr pointer operator->() const noexcept {
1580
    if constexpr (std::is_pointer_v<Iterator>) {
1581
      return it_;
1582
0
    } else {
1583
0
      return it_.operator->();
1584
0
    }
1585
0
  }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::String>*>, v8::Local<v8::String> >::operator->() const
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator->() const
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Value>*>, v8::Local<v8::Value> >::operator->() const
1586
1587
  template <typename OtherIterator, typename OtherElementType>
1588
  [[nodiscard]] constexpr bool operator==(
1589
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1590
0
      const noexcept {
1591
0
    return it_ == other.base();
1592
0
  }
Unexecuted instantiation: bool v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >::operator==<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >(v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> > const&) const
Unexecuted instantiation: bool v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator==<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >(v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> > const&) const
1593
#if V8_HAVE_SPACESHIP_OPERATOR
1594
  template <typename OtherIterator, typename OtherElementType>
1595
  [[nodiscard]] constexpr auto operator<=>(
1596
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1597
      const noexcept {
1598
    if constexpr (std::three_way_comparable_with<Iterator, OtherIterator>) {
1599
      return it_ <=> other.base();
1600
    } else if constexpr (std::totally_ordered_with<Iterator, OtherIterator>) {
1601
      if (it_ < other.base()) {
1602
        return std::strong_ordering::less;
1603
      }
1604
      return (it_ > other.base()) ? std::strong_ordering::greater
1605
                                  : std::strong_ordering::equal;
1606
    } else {
1607
      if (it_ < other.base()) {
1608
        return std::partial_ordering::less;
1609
      }
1610
      if (other.base() < it_) {
1611
        return std::partial_ordering::greater;
1612
      }
1613
      return (it_ == other.base()) ? std::partial_ordering::equivalent
1614
                                   : std::partial_ordering::unordered;
1615
    }
1616
  }
1617
#else
1618
  // Assume that if spaceship isn't present, operator rewriting might not be
1619
  // either.
1620
  template <typename OtherIterator, typename OtherElementType>
1621
  [[nodiscard]] constexpr bool operator!=(
1622
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1623
      const noexcept {
1624
    return it_ != other.base();
1625
  }
1626
1627
  template <typename OtherIterator, typename OtherElementType>
1628
  [[nodiscard]] constexpr bool operator<(
1629
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1630
      const noexcept {
1631
    return it_ < other.base();
1632
  }
1633
  template <typename OtherIterator, typename OtherElementType>
1634
  [[nodiscard]] constexpr bool operator<=(
1635
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1636
      const noexcept {
1637
    return it_ <= other.base();
1638
  }
1639
  template <typename OtherIterator, typename OtherElementType>
1640
  [[nodiscard]] constexpr bool operator>(
1641
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1642
      const noexcept {
1643
    return it_ > other.base();
1644
  }
1645
  template <typename OtherIterator, typename OtherElementType>
1646
  [[nodiscard]] constexpr bool operator>=(
1647
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1648
      const noexcept {
1649
    return it_ >= other.base();
1650
  }
1651
#endif
1652
1653
0
  constexpr WrappedIterator& operator++() noexcept {
1654
0
    ++it_;
1655
0
    return *this;
1656
0
  }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >::operator++()
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator++()
1657
  constexpr WrappedIterator operator++(int) noexcept {
1658
    WrappedIterator result(*this);
1659
    ++(*this);
1660
    return result;
1661
  }
1662
1663
  constexpr WrappedIterator& operator--() noexcept {
1664
    --it_;
1665
    return *this;
1666
  }
1667
  constexpr WrappedIterator operator--(int) noexcept {
1668
    WrappedIterator result(*this);
1669
    --(*this);
1670
    return result;
1671
  }
1672
  [[nodiscard]] constexpr WrappedIterator operator+(
1673
0
      difference_type n) const noexcept {
1674
0
    WrappedIterator result(*this);
1675
0
    result += n;
1676
0
    return result;
1677
0
  }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator+(long) const
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Value>*>, v8::Local<v8::Value> >::operator+(long) const
1678
  [[nodiscard]] friend constexpr WrappedIterator operator+(
1679
      difference_type n, const WrappedIterator& x) noexcept {
1680
    return x + n;
1681
  }
1682
0
  constexpr WrappedIterator& operator+=(difference_type n) noexcept {
1683
0
    it_ += n;
1684
0
    return *this;
1685
0
  }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::operator+=(long)
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Value>*>, v8::Local<v8::Value> >::operator+=(long)
1686
  [[nodiscard]] constexpr WrappedIterator operator-(
1687
      difference_type n) const noexcept {
1688
    return *this + -n;
1689
  }
1690
  constexpr WrappedIterator& operator-=(difference_type n) noexcept {
1691
    return *this += -n;
1692
  }
1693
  template <typename OtherIterator, typename OtherElementType>
1694
  [[nodiscard]] constexpr auto operator-(
1695
      const WrappedIterator<OtherIterator, OtherElementType>& other)
1696
0
      const noexcept {
1697
0
    return it_ - other.base();
1698
0
  }
1699
  [[nodiscard]] constexpr reference operator[](
1700
      difference_type n) const noexcept {
1701
    return it_[n];
1702
  }
1703
1704
0
  [[nodiscard]] constexpr const Iterator& base() const noexcept { return it_; }
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::Message>*>, v8::Local<v8::Message> >::base() const
Unexecuted instantiation: v8::internal::WrappedIterator<std::__1::__wrap_iter<v8::internal::LocalUnchecked<v8::ArrayBuffer>*>, v8::Local<v8::ArrayBuffer> >::base() const
1705
1706
 private:
1707
  Iterator it_;
1708
};
1709
1710
// Helper functions about values contained in handles.
1711
// A value is either an indirect pointer or a direct pointer, depending on
1712
// whether direct local support is enabled.
1713
class ValueHelper final {
1714
 public:
1715
  // ValueHelper::InternalRepresentationType is an abstract type that
1716
  // corresponds to the internal representation of v8::Local and essentially
1717
  // to what T* really is (these two are always in sync). This type is used in
1718
  // methods like GetDataFromSnapshotOnce that need access to a handle's
1719
  // internal representation. In particular, if `x` is a `v8::Local<T>`, then
1720
  // `v8::Local<T>::FromRepr(x.repr())` gives exactly the same handle as `x`.
1721
#ifdef V8_ENABLE_DIRECT_HANDLE
1722
  static constexpr Address kTaggedNullAddress = 1;
1723
1724
  using InternalRepresentationType = internal::Address;
1725
  static constexpr InternalRepresentationType kEmpty = kTaggedNullAddress;
1726
#else
1727
  using InternalRepresentationType = internal::Address*;
1728
  static constexpr InternalRepresentationType kEmpty = nullptr;
1729
#endif  // V8_ENABLE_DIRECT_HANDLE
1730
1731
  template <typename T>
1732
1.55M
  V8_INLINE static bool IsEmpty(T* value) {
1733
1.55M
    return ValueAsRepr(value) == kEmpty;
1734
1.55M
  }
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Data>(v8::Data*)
bool v8::internal::ValueHelper::IsEmpty<v8::Context>(v8::Context*)
Line
Count
Source
1732
35.7k
  V8_INLINE static bool IsEmpty(T* value) {
1733
35.7k
    return ValueAsRepr(value) == kEmpty;
1734
35.7k
  }
bool v8::internal::ValueHelper::IsEmpty<v8::Function>(v8::Function*)
Line
Count
Source
1732
875
  V8_INLINE static bool IsEmpty(T* value) {
1733
875
    return ValueAsRepr(value) == kEmpty;
1734
875
  }
bool v8::internal::ValueHelper::IsEmpty<v8::Object>(v8::Object*)
Line
Count
Source
1732
840
  V8_INLINE static bool IsEmpty(T* value) {
1733
840
    return ValueAsRepr(value) == kEmpty;
1734
840
  }
bool v8::internal::ValueHelper::IsEmpty<v8::Value>(v8::Value*)
Line
Count
Source
1732
1.51M
  V8_INLINE static bool IsEmpty(T* value) {
1733
1.51M
    return ValueAsRepr(value) == kEmpty;
1734
1.51M
  }
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Int8Array>(v8::Int8Array*)
bool v8::internal::ValueHelper::IsEmpty<v8::Uint8Array>(v8::Uint8Array*)
Line
Count
Source
1732
245
  V8_INLINE static bool IsEmpty(T* value) {
1733
245
    return ValueAsRepr(value) == kEmpty;
1734
245
  }
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Int16Array>(v8::Int16Array*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Uint16Array>(v8::Uint16Array*)
bool v8::internal::ValueHelper::IsEmpty<v8::Int32Array>(v8::Int32Array*)
Line
Count
Source
1732
175
  V8_INLINE static bool IsEmpty(T* value) {
1733
175
    return ValueAsRepr(value) == kEmpty;
1734
175
  }
bool v8::internal::ValueHelper::IsEmpty<v8::Uint32Array>(v8::Uint32Array*)
Line
Count
Source
1732
490
  V8_INLINE static bool IsEmpty(T* value) {
1733
490
    return ValueAsRepr(value) == kEmpty;
1734
490
  }
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Float32Array>(v8::Float32Array*)
bool v8::internal::ValueHelper::IsEmpty<v8::Float64Array>(v8::Float64Array*)
Line
Count
Source
1732
350
  V8_INLINE static bool IsEmpty(T* value) {
1733
350
    return ValueAsRepr(value) == kEmpty;
1734
350
  }
bool v8::internal::ValueHelper::IsEmpty<v8::BigInt64Array>(v8::BigInt64Array*)
Line
Count
Source
1732
140
  V8_INLINE static bool IsEmpty(T* value) {
1733
140
    return ValueAsRepr(value) == kEmpty;
1734
140
  }
bool v8::internal::ValueHelper::IsEmpty<v8::Array>(v8::Array*)
Line
Count
Source
1732
35
  V8_INLINE static bool IsEmpty(T* value) {
1733
35
    return ValueAsRepr(value) == kEmpty;
1734
35
  }
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Module>(v8::Module*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::ArrayBuffer>(v8::ArrayBuffer*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::UnboundScript>(v8::UnboundScript*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Promise>(v8::Promise*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Promise::Resolver>(v8::Promise::Resolver*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::SharedArrayBuffer>(v8::SharedArrayBuffer*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::RegExp>(v8::RegExp*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::WasmMemoryObject>(v8::WasmMemoryObject*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::Map>(v8::Map*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::ArrayBufferView>(v8::ArrayBufferView*)
Unexecuted instantiation: bool v8::internal::ValueHelper::IsEmpty<v8::FunctionTemplate>(v8::FunctionTemplate*)
1735
1736
  // Returns a handle's "value" for all kinds of abstract handles. For Local,
1737
  // it is equivalent to `*handle`. The variadic parameters support handle
1738
  // types with extra type parameters, like `Persistent<T, M>`.
1739
  template <template <typename T, typename... Ms> typename H, typename T,
1740
            typename... Ms>
1741
  V8_INLINE static T* HandleAsValue(const H<T, Ms...>& handle) {
1742
    return handle.template value<T>();
1743
  }
1744
1745
#ifdef V8_ENABLE_DIRECT_HANDLE
1746
1747
  template <typename T>
1748
  V8_INLINE static Address ValueAsAddress(const T* value) {
1749
    return reinterpret_cast<Address>(value);
1750
  }
1751
1752
  template <typename T, bool check_null = true, typename S>
1753
  V8_INLINE static T* SlotAsValue(S* slot) {
1754
    if (check_null && slot == nullptr) {
1755
      return reinterpret_cast<T*>(kTaggedNullAddress);
1756
    }
1757
    return *reinterpret_cast<T**>(slot);
1758
  }
1759
1760
  template <typename T>
1761
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1762
    return reinterpret_cast<InternalRepresentationType>(value);
1763
  }
1764
1765
  template <typename T>
1766
  V8_INLINE static T* ReprAsValue(InternalRepresentationType repr) {
1767
    return reinterpret_cast<T*>(repr);
1768
  }
1769
1770
#else  // !V8_ENABLE_DIRECT_HANDLE
1771
1772
  template <typename T>
1773
6.86M
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
6.86M
    return *reinterpret_cast<const Address*>(value);
1775
6.86M
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Value>(v8::Value const*)
Line
Count
Source
1773
1.76M
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
1.76M
    return *reinterpret_cast<const Address*>(value);
1775
1.76M
  }
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Data>(v8::Data const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::String>(v8::String const*)
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Object>(v8::Object const*)
Line
Count
Source
1773
840
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
840
    return *reinterpret_cast<const Address*>(value);
1775
840
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Context>(v8::Context const*)
Line
Count
Source
1773
5.09M
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
5.09M
    return *reinterpret_cast<const Address*>(value);
1775
5.09M
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Function>(v8::Function const*)
Line
Count
Source
1773
875
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
875
    return *reinterpret_cast<const Address*>(value);
1775
875
  }
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Int8Array>(v8::Int8Array const*)
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Uint8Array>(v8::Uint8Array const*)
Line
Count
Source
1773
245
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
245
    return *reinterpret_cast<const Address*>(value);
1775
245
  }
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Int16Array>(v8::Int16Array const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Uint16Array>(v8::Uint16Array const*)
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Int32Array>(v8::Int32Array const*)
Line
Count
Source
1773
175
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
175
    return *reinterpret_cast<const Address*>(value);
1775
175
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Uint32Array>(v8::Uint32Array const*)
Line
Count
Source
1773
490
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
490
    return *reinterpret_cast<const Address*>(value);
1775
490
  }
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Float32Array>(v8::Float32Array const*)
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Float64Array>(v8::Float64Array const*)
Line
Count
Source
1773
350
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
350
    return *reinterpret_cast<const Address*>(value);
1775
350
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::BigInt64Array>(v8::BigInt64Array const*)
Line
Count
Source
1773
140
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
140
    return *reinterpret_cast<const Address*>(value);
1775
140
  }
unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Array>(v8::Array const*)
Line
Count
Source
1773
35
  V8_INLINE static Address ValueAsAddress(const T* value) {
1774
35
    return *reinterpret_cast<const Address*>(value);
1775
35
  }
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Private>(v8::Private const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Symbol>(v8::Symbol const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::DictionaryTemplate>(v8::DictionaryTemplate const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::FunctionTemplate>(v8::FunctionTemplate const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::ObjectTemplate>(v8::ObjectTemplate const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Module>(v8::Module const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::ArrayBuffer>(v8::ArrayBuffer const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::UnboundScript>(v8::UnboundScript const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Promise>(v8::Promise const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Promise::Resolver>(v8::Promise::Resolver const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::SharedArrayBuffer>(v8::SharedArrayBuffer const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::RegExp>(v8::RegExp const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::WasmMemoryObject>(v8::WasmMemoryObject const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::Map>(v8::Map const*)
Unexecuted instantiation: unsigned long v8::internal::ValueHelper::ValueAsAddress<v8::ArrayBufferView>(v8::ArrayBufferView const*)
1776
1777
  template <typename T, bool check_null = true, typename S>
1778
12.1M
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
12.1M
    return reinterpret_cast<T*>(slot);
1780
12.1M
  }
v8::Value* v8::internal::ValueHelper::SlotAsValue<v8::Value, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
1.64M
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
1.64M
    return reinterpret_cast<T*>(slot);
1780
1.64M
  }
Unexecuted instantiation: v8::Data* v8::internal::ValueHelper::SlotAsValue<v8::Data, false, unsigned long>(unsigned long*)
v8::Object* v8::internal::ValueHelper::SlotAsValue<v8::Object, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
319k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
319k
    return reinterpret_cast<T*>(slot);
1780
319k
  }
v8::Context* v8::internal::ValueHelper::SlotAsValue<v8::Context, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
8.43M
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
8.43M
    return reinterpret_cast<T*>(slot);
1780
8.43M
  }
Unexecuted instantiation: v8::Date* v8::internal::ValueHelper::SlotAsValue<v8::Date, false, unsigned long>(unsigned long*)
v8::FunctionTemplate* v8::internal::ValueHelper::SlotAsValue<v8::FunctionTemplate, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
14.6k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
14.6k
    return reinterpret_cast<T*>(slot);
1780
14.6k
  }
v8::Template* v8::internal::ValueHelper::SlotAsValue<v8::Template, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
6.58k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
6.58k
    return reinterpret_cast<T*>(slot);
1780
6.58k
  }
v8::Function* v8::internal::ValueHelper::SlotAsValue<v8::Function, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
4.76k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
4.76k
    return reinterpret_cast<T*>(slot);
1780
4.76k
  }
v8::ObjectTemplate* v8::internal::ValueHelper::SlotAsValue<v8::ObjectTemplate, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
9.10k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
9.10k
    return reinterpret_cast<T*>(slot);
1780
9.10k
  }
v8::Context* v8::internal::ValueHelper::SlotAsValue<v8::Context, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
22.1k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
22.1k
    return reinterpret_cast<T*>(slot);
1780
22.1k
  }
v8::Script* v8::internal::ValueHelper::SlotAsValue<v8::Script, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
8.90k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
8.90k
    return reinterpret_cast<T*>(slot);
1780
8.90k
  }
v8::Object* v8::internal::ValueHelper::SlotAsValue<v8::Object, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
280
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
280
    return reinterpret_cast<T*>(slot);
1780
280
  }
v8::Array* v8::internal::ValueHelper::SlotAsValue<v8::Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
741k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
741k
    return reinterpret_cast<T*>(slot);
1780
741k
  }
Unexecuted instantiation: v8::Number* v8::internal::ValueHelper::SlotAsValue<v8::Number, false, unsigned long>(unsigned long*)
v8::DictionaryTemplate* v8::internal::ValueHelper::SlotAsValue<v8::DictionaryTemplate, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
35
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
35
    return reinterpret_cast<T*>(slot);
1780
35
  }
Unexecuted instantiation: v8::Int8Array* v8::internal::ValueHelper::SlotAsValue<v8::Int8Array, true, unsigned long>(unsigned long*)
v8::Uint8Array* v8::internal::ValueHelper::SlotAsValue<v8::Uint8Array, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
140
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
140
    return reinterpret_cast<T*>(slot);
1780
140
  }
Unexecuted instantiation: v8::Int16Array* v8::internal::ValueHelper::SlotAsValue<v8::Int16Array, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Uint16Array* v8::internal::ValueHelper::SlotAsValue<v8::Uint16Array, true, unsigned long>(unsigned long*)
v8::Int32Array* v8::internal::ValueHelper::SlotAsValue<v8::Int32Array, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
70
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
70
    return reinterpret_cast<T*>(slot);
1780
70
  }
v8::Uint32Array* v8::internal::ValueHelper::SlotAsValue<v8::Uint32Array, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
245
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
245
    return reinterpret_cast<T*>(slot);
1780
245
  }
Unexecuted instantiation: v8::Float32Array* v8::internal::ValueHelper::SlotAsValue<v8::Float32Array, true, unsigned long>(unsigned long*)
v8::Float64Array* v8::internal::ValueHelper::SlotAsValue<v8::Float64Array, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
175
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
175
    return reinterpret_cast<T*>(slot);
1780
175
  }
v8::BigInt64Array* v8::internal::ValueHelper::SlotAsValue<v8::BigInt64Array, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
70
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
70
    return reinterpret_cast<T*>(slot);
1780
70
  }
v8::Value* v8::internal::ValueHelper::SlotAsValue<v8::Value, true, unsigned long>(unsigned long*)
Line
Count
Source
1778
758k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
758k
    return reinterpret_cast<T*>(slot);
1780
758k
  }
Unexecuted instantiation: v8::Function* v8::internal::ValueHelper::SlotAsValue<v8::Function, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Private* v8::internal::ValueHelper::SlotAsValue<v8::Private, false, unsigned long>(unsigned long*)
v8::Symbol* v8::internal::ValueHelper::SlotAsValue<v8::Symbol, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
735
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
735
    return reinterpret_cast<T*>(slot);
1780
735
  }
v8::String* v8::internal::ValueHelper::SlotAsValue<v8::String, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
188k
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
188k
    return reinterpret_cast<T*>(slot);
1780
188k
  }
v8::ArrayBuffer* v8::internal::ValueHelper::SlotAsValue<v8::ArrayBuffer, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
770
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
770
    return reinterpret_cast<T*>(slot);
1780
770
  }
v8::Int32Array* v8::internal::ValueHelper::SlotAsValue<v8::Int32Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
105
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
105
    return reinterpret_cast<T*>(slot);
1780
105
  }
v8::Uint32Array* v8::internal::ValueHelper::SlotAsValue<v8::Uint32Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
245
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
245
    return reinterpret_cast<T*>(slot);
1780
245
  }
Unexecuted instantiation: v8::Promise* v8::internal::ValueHelper::SlotAsValue<v8::Promise, false, unsigned long>(unsigned long*)
v8::Uint8Array* v8::internal::ValueHelper::SlotAsValue<v8::Uint8Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
175
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
175
    return reinterpret_cast<T*>(slot);
1780
175
  }
v8::Float64Array* v8::internal::ValueHelper::SlotAsValue<v8::Float64Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
175
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
175
    return reinterpret_cast<T*>(slot);
1780
175
  }
Unexecuted instantiation: v8::Array* v8::internal::ValueHelper::SlotAsValue<v8::Array, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Uint32* v8::internal::ValueHelper::SlotAsValue<v8::Uint32, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::ModuleRequest* v8::internal::ValueHelper::SlotAsValue<v8::ModuleRequest, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Module* v8::internal::ValueHelper::SlotAsValue<v8::Module, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Module* v8::internal::ValueHelper::SlotAsValue<v8::Module, true, unsigned long>(unsigned long*)
v8::PrimitiveArray* v8::internal::ValueHelper::SlotAsValue<v8::PrimitiveArray, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
35
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
35
    return reinterpret_cast<T*>(slot);
1780
35
  }
Unexecuted instantiation: v8::Int32* v8::internal::ValueHelper::SlotAsValue<v8::Int32, false, unsigned long>(unsigned long*)
v8::ArrayBufferView* v8::internal::ValueHelper::SlotAsValue<v8::ArrayBufferView, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
105
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
105
    return reinterpret_cast<T*>(slot);
1780
105
  }
Unexecuted instantiation: v8::UnboundModuleScript* v8::internal::ValueHelper::SlotAsValue<v8::UnboundModuleScript, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::FixedArray* v8::internal::ValueHelper::SlotAsValue<v8::FixedArray, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Promise::Resolver* v8::internal::ValueHelper::SlotAsValue<v8::Promise::Resolver, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::ArrayBuffer* v8::internal::ValueHelper::SlotAsValue<v8::ArrayBuffer, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::SharedArrayBuffer* v8::internal::ValueHelper::SlotAsValue<v8::SharedArrayBuffer, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Integer* v8::internal::ValueHelper::SlotAsValue<v8::Integer, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Set* v8::internal::ValueHelper::SlotAsValue<v8::Set, false, unsigned long>(unsigned long*)
v8::Boolean* v8::internal::ValueHelper::SlotAsValue<v8::Boolean, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
105
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
105
    return reinterpret_cast<T*>(slot);
1780
105
  }
Unexecuted instantiation: v8::Message* v8::internal::ValueHelper::SlotAsValue<v8::Message, false, unsigned long>(unsigned long*)
v8::Name* v8::internal::ValueHelper::SlotAsValue<v8::Name, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
280
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
280
    return reinterpret_cast<T*>(slot);
1780
280
  }
Unexecuted instantiation: v8::UnboundScript* v8::internal::ValueHelper::SlotAsValue<v8::UnboundScript, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::UnboundScript* v8::internal::ValueHelper::SlotAsValue<v8::UnboundScript, true, unsigned long>(unsigned long*)
v8::BigInt64Array* v8::internal::ValueHelper::SlotAsValue<v8::BigInt64Array, false, unsigned long>(unsigned long*)
Line
Count
Source
1778
70
  V8_INLINE static T* SlotAsValue(S* slot) {
1779
70
    return reinterpret_cast<T*>(slot);
1780
70
  }
Unexecuted instantiation: v8::StackFrame* v8::internal::ValueHelper::SlotAsValue<v8::StackFrame, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::StackTrace* v8::internal::ValueHelper::SlotAsValue<v8::StackTrace, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::BigInt* v8::internal::ValueHelper::SlotAsValue<v8::BigInt, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Promise* v8::internal::ValueHelper::SlotAsValue<v8::Promise, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Promise::Resolver* v8::internal::ValueHelper::SlotAsValue<v8::Promise::Resolver, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::WasmModuleObject* v8::internal::ValueHelper::SlotAsValue<v8::WasmModuleObject, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::External* v8::internal::ValueHelper::SlotAsValue<v8::External, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Map* v8::internal::ValueHelper::SlotAsValue<v8::Map, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::RegExp* v8::internal::ValueHelper::SlotAsValue<v8::RegExp, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::RegExp* v8::internal::ValueHelper::SlotAsValue<v8::RegExp, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Proxy* v8::internal::ValueHelper::SlotAsValue<v8::Proxy, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::WasmMemoryObject* v8::internal::ValueHelper::SlotAsValue<v8::WasmMemoryObject, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::WasmMemoryObject* v8::internal::ValueHelper::SlotAsValue<v8::WasmMemoryObject, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::Map* v8::internal::ValueHelper::SlotAsValue<v8::Map, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::ArrayBufferView* v8::internal::ValueHelper::SlotAsValue<v8::ArrayBufferView, true, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::TypedArray* v8::internal::ValueHelper::SlotAsValue<v8::TypedArray, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::DataView* v8::internal::ValueHelper::SlotAsValue<v8::DataView, false, unsigned long>(unsigned long*)
Unexecuted instantiation: v8::FunctionTemplate* v8::internal::ValueHelper::SlotAsValue<v8::FunctionTemplate, true, unsigned long>(unsigned long*)
1781
1782
  template <typename T>
1783
1.55M
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
1.55M
    return const_cast<InternalRepresentationType>(
1785
1.55M
        reinterpret_cast<const Address*>(value));
1786
1.55M
  }
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Data>(v8::Data const*)
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Context>(v8::Context const*)
Line
Count
Source
1783
35.7k
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
35.7k
    return const_cast<InternalRepresentationType>(
1785
35.7k
        reinterpret_cast<const Address*>(value));
1786
35.7k
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Function>(v8::Function const*)
Line
Count
Source
1783
875
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
875
    return const_cast<InternalRepresentationType>(
1785
875
        reinterpret_cast<const Address*>(value));
1786
875
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Object>(v8::Object const*)
Line
Count
Source
1783
840
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
840
    return const_cast<InternalRepresentationType>(
1785
840
        reinterpret_cast<const Address*>(value));
1786
840
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Value>(v8::Value const*)
Line
Count
Source
1783
1.51M
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
1.51M
    return const_cast<InternalRepresentationType>(
1785
1.51M
        reinterpret_cast<const Address*>(value));
1786
1.51M
  }
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Int8Array>(v8::Int8Array const*)
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Uint8Array>(v8::Uint8Array const*)
Line
Count
Source
1783
245
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
245
    return const_cast<InternalRepresentationType>(
1785
245
        reinterpret_cast<const Address*>(value));
1786
245
  }
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Int16Array>(v8::Int16Array const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Uint16Array>(v8::Uint16Array const*)
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Int32Array>(v8::Int32Array const*)
Line
Count
Source
1783
175
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
175
    return const_cast<InternalRepresentationType>(
1785
175
        reinterpret_cast<const Address*>(value));
1786
175
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Uint32Array>(v8::Uint32Array const*)
Line
Count
Source
1783
490
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
490
    return const_cast<InternalRepresentationType>(
1785
490
        reinterpret_cast<const Address*>(value));
1786
490
  }
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Float32Array>(v8::Float32Array const*)
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Float64Array>(v8::Float64Array const*)
Line
Count
Source
1783
350
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
350
    return const_cast<InternalRepresentationType>(
1785
350
        reinterpret_cast<const Address*>(value));
1786
350
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::BigInt64Array>(v8::BigInt64Array const*)
Line
Count
Source
1783
140
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
140
    return const_cast<InternalRepresentationType>(
1785
140
        reinterpret_cast<const Address*>(value));
1786
140
  }
unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Array>(v8::Array const*)
Line
Count
Source
1783
35
  V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) {
1784
35
    return const_cast<InternalRepresentationType>(
1785
35
        reinterpret_cast<const Address*>(value));
1786
35
  }
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Module>(v8::Module const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::ArrayBuffer>(v8::ArrayBuffer const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::UnboundScript>(v8::UnboundScript const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Promise>(v8::Promise const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Promise::Resolver>(v8::Promise::Resolver const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::SharedArrayBuffer>(v8::SharedArrayBuffer const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::RegExp>(v8::RegExp const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::WasmMemoryObject>(v8::WasmMemoryObject const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::Map>(v8::Map const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::ArrayBufferView>(v8::ArrayBufferView const*)
Unexecuted instantiation: unsigned long* v8::internal::ValueHelper::ValueAsRepr<v8::FunctionTemplate>(v8::FunctionTemplate const*)
1787
1788
  template <typename T>
1789
0
  V8_INLINE static T* ReprAsValue(InternalRepresentationType repr) {
1790
0
    return reinterpret_cast<T*>(repr);
1791
0
  }
Unexecuted instantiation: v8::Private* v8::internal::ValueHelper::ReprAsValue<v8::Private>(unsigned long*)
Unexecuted instantiation: v8::Symbol* v8::internal::ValueHelper::ReprAsValue<v8::Symbol>(unsigned long*)
Unexecuted instantiation: v8::String* v8::internal::ValueHelper::ReprAsValue<v8::String>(unsigned long*)
Unexecuted instantiation: v8::DictionaryTemplate* v8::internal::ValueHelper::ReprAsValue<v8::DictionaryTemplate>(unsigned long*)
Unexecuted instantiation: v8::FunctionTemplate* v8::internal::ValueHelper::ReprAsValue<v8::FunctionTemplate>(unsigned long*)
Unexecuted instantiation: v8::ObjectTemplate* v8::internal::ValueHelper::ReprAsValue<v8::ObjectTemplate>(unsigned long*)
Unexecuted instantiation: v8::Uint32Array* v8::internal::ValueHelper::ReprAsValue<v8::Uint32Array>(unsigned long*)
Unexecuted instantiation: v8::Uint8Array* v8::internal::ValueHelper::ReprAsValue<v8::Uint8Array>(unsigned long*)
Unexecuted instantiation: v8::Float64Array* v8::internal::ValueHelper::ReprAsValue<v8::Float64Array>(unsigned long*)
Unexecuted instantiation: v8::Array* v8::internal::ValueHelper::ReprAsValue<v8::Array>(unsigned long*)
Unexecuted instantiation: v8::Object* v8::internal::ValueHelper::ReprAsValue<v8::Object>(unsigned long*)
Unexecuted instantiation: v8::Int32Array* v8::internal::ValueHelper::ReprAsValue<v8::Int32Array>(unsigned long*)
Unexecuted instantiation: v8::BigInt64Array* v8::internal::ValueHelper::ReprAsValue<v8::BigInt64Array>(unsigned long*)
Unexecuted instantiation: v8::Function* v8::internal::ValueHelper::ReprAsValue<v8::Function>(unsigned long*)
Unexecuted instantiation: v8::Context* v8::internal::ValueHelper::ReprAsValue<v8::Context>(unsigned long*)
1792
1793
#endif  // V8_ENABLE_DIRECT_HANDLE
1794
};
1795
1796
/**
1797
 * Helper functions about handles.
1798
 */
1799
class HandleHelper final {
1800
 public:
1801
  /**
1802
   * Checks whether two handles are equal.
1803
   * They are equal iff they are both empty or they are both non-empty and the
1804
   * objects to which they refer are physically equal.
1805
   *
1806
   * If both handles refer to JS objects, this is the same as strict equality.
1807
   * For primitives, such as numbers or strings, a `false` return value does not
1808
   * indicate that the values aren't equal in the JavaScript sense.
1809
   * Use `Value::StrictEquals()` to check primitives for equality.
1810
   */
1811
  template <typename T1, typename T2>
1812
737k
  V8_INLINE static bool EqualHandles(const T1& lhs, const T2& rhs) {
1813
737k
    if (lhs.IsEmpty()) return rhs.IsEmpty();
1814
737k
    if (rhs.IsEmpty()) return false;
1815
737k
    return lhs.ptr() == rhs.ptr();
1816
737k
  }
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::TracedReferenceBase, v8::TracedReferenceBase>(v8::TracedReferenceBase const&, v8::TracedReferenceBase const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Object>, v8::Local<v8::Object> >(v8::Local<v8::Object> const&, v8::Local<v8::Object> const&)
bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Context>, v8::Local<v8::Context> >(v8::Local<v8::Context> const&, v8::Local<v8::Context> const&)
Line
Count
Source
1812
737k
  V8_INLINE static bool EqualHandles(const T1& lhs, const T2& rhs) {
1813
737k
    if (lhs.IsEmpty()) return rhs.IsEmpty();
1814
737k
    if (rhs.IsEmpty()) return false;
1815
737k
    return lhs.ptr() == rhs.ptr();
1816
737k
  }
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::PersistentBase<v8::Context>, v8::Local<v8::Context> >(v8::PersistentBase<v8::Context> const&, v8::Local<v8::Context> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Data>, v8::Local<v8::Data> >(v8::Local<v8::Data> const&, v8::Local<v8::Data> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::PersistentBase<v8::Module>, v8::Local<v8::Module> >(v8::PersistentBase<v8::Module> const&, v8::Local<v8::Module> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Symbol>, v8::Local<v8::Symbol> >(v8::Local<v8::Symbol> const&, v8::Local<v8::Symbol> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Value>, v8::Local<v8::Object> >(v8::Local<v8::Value> const&, v8::Local<v8::Object> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::SharedArrayBuffer>, v8::Local<v8::SharedArrayBuffer> >(v8::Local<v8::SharedArrayBuffer> const&, v8::Local<v8::SharedArrayBuffer> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::ArrayBuffer>, v8::Local<v8::ArrayBuffer> >(v8::Local<v8::ArrayBuffer> const&, v8::Local<v8::ArrayBuffer> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Value>, v8::Local<v8::Symbol> >(v8::Local<v8::Value> const&, v8::Local<v8::Symbol> const&)
Unexecuted instantiation: bool v8::internal::HandleHelper::EqualHandles<v8::Local<v8::Object>, v8::Local<v8::Value> >(v8::Local<v8::Object> const&, v8::Local<v8::Value> const&)
1817
};
1818
1819
V8_EXPORT void VerifyHandleIsNonEmpty(bool is_empty);
1820
1821
// These functions are here just to match friend declarations in
1822
// XxxCallbackInfo classes allowing these functions to access the internals
1823
// of the info objects. These functions are supposed to be called by debugger
1824
// macros.
1825
void PrintFunctionCallbackInfo(void* function_callback_info);
1826
void PrintPropertyCallbackInfo(void* property_callback_info);
1827
1828
}  // namespace internal
1829
}  // namespace v8
1830
1831
#endif  // INCLUDE_V8_INTERNAL_H_