v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
debug-interface.h
Go to the documentation of this file.
1// Copyright 2016 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 V8_DEBUG_DEBUG_INTERFACE_H_
6#define V8_DEBUG_DEBUG_INTERFACE_H_
7
8#include <memory>
9
11#include "include/v8-date.h"
12#include "include/v8-debug.h"
14#include "include/v8-isolate.h"
17#include "include/v8-promise.h"
18#include "include/v8-script.h"
19#include "include/v8-util.h"
20#include "src/base/enum-set.h"
21#include "src/base/vector.h"
22#include "src/common/globals.h"
24
25namespace v8_inspector {
26class V8Inspector;
27} // namespace v8_inspector
28
29namespace v8 {
30
31class Platform;
32
33namespace internal {
34struct CoverageBlock;
35struct CoverageFunction;
36struct CoverageScript;
37class Coverage;
38class DisableBreak;
39class PostponeInterruptsScope;
40class Script;
41} // namespace internal
42
43namespace debug {
44
45void SetContextId(Local<Context> context, int id);
46int GetContextId(Local<Context> context);
47
48void SetInspector(Isolate* isolate, v8_inspector::V8Inspector*);
50
51// Returns a debug string representation of the bigint without tailing `n`.
52Local<String> GetBigIntStringValue(Isolate* isolate, Local<BigInt> bigint);
53
54// Returns a debug string representation of the bigint.
55Local<String> GetBigIntDescription(Isolate* isolate, Local<BigInt> bigint);
56
57// Returns a debug string representation of the date.
58Local<String> GetDateDescription(Local<Date> date);
59
60// Returns a debug string representation of the function.
61Local<String> GetFunctionDescription(Local<Function> function);
62
63// Schedule a debugger break to happen when function is called inside given
64// isolate.
66
67// Remove scheduled debugger break in given isolate if it has not
68// happened yet.
70
76MaybeLocal<Array> GetInternalProperties(Isolate* isolate, Local<Value> value);
77
80 kPrivateFields = 1 << 1,
81 kPrivateAccessors = 1 << 2,
82};
83
96 Local<Object> value, int filter,
97 LocalVector<Value>* names_out,
98 LocalVector<Value>* values_out);
99
105
112
120
121void RemoveBreakpoint(Isolate* isolate, BreakpointId id);
122void SetBreakPointsActive(Isolate* isolate, bool is_active);
123
125 StepOut = 0, // Step out of the current function.
126 StepOver = 1, // Step to the next statement in the current function.
127 StepInto = 2 // Step into new functions invoked or the next statement
128 // in the current function.
130
131// Record the reason for why the debugger breaks.
132enum class BreakReason : uint8_t {
134 kStep,
137 kAssert,
139 kOOM,
141 kAgent
142};
144
145void PrepareStep(Isolate* isolate, StepAction action);
146bool PrepareRestartFrame(Isolate* isolate, int callFrameOrdinal);
147void ClearStepping(Isolate* isolate);
149 Isolate* isolate, base::EnumSet<BreakReason> break_reason = {});
150
151// Use `SetTerminateOnResume` to indicate that an TerminateExecution interrupt
152// should be set shortly before resuming, i.e. shortly before returning into
153// the JavaScript stack frames on the stack. In contrast to setting the
154// interrupt with `RequestTerminateExecution` directly, this flag allows
155// the isolate to be entered for further JavaScript execution.
157
158bool CanBreakProgram(Isolate* isolate);
159
160class Script;
161
180
189 public:
190 // The number of characters in case of JavaScript or
191 // the size of the memory in case of WebAssembly.
192 size_t Length() const;
193
194 // The actual size of the source in bytes.
195 size_t Size() const;
196
197 MaybeLocal<String> JavaScriptCode() const;
198#if V8_ENABLE_WEBASSEMBLY
199 Maybe<MemorySpan<const uint8_t>> WasmBytecode() const;
200#endif // V8_ENABLE_WEBASSEMBLY
201};
202
207 public:
208 v8::Isolate* GetIsolate() const;
209
210 ScriptOriginOptions OriginOptions() const;
211 bool WasCompiled() const;
212 bool IsEmbedded() const;
213 int Id() const;
214 int StartLine() const;
215 int StartColumn() const;
216 int EndLine() const;
217 int EndColumn() const;
218 MaybeLocal<String> Name() const;
219 MaybeLocal<String> SourceURL() const;
220 MaybeLocal<String> SourceMappingURL() const;
221 MaybeLocal<String> GetSha256Hash() const;
222 Maybe<int> ContextId() const;
223 Local<ScriptSource> Source() const;
224 bool IsModule() const;
225 bool GetPossibleBreakpoints(
227 bool restrict_to_function,
228 std::vector<debug::BreakLocation>* locations) const;
229 enum class GetSourceOffsetMode { kStrict, kClamp };
230 Maybe<int> GetSourceOffset(
231 const debug::Location& location,
232 GetSourceOffsetMode mode = GetSourceOffsetMode::kStrict) const;
233 v8::debug::Location GetSourceLocation(int offset) const;
234 bool SetScriptSource(v8::Local<v8::String> newSource, bool preview,
235 bool allow_top_frame_live_editing,
236 LiveEditResult* result) const;
237 bool SetBreakpoint(v8::Local<v8::String> condition, debug::Location* location,
238 BreakpointId* id) const;
239#if V8_ENABLE_WEBASSEMBLY
240 bool IsWasm() const;
241 void RemoveWasmBreakpoint(BreakpointId id);
242#endif // V8_ENABLE_WEBASSEMBLY
243 bool SetInstrumentationBreakpoint(BreakpointId* id) const;
244};
245
247 public:
248 virtual void ReserveLineCount(size_t count) = 0;
249 virtual void AddLine(const char* src, size_t length,
250 uint32_t bytecode_offset) = 0;
251};
252
253#if V8_ENABLE_WEBASSEMBLY
254// Specialization for wasm Scripts.
255class WasmScript : public Script {
256 public:
257 static WasmScript* Cast(Script* script);
258
259 struct DebugSymbols {
260 enum class Type { SourceMap, EmbeddedDWARF, ExternalDWARF };
261 Type type;
262 v8::MemorySpan<const char> external_url;
263 };
264 std::vector<DebugSymbols> GetDebugSymbols() const;
265
266 int NumFunctions() const;
267 int NumImportedFunctions() const;
268
269 std::pair<int, int> GetFunctionRange(int function_index) const;
270 int GetContainingFunction(int byte_offset) const;
271
272 void Disassemble(DisassemblyCollector* collector,
273 std::vector<int>* function_body_offsets);
274
275 uint32_t GetFunctionHash(int function_index);
276
277 Maybe<v8::MemorySpan<const uint8_t>> GetModuleBuildId() const;
278
279 int CodeOffset() const;
280 int CodeLength() const;
281};
282
283// "Static" version of WasmScript::Disassemble, for use with cached scripts
284// where we only have raw wire bytes available.
285void Disassemble(base::Vector<const uint8_t> wire_bytes,
286 DisassemblyCollector* collector,
287 std::vector<int>* function_body_offsets);
288
289#endif // V8_ENABLE_WEBASSEMBLY
290
292 Isolate* isolate, std::vector<v8::Global<Script>>& scripts);
293
294MaybeLocal<UnboundScript> CompileInspectorScript(Isolate* isolate,
295 Local<String> source);
296
298
300 public:
301 virtual ~DebugDelegate() = default;
302 virtual void ScriptCompiled(v8::Local<Script> script, bool is_live_edited,
303 bool has_compile_error) {}
304 // |inspector_break_points_hit| contains id of breakpoints installed with
305 // debug::Script::SetBreakpoint API.
307 v8::Local<v8::Context> paused_context,
308 const std::vector<debug::BreakpointId>& inspector_break_points_hit,
309 base::EnumSet<BreakReason> break_reasons = {}) {}
320 virtual void ExceptionThrown(v8::Local<v8::Context> paused_context,
321 v8::Local<v8::Value> exception,
322 v8::Local<v8::Value> promise, bool is_uncaught,
323 ExceptionType exception_type) {}
325 const debug::Location& start,
326 const debug::Location& end) {
327 return false;
328 }
329 virtual bool ShouldBeSkipped(v8::Local<v8::debug::Script> script, int line,
330 int column) {
331 return false;
332 }
333
334 // Called every time a breakpoint condition is evaluated. This method is
335 // called before `BreakProgramRequested` if the condition is truthy.
337 debug::BreakpointId breakpoint_id,
338 bool exception_thrown,
339 v8::Local<v8::Value> exception) {}
340};
341
343 DebugDelegate* listener);
344
345#if V8_ENABLE_WEBASSEMBLY
346V8_EXPORT_PRIVATE void EnterDebuggingForIsolate(Isolate* isolate);
347V8_EXPORT_PRIVATE void LeaveDebuggingForIsolate(Isolate* isolate);
348#endif // V8_ENABLE_WEBASSEMBLY
349
351 public:
352 virtual ~AsyncEventDelegate() = default;
354 bool is_blackboxed) = 0;
355};
356
358 AsyncEventDelegate* delegate);
359
362
364
366
367Local<Function> GetBuiltin(Isolate* isolate, Builtin builtin);
368
370 ConsoleDelegate* delegate);
371
373 Isolate* isolate, v8::Local<v8::Value> error);
374
387
388/*
389 * Provide API layer between inspector and code coverage.
390 */
392 public:
394
395 // Forward declarations.
396 class ScriptData;
397 class FunctionData;
398
400 public:
402
403 int StartOffset() const;
404 int EndOffset() const;
405 uint32_t Count() const;
406
407 private:
409 std::shared_ptr<i::Coverage> coverage)
410 : block_(block), coverage_(std::move(coverage)) {}
411
413 std::shared_ptr<i::Coverage> coverage_;
414
416 };
417
419 public:
421
422 int StartOffset() const;
423 int EndOffset() const;
424 uint32_t Count() const;
425 MaybeLocal<String> Name() const;
426 size_t BlockCount() const;
427 bool HasBlockCoverage() const;
428 BlockData GetBlockData(size_t i) const;
429
430 private:
432 std::shared_ptr<i::Coverage> coverage)
433 : function_(function), coverage_(std::move(coverage)) {}
434
436 std::shared_ptr<i::Coverage> coverage_;
437
439 };
440
442 public:
444
445 Local<debug::Script> GetScript() const;
446 size_t FunctionCount() const;
447 FunctionData GetFunctionData(size_t i) const;
448
449 private:
450 explicit ScriptData(size_t index, std::shared_ptr<i::Coverage> c);
451
453 std::shared_ptr<i::Coverage> coverage_;
454
456 };
457
458 static Coverage CollectPrecise(Isolate* isolate);
459 static Coverage CollectBestEffort(Isolate* isolate);
460
461 static void SelectMode(Isolate* isolate, CoverageMode mode);
462
463 size_t ScriptCount() const;
464 ScriptData GetScriptData(size_t i) const;
465 bool IsEmpty() const { return coverage_ == nullptr; }
466
467 private:
468 explicit Coverage(std::shared_ptr<i::Coverage> coverage)
469 : coverage_(std::move(coverage)) {}
470 std::shared_ptr<i::Coverage> coverage_;
471};
472
474 public:
475 static std::unique_ptr<ScopeIterator> CreateForFunction(
476 v8::Isolate* isolate, v8::Local<v8::Function> func);
477 static std::unique_ptr<ScopeIterator> CreateForGeneratorObject(
478 v8::Isolate* isolate, v8::Local<v8::Object> generator);
479
480 ScopeIterator() = default;
481 virtual ~ScopeIterator() = default;
482 ScopeIterator(const ScopeIterator&) = delete;
484
497
498 virtual bool Done() = 0;
499 virtual void Advance() = 0;
500 virtual ScopeType GetType() = 0;
503 virtual int GetScriptId() = 0;
504 virtual bool HasLocationInfo() = 0;
507
509 v8::Local<v8::Value> value) = 0;
510};
511
513 public:
514 static std::unique_ptr<StackTraceIterator> Create(Isolate* isolate,
515 int index = 0);
517 virtual ~StackTraceIterator() = default;
520
521 virtual bool Done() const = 0;
522 virtual void Advance() = 0;
523
524 virtual int GetContextId() const = 0;
532 virtual std::unique_ptr<ScopeIterator> GetScopeIterator() const = 0;
533 virtual bool CanBeRestarted() const = 0;
534
536 bool throw_on_side_effect) = 0;
537};
538
540 std::vector<v8::Global<v8::String>>* names);
541
543
545 None = 0,
546 HasGetter = 1 << 0,
547 HasSetter = 1 << 1,
548 IsValueUnavailable = 1 << 2
549};
550
551int64_t GetNextRandomInt64(v8::Isolate* isolate);
552
554 Local<Function> function, Local<Value> recv,
556 bool throw_on_side_effect);
557
563
566 bool repl_mode = false);
567
569
572 BreakpointId* id);
573
575
577 v8::StackState embedder_stack_state);
578
580 public:
581 explicit PostponeInterruptsScope(v8::Isolate* isolate);
583
584 private:
585 std::unique_ptr<i::PostponeInterruptsScope> scope_;
586};
587
589 public:
590 explicit DisableBreakScope(v8::Isolate* isolate);
592
593 private:
594 std::unique_ptr<i::DisableBreak> scope_;
595};
596
609
617 public:
618 AccessorPair() = delete;
621
622 static bool IsAccessorPair(v8::Local<v8::Value> obj);
623 V8_INLINE static AccessorPair* Cast(v8::Value* obj);
624
625 private:
626 static void CheckCast(v8::Value* obj);
627};
628
640
642 public:
643 // Creating a PropertyIterator can potentially throw an exception.
644 // The returned std::unique_ptr is empty iff that happens.
645 V8_WARN_UNUSED_RESULT static std::unique_ptr<PropertyIterator> Create(
647 bool skip_indices = false);
648
649 virtual ~PropertyIterator() = default;
650
651 virtual bool Done() const = 0;
652 // Returns |Nothing| should |Advance| throw an exception,
653 // |true| otherwise.
655
656 virtual v8::Local<v8::Name> name() const = 0;
657
658 virtual bool is_native_accessor() = 0;
659 virtual bool has_native_getter() = 0;
660 virtual bool has_native_setter() = 0;
663
664 virtual bool is_own() = 0;
665 virtual bool is_array_index() = 0;
666};
667
668#if V8_ENABLE_WEBASSEMBLY
669class V8_EXPORT_PRIVATE WasmValueObject : public v8::Object {
670 public:
671 WasmValueObject() = delete;
672 static bool IsWasmValueObject(v8::Local<v8::Value> obj);
673 static WasmValueObject* Cast(v8::Value* value) {
674#ifdef V8_ENABLE_CHECKS
675 CheckCast(value);
676#endif
677 return static_cast<WasmValueObject*>(value);
678 }
679
681
682 private:
683 static void CheckCast(v8::Value* obj);
684};
685#endif // V8_ENABLE_WEBASSEMBLY
686
688#ifdef V8_ENABLE_CHECKS
689 CheckCast(value);
690#endif
691 return static_cast<AccessorPair*>(value);
692}
693
695
697
699
700uint64_t GetIsolateId(v8::Isolate* isolate);
701void SetIsolateId(v8::Isolate* isolate, uint64_t id);
702
703} // namespace debug
704} // namespace v8
705
706#endif // V8_DEBUG_DEBUG_INTERFACE_H_
PropertyT * setter
PropertyT * getter
static void CheckCast(v8::Value *obj)
static V8_INLINE AccessorPair * Cast(v8::Value *obj)
virtual void AsyncEventOccurred(debug::DebugAsyncActionType type, int id, bool is_blackboxed)=0
virtual ~AsyncEventDelegate()=default
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(BlockData)
std::shared_ptr< i::Coverage > coverage_
BlockData(i::CoverageBlock *block, std::shared_ptr< i::Coverage > coverage)
FunctionData(i::CoverageFunction *function, std::shared_ptr< i::Coverage > coverage)
std::shared_ptr< i::Coverage > coverage_
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(FunctionData)
std::shared_ptr< i::Coverage > coverage_
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(ScriptData)
Coverage(std::shared_ptr< i::Coverage > coverage)
MOVE_ONLY_NO_DEFAULT_CONSTRUCTOR(Coverage)
std::shared_ptr< i::Coverage > coverage_
virtual ActionAfterInstrumentation BreakOnInstrumentation(v8::Local< v8::Context > paused_context, const debug::BreakpointId instrumentationId)
virtual void ScriptCompiled(v8::Local< Script > script, bool is_live_edited, bool has_compile_error)
virtual void BreakProgramRequested(v8::Local< v8::Context > paused_context, const std::vector< debug::BreakpointId > &inspector_break_points_hit, base::EnumSet< BreakReason > break_reasons={})
virtual bool ShouldBeSkipped(v8::Local< v8::debug::Script > script, int line, int column)
virtual void ExceptionThrown(v8::Local< v8::Context > paused_context, v8::Local< v8::Value > exception, v8::Local< v8::Value > promise, bool is_uncaught, ExceptionType exception_type)
virtual void BreakpointConditionEvaluated(v8::Local< v8::Context > context, debug::BreakpointId breakpoint_id, bool exception_thrown, v8::Local< v8::Value > exception)
virtual bool IsFunctionBlackboxed(v8::Local< debug::Script > script, const debug::Location &start, const debug::Location &end)
virtual ~DebugDelegate()=default
std::unique_ptr< i::DisableBreak > scope_
virtual void ReserveLineCount(size_t count)=0
virtual void AddLine(const char *src, size_t length, uint32_t bytecode_offset)=0
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT v8::MaybeLocal< v8::Value > Get(v8::Isolate *isolate, v8::Local< v8::Value > key)
static V8_EXPORT_PRIVATE Local< EphemeronTable > New(v8::Isolate *isolate)
V8_EXPORT_PRIVATE V8_WARN_UNUSED_RESULT v8::Local< EphemeronTable > Set(v8::Isolate *isolate, v8::Local< v8::Value > key, v8::Local< v8::Value > value)
static V8_INLINE EphemeronTable * Cast(Value *obj)
static v8::Local< debug::GeneratorObject > Cast(v8::Local< v8::Value > value)
debug::Location SuspendedLocation()
v8::MaybeLocal< debug::Script > Script()
v8::Local< v8::Function > Function()
std::unique_ptr< i::PostponeInterruptsScope > scope_
virtual bool Done() const =0
virtual bool is_native_accessor()=0
virtual Maybe< PropertyDescriptor > descriptor()=0
virtual bool has_native_getter()=0
virtual bool is_array_index()=0
virtual v8::Local< v8::Name > name() const =0
virtual V8_WARN_UNUSED_RESULT Maybe< bool > Advance()=0
virtual Maybe< PropertyAttribute > attributes()=0
virtual bool has_native_setter()=0
virtual ~PropertyIterator()=default
virtual int GetScriptId()=0
virtual v8::Local< v8::Object > GetObject()=0
virtual v8::Local< v8::Value > GetFunctionDebugName()=0
virtual bool SetVariableValue(v8::Local< v8::String > name, v8::Local< v8::Value > value)=0
virtual bool Done()=0
virtual ~ScopeIterator()=default
virtual void Advance()=0
virtual debug::Location GetStartLocation()=0
ScopeIterator & operator=(const ScopeIterator &)=delete
virtual debug::Location GetEndLocation()=0
virtual ScopeType GetType()=0
ScopeIterator(const ScopeIterator &)=delete
virtual bool HasLocationInfo()=0
virtual bool CanBeRestarted() const =0
virtual v8::MaybeLocal< v8::Value > GetReceiver() const =0
StackTraceIterator & operator=(const StackTraceIterator &)=delete
virtual bool Done() const =0
StackTraceIterator(const StackTraceIterator &)=delete
virtual v8::MaybeLocal< v8::Value > Evaluate(v8::Local< v8::String > source, bool throw_on_side_effect)=0
virtual v8::Local< v8::debug::Script > GetScript() const =0
virtual v8::Local< v8::Value > GetReturnValue() const =0
virtual v8::Local< v8::Function > GetFunction() const =0
virtual v8::Local< v8::String > GetFunctionDebugName() const =0
virtual int GetContextId() const =0
virtual debug::Location GetSourceLocation() const =0
virtual std::unique_ptr< ScopeIterator > GetScopeIterator() const =0
virtual debug::Location GetFunctionLocation() const =0
virtual ~StackTraceIterator()=default
const JSFunctionRef function_
int start
int end
base::Vector< const DirectHandle< Object > > args
Definition execution.cc:74
int32_t offset
DateRecord date
ZoneVector< RpoNumber > & result
EmbedderStackState
Definition common.h:15
STL namespace.
void SetBreakPointsActive(Isolate *v8_isolate, bool is_active)
int EstimatedValueSize(Isolate *v8_isolate, Local< Value > value)
bool PrepareRestartFrame(Isolate *v8_isolate, int callFrameOrdinal)
MaybeLocal< Value > CallFunctionOn(Local< Context > context, Local< Function > function, Local< Value > recv, base::Vector< Local< Value > > args, bool throw_on_side_effect)
void ResetBlackboxedStateCache(Isolate *v8_isolate, Local< Script > script)
base::EnumSet< BreakReason > BreakReasons
void GlobalLexicalScopeNames(v8::Local< v8::Context > v8_context, std::vector< v8::Global< v8::String > > *names)
void BreakRightNow(Isolate *v8_isolate, base::EnumSet< debug::BreakReason > break_reasons)
void SetReturnValue(v8::Isolate *v8_isolate, v8::Local< v8::Value > value)
void SetBreakOnNextFunctionCall(Isolate *isolate)
bool CanBreakProgram(Isolate *v8_isolate)
bool GetPrivateMembers(Local< Context > context, Local< Object > object, int filter, LocalVector< Value > *names_out, LocalVector< Value > *values_out)
void ForceGarbageCollection(Isolate *isolate, StackState embedder_stack_state)
void ChangeBreakOnException(Isolate *isolate, ExceptionBreakState type)
MaybeLocal< UnboundScript > CompileInspectorScript(Isolate *v8_isolate, Local< String > source)
Local< Function > GetBuiltin(Isolate *v8_isolate, Builtin requested_builtin)
bool SetFunctionBreakpoint(v8::Local< v8::Function > function, v8::Local< v8::String > condition, BreakpointId *id)
void SetConsoleDelegate(Isolate *v8_isolate, ConsoleDelegate *delegate)
MaybeLocal< Array > GetInternalProperties(Isolate *v8_isolate, Local< Value > value)
int GetContextId(Local< Context > context)
void SetIsolateId(v8::Isolate *v8_isolate, uint64_t id)
void SetTerminateOnResume(Isolate *v8_isolate)
Local< String > GetDateDescription(Local< Date > date)
MaybeLocal< v8::Value > EvaluateGlobal(v8::Isolate *isolate, v8::Local< v8::String > source, EvaluateGlobalMode mode, bool repl)
Local< String > GetFunctionDescription(Local< Function > function)
int64_t GetNextRandomInt64(v8::Isolate *v8_isolate)
void PrepareStep(Isolate *v8_isolate, StepAction action)
void ClearStepping(Isolate *v8_isolate)
MaybeLocal< Message > GetMessageFromPromise(Local< Promise > p)
void RemoveBreakpoint(Isolate *v8_isolate, BreakpointId id)
Platform * GetCurrentPlatform()
void RecordAsyncStackTaggingCreateTaskCall(v8::Isolate *v8_isolate)
int GetDebuggingId(v8::Local< v8::Function > function)
Local< String > GetBigIntStringValue(Isolate *isolate, Local< BigInt > bigint)
void GetLoadedScripts(Isolate *v8_isolate, std::vector< v8::Global< Script > > &scripts)
void SetAsyncEventDelegate(Isolate *v8_isolate, AsyncEventDelegate *delegate)
void ClearBreakOnNextFunctionCall(Isolate *isolate)
void NotifyDebuggerPausedEventSent(v8::Isolate *v8_isolate)
void SetInspector(Isolate *isolate, v8_inspector::V8Inspector *inspector)
uint64_t GetIsolateId(v8::Isolate *v8_isolate)
void SetContextId(Local< Context > context, int id)
v8_inspector::V8Inspector * GetInspector(Isolate *isolate)
v8::Local< v8::Message > CreateMessageFromException(Isolate *v8_isolate, v8::Local< v8::Value > v8_error)
void SetDebugDelegate(Isolate *v8_isolate, DebugDelegate *delegate)
MaybeLocal< Context > GetCreationContext(Local< Object > value)
Local< String > GetBigIntDescription(Isolate *isolate, Local< BigInt > bigint)
#define V8_EXPORT_PRIVATE
Definition macros.h:460
v8::Local< v8::String > message
v8::Local< v8::debug::Script > script
v8::Local< v8::Value > value
v8::Local< v8::Value > set
v8::Local< v8::Value > get
#define V8_INLINE
Definition v8config.h:500
#define V8_WARN_UNUSED_RESULT
Definition v8config.h:671
#define V8_NODISCARD
Definition v8config.h:693
std::unique_ptr< ValueMirror > value
std::unique_ptr< ValueMirror > key
wasm::ValueType type