blob: 1ca08caea12e4c8c2808e7ae44b9690b9ad9c66f [file]
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@cppObjectLayoutDefinition
extern class BreakPoint extends Struct {
id: Smi;
condition: String;
}
@cppObjectLayoutDefinition
extern class BreakPointInfo extends Struct {
// The position in the source for the break position.
source_position: Smi;
// List of related JavaScript break points.
break_points: FixedArray|BreakPoint|Undefined;
}
@cppScope('DebugInfo')
bitfield struct DebugInfoFlags extends uint31 {
has_break_info: bool: 1 bit;
prepared_for_debug_execution: bool: 1 bit;
has_coverage_info: bool: 1 bit;
break_at_entry: bool: 1 bit;
can_break_at_entry: bool: 1 bit;
debug_execution_mode: bool: 1 bit;
}
@cppScope('DebugInfo')
bitfield struct DebuggerHints extends uint31 {
side_effect_state: int32: 2 bit;
debug_is_blackboxed: bool: 1 bit;
computed_debug_is_blackboxed: bool: 1 bit;
debugging_id: int32: 20 bit;
}
@cppObjectLayoutDefinition
extern class DebugInfo extends ExposedTrustedObject {
shared: SharedFunctionInfo;
// Bit field containing various information collected for debugging.
debugger_hints: SmiTagged<DebuggerHints>;
// Fixed array holding status information for each active break point.
break_points: FixedArray;
// A bitfield that lists uses of the current instance.
@cppRelaxedLoad @cppRelaxedStore flags: SmiTagged<DebugInfoFlags>;
coverage_info: CoverageInfo|Undefined;
// The original uninstrumented bytecode array for functions with break
// points - the instrumented bytecode is held in the shared function info.
// Can contain Smi::zero() if cleared.
original_bytecode_array: ProtectedPointer<BytecodeArray>;
// The debug instrumented bytecode array for functions with break points
// - also pointed to by the shared function info.
// Can contain Smi::zero() if cleared.
debug_bytecode_array: ProtectedPointer<BytecodeArray>;
}
@export
struct CoverageInfoSlot {
start_source_position: int32;
end_source_position: int32;
block_count: int32;
padding: int32; // Padding to make the index count 4.
}
// CoverageInfo's visitor is included in DATA_ONLY_VISITOR_ID_LIST, so it must
// not contain any HeapObject fields.
@cppObjectLayoutDefinition
extern class CoverageInfo extends HeapObject {
const slot_count: int32;
slots[slot_count]: CoverageInfoSlot;
}
@cppScope('StackFrameInfo')
bitfield struct StackFrameInfoFlags extends uint31 {
is_constructor: bool: 1 bit;
}
@cppObjectLayoutDefinition
extern class StackFrameInfo extends Struct {
// In case this field holds a SharedFunctionInfo, the
// |bytecode_offset_or_source_position| part of the
// |flags| bit field below contains the bytecode offset
// within that SharedFunctionInfo. Otherwise if this
// is a Script, the |bytecode_offset_or_source_position|
// holds the source position within the Script.
shared_or_script: SharedFunctionInfo|Script;
function_name: String;
flags: SmiTagged<StackFrameInfoFlags>;
bytecode_offset_or_source_position: Smi;
}
@cppObjectLayoutDefinition
extern class StackTraceInfo extends Struct {
// Unique ID of this stack trace.
id: Smi;
// FixedArray of StackFrameInfos.
frames: FixedArray;
}
// This struct is used by V8 as error_data_symbol on JSError
// instances when the inspector asks V8 to keep (detailed)
// stack traces in addition to the (simple) stack traces that
// are collected by V8 for error.stack.
//
// This can have one of the following forms:
//
// (1) A FixedArray<CallSiteInfo> and StackTraceInfo pair
// indicates that the inspector already asked for the
// detailed stack information, but the error.stack
// property was not yet formatted.
// (2) A valid JavaScript object and StackTraceInfo once
// error.stack was accessed.
@cppObjectLayoutDefinition
extern class ErrorStackData extends Struct {
// This holds either the FixedArray of raw data for constructing the
// CallSiteInfo instances or the formatted stack value (usually a string)
// that's returned from the error.stack property.
raw_data_for_call_site_infos_or_formatted_stack: FixedArray|JSAny;
// This holds the StackTraceInfo for inspector stack trace.
stack_trace: StackTraceInfo;
}
// DebugScriptScopeInfo holds the serialized scope tree of a Script for the
// debugger. It caches lexical scope information (scopes, variables, positions)
// to avoid reparsing the script on every pause or debug evaluate.
//
// By default, V8 does not create instances of `DebugScriptScopeInfo`. Only
// when the debugger is turned on AND we pause in a script the first time.
//
// The exact encoding of the data in `numeric_data` is described in
// src/debug/debug-scope-info.cc.
@cppObjectLayoutDefinition
extern class DebugScriptScopeInfo extends Struct {
numeric_data: ByteArray;
string_table: FixedArray;
}