16constexpr size_t size_to_shift(
size_t size) {
33#define SHIFT(Type, type, TYPE, ctype) size_to_shift(sizeof(ctype)),
39#define SIZE(Type, type, TYPE, ctype) sizeof(ctype),
44#define VERIFY_SHIFT(Type, type, TYPE, ctype) \
46 kTypedArrayAndRabGsabTypedArrayElementsKindShifts \
47 [ElementsKind::TYPE##_ELEMENTS - \
48 ElementsKind::FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND] == \
49 ElementsKindToShiftSize(ElementsKind::TYPE##_ELEMENTS), \
50 "Shift of ElementsKind::" #TYPE \
51 "_ELEMENTS does not match in static table");
56#define VERIFY_SIZE(Type, type, TYPE, ctype) \
58 kTypedArrayAndRabGsabTypedArrayElementsKindSizes \
59 [ElementsKind::TYPE##_ELEMENTS - \
60 ElementsKind::FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND] == \
61 ElementsKindToByteSize(ElementsKind::TYPE##_ELEMENTS), \
62 "Size of ElementsKind::" #TYPE \
63 "_ELEMENTS does not match in static table");
90 return "PACKED_SMI_ELEMENTS";
92 return "HOLEY_SMI_ELEMENTS";
94 return "PACKED_ELEMENTS";
96 return "HOLEY_ELEMENTS";
98 return "PACKED_DOUBLE_ELEMENTS";
100 return "HOLEY_DOUBLE_ELEMENTS";
102 return "PACKED_NONEXTENSIBLE_ELEMENTS";
104 return "HOLEY_NONEXTENSIBLE_ELEMENTS";
106 return "PACKED_SEALED_ELEMENTS";
108 return "HOLEY_SEALED_ELEMENTS";
110 return "PACKED_FROZEN_ELEMENTS";
112 return "HOLEY_FROZEN_ELEMENTS";
114 return "DICTIONARY_ELEMENTS";
116 return "FAST_SLOPPY_ARGUMENTS_ELEMENTS";
118 return "SLOW_SLOPPY_ARGUMENTS_ELEMENTS";
120 return "FAST_STRING_WRAPPER_ELEMENTS";
122 return "SLOW_STRING_WRAPPER_ELEMENTS";
124#define PRINT_NAME(Type, type, TYPE, _) \
125 case TYPE##_ELEMENTS: \
126 return #TYPE "ELEMENTS";
132 return "WASM_ARRAY_ELEMENTS";
134 return "SHARED_ARRAY_ELEMENTS";
136 return "NO_ELEMENTS";
210 "ElementsKind union not computable via std::max.");
212 "ElementsKind union not computable via std::max.");
214 "ElementsKind union not computable via std::max.");
216 "ElementsKind union not computable via std::max.");
#define PRINT_NAME(Type, type, TYPE, _)
#define VERIFY_SHIFT(Type, type, TYPE, ctype)
#define SHIFT(Type, type, TYPE, ctype)
#define SIZE(Type, type, TYPE, ctype)
#define VERIFY_SIZE(Type, type, TYPE, ctype)
#define RAB_GSAB_TYPED_ARRAYS(V)
constexpr int kFastElementsKindCount
ElementsKind GetFastElementsKindFromSequenceIndex(int sequence_number)
bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, ElementsKind to_kind)
constexpr uint8_t kTypedArrayAndRabGsabTypedArrayElementsKindSizes[]
const uint8_t * TypedArrayAndRabGsabTypedArrayElementsKindShifts()
constexpr int kFastElementsKindPackedToHoley
static bool IsFastTransitionTarget(ElementsKind elements_kind)
@ HOLEY_NONEXTENSIBLE_ELEMENTS
@ FIRST_FAST_ELEMENTS_KIND
@ SLOW_STRING_WRAPPER_ELEMENTS
@ PACKED_NONEXTENSIBLE_ELEMENTS
@ SLOW_SLOPPY_ARGUMENTS_ELEMENTS
@ FAST_SLOPPY_ARGUMENTS_ELEMENTS
@ FAST_STRING_WRAPPER_ELEMENTS
const char * ElementsKindToString(ElementsKind kind)
std::ostream & operator<<(std::ostream &os, AtomicMemoryOrder order)
int GetSequenceIndexFromFastElementsKind(ElementsKind elements_kind)
int GetDefaultHeaderSizeForElementsKind(ElementsKind elements_kind)
const ElementsKind kFastElementsKindSequence[kFastElementsKindCount]
DONT_OVERRIDE DISABLE_ALLOCATION_SITES HOLEY_ELEMENTS
ElementsKind GetNextTransitionElementsKind(ElementsKind kind)
bool IsFastElementsKind(ElementsKind kind)
DONT_OVERRIDE DISABLE_ALLOCATION_SITES DISABLE_ALLOCATION_SITES HOLEY_DOUBLE_ELEMENTS
bool UnionElementsKindUptoSize(ElementsKind *a_out, ElementsKind b)
const uint8_t * TypedArrayAndRabGsabTypedArrayElementsKindSizes()
bool IsTypedArrayOrRabGsabTypedArrayElementsKind(ElementsKind kind)
constexpr uint8_t kTypedArrayAndRabGsabTypedArrayElementsKindShifts[]
#define DCHECK(condition)
#define OFFSET_OF_DATA_START(Type)