// 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; // Script field from shared function info. script: Undefined|Script; // The original uninstrumented bytecode array for functions with break // points - the instrumented bytecode is held in the shared function info. @cppAcquireLoad @cppReleaseStore original_bytecode_array: Undefined|BytecodeArray; // The debug instrumented bytecode array for functions with break points // - also pointed to by the shared function info. @cppAcquireLoad @cppReleaseStore debug_bytecode_array: Undefined|BytecodeArray; // 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; coverage_info: CoverageInfo|Undefined; } @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; }