Lines Matching refs:kind

79   // The "fast" kind for elements that only contain SMI values. Must be first
80 // to make it possible to efficiently check maps for this kind.
84 // The "fast" kind for tagged values. Must be second to make it possible to
85 // efficiently check maps for this and the PACKED_SMI_ELEMENTS kind
90 // The "fast" kind for unwrapped, non-tagged double values.
94 // The nonextensible kind for elements.
98 // The sealed kind for elements.
102 // The frozen kind for elements.
106 // The "slow" kind.
109 // Elements kind of the "arguments" object (only in sloppy mode).
124 // WasmObject elements kind. The actual elements type is read from the
156 // The number to add to a packed elements kind to reach a holey elements kind
171 const char* ElementsKindToString(ElementsKind kind);
180 inline bool IsDictionaryElementsKind(ElementsKind kind) {
181 return kind == DICTIONARY_ELEMENTS;
184 inline bool IsFastArgumentsElementsKind(ElementsKind kind) {
185 return kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS;
188 inline bool IsSlowArgumentsElementsKind(ElementsKind kind) {
189 return kind == SLOW_SLOPPY_ARGUMENTS_ELEMENTS;
192 inline bool IsSloppyArgumentsElementsKind(ElementsKind kind) {
193 return base::IsInRange(kind, FAST_SLOPPY_ARGUMENTS_ELEMENTS,
197 inline bool IsStringWrapperElementsKind(ElementsKind kind) {
198 return base::IsInRange(kind, FAST_STRING_WRAPPER_ELEMENTS,
202 inline bool IsTypedArrayElementsKind(ElementsKind kind) {
203 return base::IsInRange(kind, FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
207 inline bool IsRabGsabTypedArrayElementsKind(ElementsKind kind) {
208 return base::IsInRange(kind, FIRST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
212 inline bool IsTypedArrayOrRabGsabTypedArrayElementsKind(ElementsKind kind) {
213 return base::IsInRange(kind, FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND,
217 inline bool IsBigIntTypedArrayElementsKind(ElementsKind kind) {
218 return kind == BIGINT64_ELEMENTS || kind == BIGUINT64_ELEMENTS ||
219 kind == RAB_GSAB_BIGINT64_ELEMENTS ||
220 kind == RAB_GSAB_BIGUINT64_ELEMENTS;
223 inline bool IsFloatTypedArrayElementsKind(ElementsKind kind) {
224 return kind == FLOAT32_ELEMENTS || kind == FLOAT64_ELEMENTS ||
225 kind == RAB_GSAB_FLOAT32_ELEMENTS || kind == RAB_GSAB_FLOAT64_ELEMENTS;
228 inline bool IsWasmArrayElementsKind(ElementsKind kind) {
229 return kind == WASM_ARRAY_ELEMENTS;
232 inline bool IsTerminalElementsKind(ElementsKind kind) {
233 return kind == TERMINAL_FAST_ELEMENTS_KIND ||
234 IsTypedArrayElementsKind(kind) ||
235 IsRabGsabTypedArrayElementsKind(kind);
238 inline bool IsFastElementsKind(ElementsKind kind) {
240 return kind <= LAST_FAST_ELEMENTS_KIND;
243 inline bool IsTransitionElementsKind(ElementsKind kind) {
244 return IsFastElementsKind(kind) || IsTypedArrayElementsKind(kind) ||
245 kind == FAST_SLOPPY_ARGUMENTS_ELEMENTS ||
246 kind == FAST_STRING_WRAPPER_ELEMENTS;
249 inline bool IsDoubleElementsKind(ElementsKind kind) {
250 return base::IsInRange(kind, PACKED_DOUBLE_ELEMENTS, HOLEY_DOUBLE_ELEMENTS);
253 inline bool IsFixedFloatElementsKind(ElementsKind kind) {
254 return kind == FLOAT32_ELEMENTS || kind == FLOAT64_ELEMENTS;
257 inline bool IsDoubleOrFloatElementsKind(ElementsKind kind) {
258 return IsDoubleElementsKind(kind) || IsFixedFloatElementsKind(kind);
262 inline bool IsAnyNonextensibleElementsKindUnchecked(ElementsKind kind) {
263 return base::IsInRange(kind, FIRST_ANY_NONEXTENSIBLE_ELEMENTS_KIND,
267 inline bool IsAnyNonextensibleElementsKind(ElementsKind kind) {
268 DCHECK_IMPLIES(IsAnyNonextensibleElementsKindUnchecked(kind),
270 return IsAnyNonextensibleElementsKindUnchecked(kind);
273 inline bool IsNonextensibleElementsKind(ElementsKind kind) {
274 DCHECK_IMPLIES(base::IsInRange(kind, PACKED_NONEXTENSIBLE_ELEMENTS,
277 return base::IsInRange(kind, PACKED_NONEXTENSIBLE_ELEMENTS,
281 inline bool IsSealedElementsKind(ElementsKind kind) {
283 base::IsInRange(kind, PACKED_SEALED_ELEMENTS, HOLEY_SEALED_ELEMENTS),
285 return base::IsInRange(kind, PACKED_SEALED_ELEMENTS, HOLEY_SEALED_ELEMENTS);
288 inline bool IsFrozenElementsKind(ElementsKind kind) {
290 base::IsInRange(kind, PACKED_FROZEN_ELEMENTS, HOLEY_FROZEN_ELEMENTS),
292 return base::IsInRange(kind, PACKED_FROZEN_ELEMENTS, HOLEY_FROZEN_ELEMENTS);
295 inline bool IsSmiOrObjectElementsKind(ElementsKind kind) {
296 return base::IsInRange(kind, PACKED_SMI_ELEMENTS, HOLEY_ELEMENTS);
299 inline bool IsSmiElementsKind(ElementsKind kind) {
300 return base::IsInRange(kind, PACKED_SMI_ELEMENTS, HOLEY_SMI_ELEMENTS);
303 inline bool IsFastNumberElementsKind(ElementsKind kind) {
304 return IsSmiElementsKind(kind) || IsDoubleElementsKind(kind);
307 inline bool IsObjectElementsKind(ElementsKind kind) {
308 return base::IsInRange(kind, PACKED_ELEMENTS, HOLEY_ELEMENTS);
311 inline bool IsAnyHoleyNonextensibleElementsKind(ElementsKind kind) {
312 DCHECK_IMPLIES(kind == HOLEY_NONEXTENSIBLE_ELEMENTS ||
313 kind == HOLEY_SEALED_ELEMENTS ||
314 kind == HOLEY_FROZEN_ELEMENTS,
316 return kind == HOLEY_NONEXTENSIBLE_ELEMENTS ||
317 kind == HOLEY_SEALED_ELEMENTS || kind == HOLEY_FROZEN_ELEMENTS;
320 inline bool IsHoleyElementsKind(ElementsKind kind) {
321 return kind % 2 == 1 && kind <= HOLEY_DOUBLE_ELEMENTS;
324 inline bool IsHoleyElementsKindForRead(ElementsKind kind) {
325 return kind % 2 == 1 && kind <= HOLEY_FROZEN_ELEMENTS;
328 inline bool IsHoleyOrDictionaryElementsKind(ElementsKind kind) {
329 return IsHoleyElementsKindForRead(kind) || kind == DICTIONARY_ELEMENTS;
332 inline bool IsFastPackedElementsKind(ElementsKind kind) {
333 return kind % 2 == 0 && kind <= PACKED_DOUBLE_ELEMENTS;