// 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. @generateCppClass extern class PreparseData extends HeapObject { // TODO(v8:8983): Add declaration for variable-sized region. data_length: int32; children_length: int32; } extern class InterpreterData extends Struct { bytecode_array: BytecodeArray; interpreter_trampoline: Code; } type FunctionKind extends uint8 constexpr 'v8::internal::FunctionKind'; type FunctionSyntaxKind extends uint8 constexpr 'v8::internal::FunctionSyntaxKind'; type BailoutReason extends uint8 constexpr 'v8::internal::BailoutReason'; bitfield struct SharedFunctionInfoFlags extends uint32 { // Have FunctionKind first to make it cheaper to access. function_kind: FunctionKind: 5 bit; is_native: bool: 1 bit; is_strict: bool: 1 bit; function_syntax_kind: FunctionSyntaxKind: 3 bit; is_class_constructor: bool: 1 bit; has_duplicate_parameters: bool: 1 bit; allow_lazy_compilation: bool: 1 bit; needs_home_object: bool: 1 bit; is_asm_wasm_broken: bool: 1 bit; function_map_index: uint32: 5 bit; disabled_optimization_reason: BailoutReason: 4 bit; requires_instance_members_initializer: bool: 1 bit; construct_as_builtin: bool: 1 bit; name_should_print_as_anonymous: bool: 1 bit; has_reported_binary_coverage: bool: 1 bit; is_top_level: bool: 1 bit; is_oneshot_iife_or_properties_are_final: bool: 1 bit; is_safe_to_skip_arguments_adaptor: bool: 1 bit; private_name_lookup_skips_outer_class: bool: 1 bit; } extern class SharedFunctionInfo extends HeapObject { weak function_data: Object; name_or_scope_info: String|NoSharedNameSentinel|ScopeInfo; outer_scope_info_or_feedback_metadata: HeapObject; script_or_debug_info: Script|DebugInfo|Undefined; length: int16; formal_parameter_count: uint16; // Currently set to uint16, can be set to uint8 to save space. expected_nof_properties: uint16; function_token_offset: int16; flags: SharedFunctionInfoFlags; function_literal_id: int32; @if(V8_SFI_HAS_UNIQUE_ID) unique_id: int32; } @abstract @generateCppClass extern class UncompiledData extends HeapObject { inferred_name: String; start_position: int32; end_position: int32; } @generateCppClass extern class UncompiledDataWithoutPreparseData extends UncompiledData { } @generateCppClass extern class UncompiledDataWithPreparseData extends UncompiledData { preparse_data: PreparseData; }