// 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;
