Coverage Report

Created: 2025-12-30 08:42

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