1// Copyright 2019 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 5type TieringState extends uint16 constexpr 'TieringState'; 6 7bitfield struct FeedbackVectorFlags extends uint32 { 8 tiering_state: TieringState: 3 bit; 9 // Whether the maybe_optimized_code field contains a code object. 'maybe', 10 // because they flag may lag behind the actual state of the world (it will be 11 // updated in time). 12 maybe_has_optimized_code: bool: 1 bit; 13 // Just one bit, since only {kNone,kInProgress} are relevant for OSR. 14 osr_tiering_state: TieringState: 1 bit; 15 all_your_bits_are_belong_to_jgruber: uint32: 27 bit; 16} 17 18@generateBodyDescriptor 19extern class FeedbackVector extends HeapObject { 20 const length: int32; 21 invocation_count: int32; 22 profiler_ticks: int32; 23 // TODO(turboprop, v8:11010): This field could be removed by changing the 24 // tier up checks for Turboprop. If removing this field also check v8:9287. 25 // Padding was necessary for GCMole. 26 flags: FeedbackVectorFlags; 27 shared_function_info: SharedFunctionInfo; 28 closure_feedback_cell_array: ClosureFeedbackCellArray; 29 @if(V8_EXTERNAL_CODE_SPACE) maybe_optimized_code: Weak<CodeDataContainer>; 30 @ifnot(V8_EXTERNAL_CODE_SPACE) maybe_optimized_code: Weak<Code>; 31 @cppRelaxedLoad raw_feedback_slots[length]: MaybeObject; 32} 33 34extern class FeedbackMetadata extends HeapObject; 35