• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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