| // 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. |
| |
| type OptimizationMarker extends uint16 constexpr 'OptimizationMarker'; |
| type OptimizationTier extends uint16 constexpr 'OptimizationTier'; |
| |
| bitfield struct FeedbackVectorFlags extends uint32 { |
| optimization_marker: OptimizationMarker: 3 bit; |
| optimization_tier: OptimizationTier: 2 bit; |
| } |
| |
| @generateBodyDescriptor |
| @generateCppClass |
| extern class FeedbackVector extends HeapObject { |
| const length: int32; |
| invocation_count: int32; |
| profiler_ticks: int32; |
| // TODO(turboprop, v8:11010): This field could be removed by changing the |
| // tier up checks for Turboprop. If removing this field also check v8:9287. |
| // Padding was necessary for GCMole. |
| flags: FeedbackVectorFlags; |
| shared_function_info: SharedFunctionInfo; |
| maybe_optimized_code: Weak<Code>; |
| closure_feedback_cell_array: ClosureFeedbackCellArray; |
| raw_feedback_slots[length]: MaybeObject; |
| } |
| |
| extern class FeedbackMetadata extends HeapObject; |