| // 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. |
| |
| extern class BreakPoint extends Struct { |
| id: Smi; |
| condition: String; |
| } |
| |
| 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; |
| } |
| |
| 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; |
| } |
| |
| 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; |
| } |
| |
| extern class DebugInfo extends Struct { |
| 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: TrustedPointer<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: TrustedPointer<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. |
| extern class CoverageInfo extends HeapObject { |
| const slot_count: int32; |
| slots[slot_count]: CoverageInfoSlot; |
| } |
| |
| bitfield struct StackFrameInfoFlags extends uint31 { |
| is_constructor: bool: 1 bit; |
| bytecode_offset_or_source_position: int32: 30 bit; |
| } |
| |
| 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>; |
| } |
| |
| 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. |
| extern class ErrorStackData extends Struct { |
| // This holds either the FixedArray of CallSiteInfo instances or |
| // the formatted stack value (usually a string) that's returned |
| // from the error.stack property. |
| call_site_infos_or_formatted_stack: FixedArray|JSAny; |
| // This holds the StackTraceInfo for inspector stack trace. |
| stack_trace: StackTraceInfo; |
| } |