11cb0ef41Sopenharmony_ci// Copyright 2014 the V8 project authors. All rights reserved.
21cb0ef41Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be
31cb0ef41Sopenharmony_ci// found in the LICENSE file.
41cb0ef41Sopenharmony_ci
51cb0ef41Sopenharmony_ci#include "src/compiler/access-builder.h"
61cb0ef41Sopenharmony_ci
71cb0ef41Sopenharmony_ci#include "src/compiler/type-cache.h"
81cb0ef41Sopenharmony_ci#include "src/execution/frames.h"
91cb0ef41Sopenharmony_ci#include "src/handles/handles-inl.h"
101cb0ef41Sopenharmony_ci#include "src/heap/heap.h"
111cb0ef41Sopenharmony_ci#include "src/objects/arguments.h"
121cb0ef41Sopenharmony_ci#include "src/objects/cell.h"
131cb0ef41Sopenharmony_ci#include "src/objects/contexts.h"
141cb0ef41Sopenharmony_ci#include "src/objects/heap-number.h"
151cb0ef41Sopenharmony_ci#include "src/objects/js-collection.h"
161cb0ef41Sopenharmony_ci#include "src/objects/js-generator.h"
171cb0ef41Sopenharmony_ci#include "src/objects/objects-inl.h"
181cb0ef41Sopenharmony_ci#include "src/objects/ordered-hash-table.h"
191cb0ef41Sopenharmony_ci#include "src/objects/source-text-module.h"
201cb0ef41Sopenharmony_ci
211cb0ef41Sopenharmony_cinamespace v8 {
221cb0ef41Sopenharmony_cinamespace internal {
231cb0ef41Sopenharmony_cinamespace compiler {
241cb0ef41Sopenharmony_ci
251cb0ef41Sopenharmony_ci// static
261cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForExternalIntPtr() {
271cb0ef41Sopenharmony_ci  FieldAccess access = {kUntaggedBase,      0,           MaybeHandle<Name>(),
281cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(), Type::Any(), MachineType::IntPtr(),
291cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
301cb0ef41Sopenharmony_ci  return access;
311cb0ef41Sopenharmony_ci}
321cb0ef41Sopenharmony_ci
331cb0ef41Sopenharmony_ci// static
341cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMap(WriteBarrierKind write_barrier) {
351cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           HeapObject::kMapOffset,
361cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
371cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::MapInHeader(),
381cb0ef41Sopenharmony_ci                        write_barrier};
391cb0ef41Sopenharmony_ci  return access;
401cb0ef41Sopenharmony_ci}
411cb0ef41Sopenharmony_ci
421cb0ef41Sopenharmony_ci// static
431cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForHeapNumberValue() {
441cb0ef41Sopenharmony_ci  FieldAccess access = {
451cb0ef41Sopenharmony_ci      kTaggedBase,        HeapNumber::kValueOffset,   MaybeHandle<Name>(),
461cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kFloat64, MachineType::Float64(),
471cb0ef41Sopenharmony_ci      kNoWriteBarrier};
481cb0ef41Sopenharmony_ci  return access;
491cb0ef41Sopenharmony_ci}
501cb0ef41Sopenharmony_ci
511cb0ef41Sopenharmony_ci// static
521cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForBigIntBitfield() {
531cb0ef41Sopenharmony_ci  FieldAccess access = {
541cb0ef41Sopenharmony_ci      kTaggedBase,        BigInt::kBitfieldOffset,  MaybeHandle<Name>(),
551cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kInt32, MachineType::Uint32(),
561cb0ef41Sopenharmony_ci      kNoWriteBarrier};
571cb0ef41Sopenharmony_ci  return access;
581cb0ef41Sopenharmony_ci}
591cb0ef41Sopenharmony_ci
601cb0ef41Sopenharmony_ci// static
611cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForBigIntOptionalPadding() {
621cb0ef41Sopenharmony_ci  DCHECK_EQ(FIELD_SIZE(BigInt::kOptionalPaddingOffset), 4);
631cb0ef41Sopenharmony_ci  FieldAccess access = {
641cb0ef41Sopenharmony_ci      kTaggedBase,        BigInt::kOptionalPaddingOffset, MaybeHandle<Name>(),
651cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kInt32,       MachineType::Uint32(),
661cb0ef41Sopenharmony_ci      kNoWriteBarrier};
671cb0ef41Sopenharmony_ci  return access;
681cb0ef41Sopenharmony_ci}
691cb0ef41Sopenharmony_ci
701cb0ef41Sopenharmony_ci// static
711cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForBigIntLeastSignificantDigit64() {
721cb0ef41Sopenharmony_ci  DCHECK_EQ(BigInt::SizeFor(1) - BigInt::SizeFor(0), 8);
731cb0ef41Sopenharmony_ci  FieldAccess access = {
741cb0ef41Sopenharmony_ci      kTaggedBase,        BigInt::kDigitsOffset,        MaybeHandle<Name>(),
751cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kBigUint64, MachineType::Uint64(),
761cb0ef41Sopenharmony_ci      kNoWriteBarrier};
771cb0ef41Sopenharmony_ci  return access;
781cb0ef41Sopenharmony_ci}
791cb0ef41Sopenharmony_ci
801cb0ef41Sopenharmony_ci// static
811cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSObjectPropertiesOrHash() {
821cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSObject::kPropertiesOrHashOffset,
831cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
841cb0ef41Sopenharmony_ci                        Type::Any(),         MachineType::AnyTagged(),
851cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
861cb0ef41Sopenharmony_ci  return access;
871cb0ef41Sopenharmony_ci}
881cb0ef41Sopenharmony_ci
891cb0ef41Sopenharmony_ci// static
901cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSObjectPropertiesOrHashKnownPointer() {
911cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSObject::kPropertiesOrHashOffset,
921cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
931cb0ef41Sopenharmony_ci                        Type::Any(),         MachineType::TaggedPointer(),
941cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
951cb0ef41Sopenharmony_ci  return access;
961cb0ef41Sopenharmony_ci}
971cb0ef41Sopenharmony_ci
981cb0ef41Sopenharmony_ci// static
991cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSObjectElements() {
1001cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSObject::kElementsOffset,
1011cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
1021cb0ef41Sopenharmony_ci                        Type::Internal(),    MachineType::TaggedPointer(),
1031cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
1041cb0ef41Sopenharmony_ci  return access;
1051cb0ef41Sopenharmony_ci}
1061cb0ef41Sopenharmony_ci
1071cb0ef41Sopenharmony_ci// static
1081cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSObjectInObjectProperty(
1091cb0ef41Sopenharmony_ci    const MapRef& map, int index, MachineType machine_type) {
1101cb0ef41Sopenharmony_ci  int const offset = map.GetInObjectPropertyOffset(index);
1111cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         offset,
1121cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
1131cb0ef41Sopenharmony_ci                        Type::NonInternal(), machine_type,
1141cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
1151cb0ef41Sopenharmony_ci  return access;
1161cb0ef41Sopenharmony_ci}
1171cb0ef41Sopenharmony_ci
1181cb0ef41Sopenharmony_ci// static
1191cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSObjectOffset(
1201cb0ef41Sopenharmony_ci    int offset, WriteBarrierKind write_barrier_kind) {
1211cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         offset,
1221cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
1231cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
1241cb0ef41Sopenharmony_ci                        write_barrier_kind};
1251cb0ef41Sopenharmony_ci  return access;
1261cb0ef41Sopenharmony_ci}
1271cb0ef41Sopenharmony_ci
1281cb0ef41Sopenharmony_ci// static
1291cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSCollectionTable() {
1301cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           JSCollection::kTableOffset,
1311cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
1321cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
1331cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
1341cb0ef41Sopenharmony_ci  return access;
1351cb0ef41Sopenharmony_ci}
1361cb0ef41Sopenharmony_ci
1371cb0ef41Sopenharmony_ci// static
1381cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSCollectionIteratorTable() {
1391cb0ef41Sopenharmony_ci  FieldAccess access = {
1401cb0ef41Sopenharmony_ci      kTaggedBase,           JSCollectionIterator::kTableOffset,
1411cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),   MaybeHandle<Map>(),
1421cb0ef41Sopenharmony_ci      Type::OtherInternal(), MachineType::TaggedPointer(),
1431cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
1441cb0ef41Sopenharmony_ci  return access;
1451cb0ef41Sopenharmony_ci}
1461cb0ef41Sopenharmony_ci
1471cb0ef41Sopenharmony_ci// static
1481cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSCollectionIteratorIndex() {
1491cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
1501cb0ef41Sopenharmony_ci                        JSCollectionIterator::kIndexOffset,
1511cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
1521cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
1531cb0ef41Sopenharmony_ci                        TypeCache::Get()->kFixedArrayLengthType,
1541cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
1551cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
1561cb0ef41Sopenharmony_ci  return access;
1571cb0ef41Sopenharmony_ci}
1581cb0ef41Sopenharmony_ci
1591cb0ef41Sopenharmony_ci// static
1601cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() {
1611cb0ef41Sopenharmony_ci  FieldAccess access = {
1621cb0ef41Sopenharmony_ci      kTaggedBase,         JSFunction::kPrototypeOrInitialMapOffset,
1631cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
1641cb0ef41Sopenharmony_ci      Type::Any(),         MachineType::TaggedPointer(),
1651cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
1661cb0ef41Sopenharmony_ci  return access;
1671cb0ef41Sopenharmony_ci}
1681cb0ef41Sopenharmony_ci
1691cb0ef41Sopenharmony_ci// static
1701cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSFunctionContext() {
1711cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSFunction::kContextOffset,
1721cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
1731cb0ef41Sopenharmony_ci                        Type::Internal(),    MachineType::TaggedPointer(),
1741cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
1751cb0ef41Sopenharmony_ci  return access;
1761cb0ef41Sopenharmony_ci}
1771cb0ef41Sopenharmony_ci
1781cb0ef41Sopenharmony_ci// static
1791cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() {
1801cb0ef41Sopenharmony_ci  FieldAccess access = {
1811cb0ef41Sopenharmony_ci      kTaggedBase,           JSFunction::kSharedFunctionInfoOffset,
1821cb0ef41Sopenharmony_ci      Handle<Name>(),        MaybeHandle<Map>(),
1831cb0ef41Sopenharmony_ci      Type::OtherInternal(), MachineType::TaggedPointer(),
1841cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
1851cb0ef41Sopenharmony_ci  return access;
1861cb0ef41Sopenharmony_ci}
1871cb0ef41Sopenharmony_ci
1881cb0ef41Sopenharmony_ci// static
1891cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSFunctionFeedbackCell() {
1901cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSFunction::kFeedbackCellOffset,
1911cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
1921cb0ef41Sopenharmony_ci                        Type::Internal(),    MachineType::TaggedPointer(),
1931cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
1941cb0ef41Sopenharmony_ci  return access;
1951cb0ef41Sopenharmony_ci}
1961cb0ef41Sopenharmony_ci
1971cb0ef41Sopenharmony_ci// static
1981cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSFunctionCode() {
1991cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           JSFunction::kCodeOffset,
2001cb0ef41Sopenharmony_ci                        Handle<Name>(),        MaybeHandle<Map>(),
2011cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
2021cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
2031cb0ef41Sopenharmony_ci  return access;
2041cb0ef41Sopenharmony_ci}
2051cb0ef41Sopenharmony_ci
2061cb0ef41Sopenharmony_ci// static
2071cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSBoundFunctionBoundTargetFunction() {
2081cb0ef41Sopenharmony_ci  FieldAccess access = {
2091cb0ef41Sopenharmony_ci      kTaggedBase,         JSBoundFunction::kBoundTargetFunctionOffset,
2101cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
2111cb0ef41Sopenharmony_ci      Type::Callable(),    MachineType::TaggedPointer(),
2121cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
2131cb0ef41Sopenharmony_ci  return access;
2141cb0ef41Sopenharmony_ci}
2151cb0ef41Sopenharmony_ci
2161cb0ef41Sopenharmony_ci// static
2171cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSBoundFunctionBoundThis() {
2181cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSBoundFunction::kBoundThisOffset,
2191cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
2201cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
2211cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
2221cb0ef41Sopenharmony_ci  return access;
2231cb0ef41Sopenharmony_ci}
2241cb0ef41Sopenharmony_ci
2251cb0ef41Sopenharmony_ci// static
2261cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSBoundFunctionBoundArguments() {
2271cb0ef41Sopenharmony_ci  FieldAccess access = {
2281cb0ef41Sopenharmony_ci      kTaggedBase,         JSBoundFunction::kBoundArgumentsOffset,
2291cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
2301cb0ef41Sopenharmony_ci      Type::Internal(),    MachineType::TaggedPointer(),
2311cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
2321cb0ef41Sopenharmony_ci  return access;
2331cb0ef41Sopenharmony_ci}
2341cb0ef41Sopenharmony_ci
2351cb0ef41Sopenharmony_ci// static
2361cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectContext() {
2371cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSGeneratorObject::kContextOffset,
2381cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
2391cb0ef41Sopenharmony_ci                        Type::Internal(),    MachineType::TaggedPointer(),
2401cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
2411cb0ef41Sopenharmony_ci  return access;
2421cb0ef41Sopenharmony_ci}
2431cb0ef41Sopenharmony_ci
2441cb0ef41Sopenharmony_ci// static
2451cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectFunction() {
2461cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
2471cb0ef41Sopenharmony_ci                        JSGeneratorObject::kFunctionOffset,
2481cb0ef41Sopenharmony_ci                        Handle<Name>(),
2491cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
2501cb0ef41Sopenharmony_ci                        Type::CallableFunction(),
2511cb0ef41Sopenharmony_ci                        MachineType::TaggedPointer(),
2521cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
2531cb0ef41Sopenharmony_ci  return access;
2541cb0ef41Sopenharmony_ci}
2551cb0ef41Sopenharmony_ci
2561cb0ef41Sopenharmony_ci// static
2571cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectReceiver() {
2581cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSGeneratorObject::kReceiverOffset,
2591cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
2601cb0ef41Sopenharmony_ci                        Type::Internal(),    MachineType::TaggedPointer(),
2611cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
2621cb0ef41Sopenharmony_ci  return access;
2631cb0ef41Sopenharmony_ci}
2641cb0ef41Sopenharmony_ci
2651cb0ef41Sopenharmony_ci// static
2661cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectContinuation() {
2671cb0ef41Sopenharmony_ci  FieldAccess access = {
2681cb0ef41Sopenharmony_ci      kTaggedBase,         JSGeneratorObject::kContinuationOffset,
2691cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
2701cb0ef41Sopenharmony_ci      Type::SignedSmall(), MachineType::TaggedSigned(),
2711cb0ef41Sopenharmony_ci      kNoWriteBarrier};
2721cb0ef41Sopenharmony_ci  return access;
2731cb0ef41Sopenharmony_ci}
2741cb0ef41Sopenharmony_ci
2751cb0ef41Sopenharmony_ci// static
2761cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() {
2771cb0ef41Sopenharmony_ci  FieldAccess access = {
2781cb0ef41Sopenharmony_ci      kTaggedBase,         JSGeneratorObject::kInputOrDebugPosOffset,
2791cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
2801cb0ef41Sopenharmony_ci      Type::NonInternal(), MachineType::AnyTagged(),
2811cb0ef41Sopenharmony_ci      kFullWriteBarrier};
2821cb0ef41Sopenharmony_ci  return access;
2831cb0ef41Sopenharmony_ci}
2841cb0ef41Sopenharmony_ci
2851cb0ef41Sopenharmony_ci// static
2861cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectParametersAndRegisters() {
2871cb0ef41Sopenharmony_ci  FieldAccess access = {
2881cb0ef41Sopenharmony_ci      kTaggedBase,         JSGeneratorObject::kParametersAndRegistersOffset,
2891cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
2901cb0ef41Sopenharmony_ci      Type::Internal(),    MachineType::TaggedPointer(),
2911cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
2921cb0ef41Sopenharmony_ci  return access;
2931cb0ef41Sopenharmony_ci}
2941cb0ef41Sopenharmony_ci
2951cb0ef41Sopenharmony_ci// static
2961cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGeneratorObjectResumeMode() {
2971cb0ef41Sopenharmony_ci  FieldAccess access = {
2981cb0ef41Sopenharmony_ci      kTaggedBase,         JSGeneratorObject::kResumeModeOffset,
2991cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
3001cb0ef41Sopenharmony_ci      Type::SignedSmall(), MachineType::TaggedSigned(),
3011cb0ef41Sopenharmony_ci      kNoWriteBarrier};
3021cb0ef41Sopenharmony_ci  return access;
3031cb0ef41Sopenharmony_ci}
3041cb0ef41Sopenharmony_ci
3051cb0ef41Sopenharmony_ci// static
3061cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSAsyncFunctionObjectPromise() {
3071cb0ef41Sopenharmony_ci  FieldAccess access = {
3081cb0ef41Sopenharmony_ci      kTaggedBase,         JSAsyncFunctionObject::kPromiseOffset,
3091cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
3101cb0ef41Sopenharmony_ci      Type::OtherObject(), MachineType::TaggedPointer(),
3111cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
3121cb0ef41Sopenharmony_ci  return access;
3131cb0ef41Sopenharmony_ci}
3141cb0ef41Sopenharmony_ci
3151cb0ef41Sopenharmony_ci// static
3161cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSAsyncGeneratorObjectQueue() {
3171cb0ef41Sopenharmony_ci  FieldAccess access = {
3181cb0ef41Sopenharmony_ci      kTaggedBase,         JSAsyncGeneratorObject::kQueueOffset,
3191cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
3201cb0ef41Sopenharmony_ci      Type::NonInternal(), MachineType::AnyTagged(),
3211cb0ef41Sopenharmony_ci      kFullWriteBarrier};
3221cb0ef41Sopenharmony_ci  return access;
3231cb0ef41Sopenharmony_ci}
3241cb0ef41Sopenharmony_ci
3251cb0ef41Sopenharmony_ci// static
3261cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSAsyncGeneratorObjectIsAwaiting() {
3271cb0ef41Sopenharmony_ci  FieldAccess access = {
3281cb0ef41Sopenharmony_ci      kTaggedBase,         JSAsyncGeneratorObject::kIsAwaitingOffset,
3291cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
3301cb0ef41Sopenharmony_ci      Type::SignedSmall(), MachineType::TaggedSigned(),
3311cb0ef41Sopenharmony_ci      kNoWriteBarrier};
3321cb0ef41Sopenharmony_ci  return access;
3331cb0ef41Sopenharmony_ci}
3341cb0ef41Sopenharmony_ci
3351cb0ef41Sopenharmony_ci// static
3361cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) {
3371cb0ef41Sopenharmony_ci  TypeCache const* type_cache = TypeCache::Get();
3381cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
3391cb0ef41Sopenharmony_ci                        JSArray::kLengthOffset,
3401cb0ef41Sopenharmony_ci                        Handle<Name>(),
3411cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
3421cb0ef41Sopenharmony_ci                        type_cache->kJSArrayLengthType,
3431cb0ef41Sopenharmony_ci                        MachineType::AnyTagged(),
3441cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
3451cb0ef41Sopenharmony_ci  if (IsDoubleElementsKind(elements_kind)) {
3461cb0ef41Sopenharmony_ci    access.type = type_cache->kFixedDoubleArrayLengthType;
3471cb0ef41Sopenharmony_ci    access.machine_type = MachineType::TaggedSigned();
3481cb0ef41Sopenharmony_ci    access.write_barrier_kind = kNoWriteBarrier;
3491cb0ef41Sopenharmony_ci  } else if (IsFastElementsKind(elements_kind)) {
3501cb0ef41Sopenharmony_ci    access.type = type_cache->kFixedArrayLengthType;
3511cb0ef41Sopenharmony_ci    access.machine_type = MachineType::TaggedSigned();
3521cb0ef41Sopenharmony_ci    access.write_barrier_kind = kNoWriteBarrier;
3531cb0ef41Sopenharmony_ci  }
3541cb0ef41Sopenharmony_ci  return access;
3551cb0ef41Sopenharmony_ci}
3561cb0ef41Sopenharmony_ci
3571cb0ef41Sopenharmony_ci// static
3581cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayBufferBitField() {
3591cb0ef41Sopenharmony_ci  FieldAccess access = {
3601cb0ef41Sopenharmony_ci      kTaggedBase,        JSArrayBuffer::kBitFieldOffset, MaybeHandle<Name>(),
3611cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kUint8,       MachineType::Uint32(),
3621cb0ef41Sopenharmony_ci      kNoWriteBarrier};
3631cb0ef41Sopenharmony_ci  return access;
3641cb0ef41Sopenharmony_ci}
3651cb0ef41Sopenharmony_ci
3661cb0ef41Sopenharmony_ci// static
3671cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() {
3681cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           JSArrayBufferView::kBufferOffset,
3691cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
3701cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
3711cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
3721cb0ef41Sopenharmony_ci  return access;
3731cb0ef41Sopenharmony_ci}
3741cb0ef41Sopenharmony_ci
3751cb0ef41Sopenharmony_ci// static
3761cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() {
3771cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
3781cb0ef41Sopenharmony_ci                        JSArrayBufferView::kByteLengthOffset,
3791cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
3801cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
3811cb0ef41Sopenharmony_ci                        TypeCache::Get()->kJSArrayBufferViewByteLengthType,
3821cb0ef41Sopenharmony_ci                        MachineType::UintPtr(),
3831cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
3841cb0ef41Sopenharmony_ci  return access;
3851cb0ef41Sopenharmony_ci}
3861cb0ef41Sopenharmony_ci
3871cb0ef41Sopenharmony_ci// static
3881cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayBufferViewByteOffset() {
3891cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
3901cb0ef41Sopenharmony_ci                        JSArrayBufferView::kByteOffsetOffset,
3911cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
3921cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
3931cb0ef41Sopenharmony_ci                        TypeCache::Get()->kJSArrayBufferViewByteOffsetType,
3941cb0ef41Sopenharmony_ci                        MachineType::UintPtr(),
3951cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
3961cb0ef41Sopenharmony_ci  return access;
3971cb0ef41Sopenharmony_ci}
3981cb0ef41Sopenharmony_ci
3991cb0ef41Sopenharmony_ci// static
4001cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSTypedArrayLength() {
4011cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
4021cb0ef41Sopenharmony_ci                        JSTypedArray::kLengthOffset,
4031cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
4041cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
4051cb0ef41Sopenharmony_ci                        TypeCache::Get()->kJSTypedArrayLengthType,
4061cb0ef41Sopenharmony_ci                        MachineType::UintPtr(),
4071cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
4081cb0ef41Sopenharmony_ci  return access;
4091cb0ef41Sopenharmony_ci}
4101cb0ef41Sopenharmony_ci
4111cb0ef41Sopenharmony_ci// static
4121cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSTypedArrayBasePointer() {
4131cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           JSTypedArray::kBasePointerOffset,
4141cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
4151cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::AnyTagged(),
4161cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
4171cb0ef41Sopenharmony_ci  return access;
4181cb0ef41Sopenharmony_ci}
4191cb0ef41Sopenharmony_ci
4201cb0ef41Sopenharmony_ci// static
4211cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSTypedArrayExternalPointer() {
4221cb0ef41Sopenharmony_ci  FieldAccess access = {
4231cb0ef41Sopenharmony_ci      kTaggedBase,
4241cb0ef41Sopenharmony_ci      JSTypedArray::kExternalPointerOffset,
4251cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
4261cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
4271cb0ef41Sopenharmony_ci#ifdef V8_SANDBOXED_POINTERS
4281cb0ef41Sopenharmony_ci      Type::SandboxedPointer(),
4291cb0ef41Sopenharmony_ci      MachineType::SandboxedPointer(),
4301cb0ef41Sopenharmony_ci#else
4311cb0ef41Sopenharmony_ci      Type::ExternalPointer(),
4321cb0ef41Sopenharmony_ci      MachineType::Pointer(),
4331cb0ef41Sopenharmony_ci#endif
4341cb0ef41Sopenharmony_ci      kNoWriteBarrier,
4351cb0ef41Sopenharmony_ci      ConstFieldInfo::None(),
4361cb0ef41Sopenharmony_ci      false,
4371cb0ef41Sopenharmony_ci  };
4381cb0ef41Sopenharmony_ci  return access;
4391cb0ef41Sopenharmony_ci}
4401cb0ef41Sopenharmony_ci
4411cb0ef41Sopenharmony_ci// static
4421cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSDataViewDataPointer() {
4431cb0ef41Sopenharmony_ci  FieldAccess access = {
4441cb0ef41Sopenharmony_ci      kTaggedBase,
4451cb0ef41Sopenharmony_ci      JSDataView::kDataPointerOffset,
4461cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
4471cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
4481cb0ef41Sopenharmony_ci#ifdef V8_SANDBOXED_POINTERS
4491cb0ef41Sopenharmony_ci      Type::SandboxedPointer(),
4501cb0ef41Sopenharmony_ci      MachineType::SandboxedPointer(),
4511cb0ef41Sopenharmony_ci#else
4521cb0ef41Sopenharmony_ci      Type::ExternalPointer(),
4531cb0ef41Sopenharmony_ci      MachineType::Pointer(),
4541cb0ef41Sopenharmony_ci#endif
4551cb0ef41Sopenharmony_ci      kNoWriteBarrier,
4561cb0ef41Sopenharmony_ci      ConstFieldInfo::None(),
4571cb0ef41Sopenharmony_ci      false,
4581cb0ef41Sopenharmony_ci  };
4591cb0ef41Sopenharmony_ci  return access;
4601cb0ef41Sopenharmony_ci}
4611cb0ef41Sopenharmony_ci
4621cb0ef41Sopenharmony_ci// static
4631cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSDateValue() {
4641cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
4651cb0ef41Sopenharmony_ci                        JSDate::kValueOffset,
4661cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
4671cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
4681cb0ef41Sopenharmony_ci                        TypeCache::Get()->kJSDateValueType,
4691cb0ef41Sopenharmony_ci                        MachineType::AnyTagged(),
4701cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
4711cb0ef41Sopenharmony_ci  return access;
4721cb0ef41Sopenharmony_ci}
4731cb0ef41Sopenharmony_ci
4741cb0ef41Sopenharmony_ci// static
4751cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) {
4761cb0ef41Sopenharmony_ci  FieldAccess access = {
4771cb0ef41Sopenharmony_ci      kTaggedBase,         JSDate::kValueOffset + index * kTaggedSize,
4781cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
4791cb0ef41Sopenharmony_ci      Type::Number(),      MachineType::AnyTagged(),
4801cb0ef41Sopenharmony_ci      kFullWriteBarrier};
4811cb0ef41Sopenharmony_ci  return access;
4821cb0ef41Sopenharmony_ci}
4831cb0ef41Sopenharmony_ci
4841cb0ef41Sopenharmony_ci// static
4851cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSIteratorResultDone() {
4861cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSIteratorResult::kDoneOffset,
4871cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
4881cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
4891cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
4901cb0ef41Sopenharmony_ci  return access;
4911cb0ef41Sopenharmony_ci}
4921cb0ef41Sopenharmony_ci
4931cb0ef41Sopenharmony_ci// static
4941cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSIteratorResultValue() {
4951cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSIteratorResult::kValueOffset,
4961cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
4971cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
4981cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
4991cb0ef41Sopenharmony_ci  return access;
5001cb0ef41Sopenharmony_ci}
5011cb0ef41Sopenharmony_ci
5021cb0ef41Sopenharmony_ci// static
5031cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSRegExpData() {
5041cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSRegExp::kDataOffset,
5051cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
5061cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
5071cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
5081cb0ef41Sopenharmony_ci  return access;
5091cb0ef41Sopenharmony_ci}
5101cb0ef41Sopenharmony_ci
5111cb0ef41Sopenharmony_ci// static
5121cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSRegExpFlags() {
5131cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSRegExp::kFlagsOffset,
5141cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
5151cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
5161cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
5171cb0ef41Sopenharmony_ci  return access;
5181cb0ef41Sopenharmony_ci}
5191cb0ef41Sopenharmony_ci
5201cb0ef41Sopenharmony_ci// static
5211cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSRegExpLastIndex() {
5221cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSRegExp::kLastIndexOffset,
5231cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
5241cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
5251cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
5261cb0ef41Sopenharmony_ci  return access;
5271cb0ef41Sopenharmony_ci}
5281cb0ef41Sopenharmony_ci
5291cb0ef41Sopenharmony_ci// static
5301cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSRegExpSource() {
5311cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSRegExp::kSourceOffset,
5321cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
5331cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
5341cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
5351cb0ef41Sopenharmony_ci  return access;
5361cb0ef41Sopenharmony_ci}
5371cb0ef41Sopenharmony_ci
5381cb0ef41Sopenharmony_ci// static
5391cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFixedArrayLength() {
5401cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
5411cb0ef41Sopenharmony_ci                        FixedArray::kLengthOffset,
5421cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
5431cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
5441cb0ef41Sopenharmony_ci                        TypeCache::Get()->kFixedArrayLengthType,
5451cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
5461cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
5471cb0ef41Sopenharmony_ci  return access;
5481cb0ef41Sopenharmony_ci}
5491cb0ef41Sopenharmony_ci
5501cb0ef41Sopenharmony_ci// static
5511cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForWeakFixedArrayLength() {
5521cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
5531cb0ef41Sopenharmony_ci                        WeakFixedArray::kLengthOffset,
5541cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
5551cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
5561cb0ef41Sopenharmony_ci                        TypeCache::Get()->kWeakFixedArrayLengthType,
5571cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
5581cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
5591cb0ef41Sopenharmony_ci  return access;
5601cb0ef41Sopenharmony_ci}
5611cb0ef41Sopenharmony_ci
5621cb0ef41Sopenharmony_ci// static
5631cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForSloppyArgumentsElementsContext() {
5641cb0ef41Sopenharmony_ci  FieldAccess access = {
5651cb0ef41Sopenharmony_ci      kTaggedBase,         SloppyArgumentsElements::kContextOffset,
5661cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
5671cb0ef41Sopenharmony_ci      Type::Any(),         MachineType::TaggedPointer(),
5681cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
5691cb0ef41Sopenharmony_ci  return access;
5701cb0ef41Sopenharmony_ci}
5711cb0ef41Sopenharmony_ci
5721cb0ef41Sopenharmony_ci// static
5731cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForSloppyArgumentsElementsArguments() {
5741cb0ef41Sopenharmony_ci  FieldAccess access = {
5751cb0ef41Sopenharmony_ci      kTaggedBase,         SloppyArgumentsElements::kArgumentsOffset,
5761cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
5771cb0ef41Sopenharmony_ci      Type::Any(),         MachineType::TaggedPointer(),
5781cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
5791cb0ef41Sopenharmony_ci  return access;
5801cb0ef41Sopenharmony_ci}
5811cb0ef41Sopenharmony_ci
5821cb0ef41Sopenharmony_ci// static
5831cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForPropertyArrayLengthAndHash() {
5841cb0ef41Sopenharmony_ci  FieldAccess access = {
5851cb0ef41Sopenharmony_ci      kTaggedBase,         PropertyArray::kLengthAndHashOffset,
5861cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
5871cb0ef41Sopenharmony_ci      Type::SignedSmall(), MachineType::TaggedSigned(),
5881cb0ef41Sopenharmony_ci      kNoWriteBarrier};
5891cb0ef41Sopenharmony_ci  return access;
5901cb0ef41Sopenharmony_ci}
5911cb0ef41Sopenharmony_ci
5921cb0ef41Sopenharmony_ci// static
5931cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForDescriptorArrayEnumCache() {
5941cb0ef41Sopenharmony_ci  FieldAccess access = {
5951cb0ef41Sopenharmony_ci      kTaggedBase,           DescriptorArray::kEnumCacheOffset,
5961cb0ef41Sopenharmony_ci      Handle<Name>(),        MaybeHandle<Map>(),
5971cb0ef41Sopenharmony_ci      Type::OtherInternal(), MachineType::TaggedPointer(),
5981cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
5991cb0ef41Sopenharmony_ci  return access;
6001cb0ef41Sopenharmony_ci}
6011cb0ef41Sopenharmony_ci
6021cb0ef41Sopenharmony_ci// static
6031cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapBitField() {
6041cb0ef41Sopenharmony_ci  FieldAccess access = {
6051cb0ef41Sopenharmony_ci      kTaggedBase,        Map::kBitFieldOffset,     Handle<Name>(),
6061cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kUint8, MachineType::Uint8(),
6071cb0ef41Sopenharmony_ci      kNoWriteBarrier};
6081cb0ef41Sopenharmony_ci  return access;
6091cb0ef41Sopenharmony_ci}
6101cb0ef41Sopenharmony_ci
6111cb0ef41Sopenharmony_ci// static
6121cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapBitField2() {
6131cb0ef41Sopenharmony_ci  FieldAccess access = {
6141cb0ef41Sopenharmony_ci      kTaggedBase,        Map::kBitField2Offset,    Handle<Name>(),
6151cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kUint8, MachineType::Uint8(),
6161cb0ef41Sopenharmony_ci      kNoWriteBarrier};
6171cb0ef41Sopenharmony_ci  return access;
6181cb0ef41Sopenharmony_ci}
6191cb0ef41Sopenharmony_ci
6201cb0ef41Sopenharmony_ci// static
6211cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapBitField3() {
6221cb0ef41Sopenharmony_ci  FieldAccess access = {
6231cb0ef41Sopenharmony_ci      kTaggedBase,        Map::kBitField3Offset,    Handle<Name>(),
6241cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kInt32, MachineType::Int32(),
6251cb0ef41Sopenharmony_ci      kNoWriteBarrier};
6261cb0ef41Sopenharmony_ci  return access;
6271cb0ef41Sopenharmony_ci}
6281cb0ef41Sopenharmony_ci
6291cb0ef41Sopenharmony_ci// static
6301cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapDescriptors() {
6311cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           Map::kInstanceDescriptorsOffset,
6321cb0ef41Sopenharmony_ci                        Handle<Name>(),        MaybeHandle<Map>(),
6331cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
6341cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
6351cb0ef41Sopenharmony_ci  return access;
6361cb0ef41Sopenharmony_ci}
6371cb0ef41Sopenharmony_ci
6381cb0ef41Sopenharmony_ci// static
6391cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapInstanceType() {
6401cb0ef41Sopenharmony_ci  FieldAccess access = {
6411cb0ef41Sopenharmony_ci      kTaggedBase,        Map::kInstanceTypeOffset,  Handle<Name>(),
6421cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kUint16, MachineType::Uint16(),
6431cb0ef41Sopenharmony_ci      kNoWriteBarrier};
6441cb0ef41Sopenharmony_ci  return access;
6451cb0ef41Sopenharmony_ci}
6461cb0ef41Sopenharmony_ci
6471cb0ef41Sopenharmony_ci// static
6481cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapPrototype() {
6491cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         Map::kPrototypeOffset,
6501cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
6511cb0ef41Sopenharmony_ci                        Type::Any(),         MachineType::TaggedPointer(),
6521cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
6531cb0ef41Sopenharmony_ci  return access;
6541cb0ef41Sopenharmony_ci}
6551cb0ef41Sopenharmony_ci
6561cb0ef41Sopenharmony_ci// static
6571cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForMapNativeContext() {
6581cb0ef41Sopenharmony_ci  FieldAccess access = {
6591cb0ef41Sopenharmony_ci      kTaggedBase,         Map::kConstructorOrBackPointerOrNativeContextOffset,
6601cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
6611cb0ef41Sopenharmony_ci      Type::Any(),         MachineType::TaggedPointer(),
6621cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
6631cb0ef41Sopenharmony_ci  return access;
6641cb0ef41Sopenharmony_ci}
6651cb0ef41Sopenharmony_ci
6661cb0ef41Sopenharmony_ci// static
6671cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForModuleRegularExports() {
6681cb0ef41Sopenharmony_ci  FieldAccess access = {
6691cb0ef41Sopenharmony_ci      kTaggedBase,           SourceTextModule::kRegularExportsOffset,
6701cb0ef41Sopenharmony_ci      Handle<Name>(),        MaybeHandle<Map>(),
6711cb0ef41Sopenharmony_ci      Type::OtherInternal(), MachineType::TaggedPointer(),
6721cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
6731cb0ef41Sopenharmony_ci  return access;
6741cb0ef41Sopenharmony_ci}
6751cb0ef41Sopenharmony_ci
6761cb0ef41Sopenharmony_ci// static
6771cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForModuleRegularImports() {
6781cb0ef41Sopenharmony_ci  FieldAccess access = {
6791cb0ef41Sopenharmony_ci      kTaggedBase,           SourceTextModule::kRegularImportsOffset,
6801cb0ef41Sopenharmony_ci      Handle<Name>(),        MaybeHandle<Map>(),
6811cb0ef41Sopenharmony_ci      Type::OtherInternal(), MachineType::TaggedPointer(),
6821cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
6831cb0ef41Sopenharmony_ci  return access;
6841cb0ef41Sopenharmony_ci}
6851cb0ef41Sopenharmony_ci
6861cb0ef41Sopenharmony_ci// static
6871cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForNameRawHashField() {
6881cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,        Name::kRawHashFieldOffset,
6891cb0ef41Sopenharmony_ci                        Handle<Name>(),     MaybeHandle<Map>(),
6901cb0ef41Sopenharmony_ci                        Type::Unsigned32(), MachineType::Uint32(),
6911cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
6921cb0ef41Sopenharmony_ci  return access;
6931cb0ef41Sopenharmony_ci}
6941cb0ef41Sopenharmony_ci
6951cb0ef41Sopenharmony_ci// static
6961cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForStringLength() {
6971cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
6981cb0ef41Sopenharmony_ci                        String::kLengthOffset,
6991cb0ef41Sopenharmony_ci                        Handle<Name>(),
7001cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
7011cb0ef41Sopenharmony_ci                        TypeCache::Get()->kStringLengthType,
7021cb0ef41Sopenharmony_ci                        MachineType::Uint32(),
7031cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
7041cb0ef41Sopenharmony_ci  return access;
7051cb0ef41Sopenharmony_ci}
7061cb0ef41Sopenharmony_ci
7071cb0ef41Sopenharmony_ci// static
7081cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForConsStringFirst() {
7091cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         ConsString::kFirstOffset,
7101cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
7111cb0ef41Sopenharmony_ci                        Type::String(),      MachineType::TaggedPointer(),
7121cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
7131cb0ef41Sopenharmony_ci  return access;
7141cb0ef41Sopenharmony_ci}
7151cb0ef41Sopenharmony_ci
7161cb0ef41Sopenharmony_ci// static
7171cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForConsStringSecond() {
7181cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         ConsString::kSecondOffset,
7191cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
7201cb0ef41Sopenharmony_ci                        Type::String(),      MachineType::TaggedPointer(),
7211cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
7221cb0ef41Sopenharmony_ci  return access;
7231cb0ef41Sopenharmony_ci}
7241cb0ef41Sopenharmony_ci
7251cb0ef41Sopenharmony_ci// static
7261cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForThinStringActual() {
7271cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         ThinString::kActualOffset,
7281cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
7291cb0ef41Sopenharmony_ci                        Type::String(),      MachineType::TaggedPointer(),
7301cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
7311cb0ef41Sopenharmony_ci  return access;
7321cb0ef41Sopenharmony_ci}
7331cb0ef41Sopenharmony_ci
7341cb0ef41Sopenharmony_ci// static
7351cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForSlicedStringOffset() {
7361cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         SlicedString::kOffsetOffset,
7371cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
7381cb0ef41Sopenharmony_ci                        Type::SignedSmall(), MachineType::TaggedSigned(),
7391cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
7401cb0ef41Sopenharmony_ci  return access;
7411cb0ef41Sopenharmony_ci}
7421cb0ef41Sopenharmony_ci
7431cb0ef41Sopenharmony_ci// static
7441cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForSlicedStringParent() {
7451cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         SlicedString::kParentOffset,
7461cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
7471cb0ef41Sopenharmony_ci                        Type::String(),      MachineType::TaggedPointer(),
7481cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
7491cb0ef41Sopenharmony_ci  return access;
7501cb0ef41Sopenharmony_ci}
7511cb0ef41Sopenharmony_ci
7521cb0ef41Sopenharmony_ci// static
7531cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForExternalStringResourceData() {
7541cb0ef41Sopenharmony_ci  FieldAccess access = {
7551cb0ef41Sopenharmony_ci      kTaggedBase,
7561cb0ef41Sopenharmony_ci      ExternalString::kResourceDataOffset,
7571cb0ef41Sopenharmony_ci      Handle<Name>(),
7581cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
7591cb0ef41Sopenharmony_ci      Type::ExternalPointer(),
7601cb0ef41Sopenharmony_ci      MachineType::Pointer(),
7611cb0ef41Sopenharmony_ci      kNoWriteBarrier,
7621cb0ef41Sopenharmony_ci      ConstFieldInfo::None(),
7631cb0ef41Sopenharmony_ci      false,
7641cb0ef41Sopenharmony_ci#ifdef V8_SANDBOXED_EXTERNAL_POINTERS
7651cb0ef41Sopenharmony_ci      kExternalStringResourceDataTag,
7661cb0ef41Sopenharmony_ci#endif
7671cb0ef41Sopenharmony_ci  };
7681cb0ef41Sopenharmony_ci  return access;
7691cb0ef41Sopenharmony_ci}
7701cb0ef41Sopenharmony_ci
7711cb0ef41Sopenharmony_ci// static
7721cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForSeqOneByteStringCharacter() {
7731cb0ef41Sopenharmony_ci  ElementAccess access = {kTaggedBase, SeqOneByteString::kHeaderSize,
7741cb0ef41Sopenharmony_ci                          TypeCache::Get()->kUint8, MachineType::Uint8(),
7751cb0ef41Sopenharmony_ci                          kNoWriteBarrier};
7761cb0ef41Sopenharmony_ci  return access;
7771cb0ef41Sopenharmony_ci}
7781cb0ef41Sopenharmony_ci
7791cb0ef41Sopenharmony_ci// static
7801cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForSeqTwoByteStringCharacter() {
7811cb0ef41Sopenharmony_ci  ElementAccess access = {kTaggedBase, SeqTwoByteString::kHeaderSize,
7821cb0ef41Sopenharmony_ci                          TypeCache::Get()->kUint16, MachineType::Uint16(),
7831cb0ef41Sopenharmony_ci                          kNoWriteBarrier};
7841cb0ef41Sopenharmony_ci  return access;
7851cb0ef41Sopenharmony_ci}
7861cb0ef41Sopenharmony_ci
7871cb0ef41Sopenharmony_ci// static
7881cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSGlobalProxyNativeContext() {
7891cb0ef41Sopenharmony_ci  FieldAccess access = {
7901cb0ef41Sopenharmony_ci      kTaggedBase,         JSGlobalProxy::kNativeContextOffset,
7911cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
7921cb0ef41Sopenharmony_ci      Type::Internal(),    MachineType::TaggedPointer(),
7931cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
7941cb0ef41Sopenharmony_ci  return access;
7951cb0ef41Sopenharmony_ci}
7961cb0ef41Sopenharmony_ci
7971cb0ef41Sopenharmony_ci// static
7981cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayIteratorIteratedObject() {
7991cb0ef41Sopenharmony_ci  FieldAccess access = {
8001cb0ef41Sopenharmony_ci      kTaggedBase,         JSArrayIterator::kIteratedObjectOffset,
8011cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
8021cb0ef41Sopenharmony_ci      Type::Receiver(),    MachineType::TaggedPointer(),
8031cb0ef41Sopenharmony_ci      kPointerWriteBarrier};
8041cb0ef41Sopenharmony_ci  return access;
8051cb0ef41Sopenharmony_ci}
8061cb0ef41Sopenharmony_ci
8071cb0ef41Sopenharmony_ci// static
8081cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayIteratorNextIndex() {
8091cb0ef41Sopenharmony_ci  // In generic case, cap to 2^53-1 (per ToLength() in spec) via
8101cb0ef41Sopenharmony_ci  // kPositiveSafeInteger
8111cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
8121cb0ef41Sopenharmony_ci                        JSArrayIterator::kNextIndexOffset,
8131cb0ef41Sopenharmony_ci                        Handle<Name>(),
8141cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
8151cb0ef41Sopenharmony_ci                        TypeCache::Get()->kPositiveSafeInteger,
8161cb0ef41Sopenharmony_ci                        MachineType::AnyTagged(),
8171cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
8181cb0ef41Sopenharmony_ci  return access;
8191cb0ef41Sopenharmony_ci}
8201cb0ef41Sopenharmony_ci
8211cb0ef41Sopenharmony_ci// static
8221cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSArrayIteratorKind() {
8231cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
8241cb0ef41Sopenharmony_ci                        JSArrayIterator::kKindOffset,
8251cb0ef41Sopenharmony_ci                        Handle<Name>(),
8261cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
8271cb0ef41Sopenharmony_ci                        TypeCache::Get()->kJSArrayIteratorKindType,
8281cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
8291cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
8301cb0ef41Sopenharmony_ci  return access;
8311cb0ef41Sopenharmony_ci}
8321cb0ef41Sopenharmony_ci
8331cb0ef41Sopenharmony_ci// static
8341cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSStringIteratorString() {
8351cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         JSStringIterator::kStringOffset,
8361cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
8371cb0ef41Sopenharmony_ci                        Type::String(),      MachineType::TaggedPointer(),
8381cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
8391cb0ef41Sopenharmony_ci  return access;
8401cb0ef41Sopenharmony_ci}
8411cb0ef41Sopenharmony_ci
8421cb0ef41Sopenharmony_ci// static
8431cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForJSStringIteratorIndex() {
8441cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
8451cb0ef41Sopenharmony_ci                        JSStringIterator::kIndexOffset,
8461cb0ef41Sopenharmony_ci                        Handle<Name>(),
8471cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
8481cb0ef41Sopenharmony_ci                        TypeCache::Get()->kStringLengthType,
8491cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
8501cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
8511cb0ef41Sopenharmony_ci  return access;
8521cb0ef41Sopenharmony_ci}
8531cb0ef41Sopenharmony_ci
8541cb0ef41Sopenharmony_ci// static
8551cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForArgumentsLength() {
8561cb0ef41Sopenharmony_ci  constexpr int offset = JSStrictArgumentsObject::kLengthOffset;
8571cb0ef41Sopenharmony_ci  STATIC_ASSERT(offset == JSSloppyArgumentsObject::kLengthOffset);
8581cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         offset,
8591cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
8601cb0ef41Sopenharmony_ci                        Type::NonInternal(), MachineType::AnyTagged(),
8611cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
8621cb0ef41Sopenharmony_ci  return access;
8631cb0ef41Sopenharmony_ci}
8641cb0ef41Sopenharmony_ci
8651cb0ef41Sopenharmony_ci// static
8661cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForArgumentsCallee() {
8671cb0ef41Sopenharmony_ci  FieldAccess access = {
8681cb0ef41Sopenharmony_ci      kTaggedBase,         JSSloppyArgumentsObject::kCalleeOffset,
8691cb0ef41Sopenharmony_ci      Handle<Name>(),      MaybeHandle<Map>(),
8701cb0ef41Sopenharmony_ci      Type::NonInternal(), MachineType::AnyTagged(),
8711cb0ef41Sopenharmony_ci      kFullWriteBarrier};
8721cb0ef41Sopenharmony_ci  return access;
8731cb0ef41Sopenharmony_ci}
8741cb0ef41Sopenharmony_ci
8751cb0ef41Sopenharmony_ci// static
8761cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFixedArraySlot(
8771cb0ef41Sopenharmony_ci    size_t index, WriteBarrierKind write_barrier_kind) {
8781cb0ef41Sopenharmony_ci  int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index));
8791cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,       offset,
8801cb0ef41Sopenharmony_ci                        Handle<Name>(),    MaybeHandle<Map>(),
8811cb0ef41Sopenharmony_ci                        Type::Any(),       MachineType::AnyTagged(),
8821cb0ef41Sopenharmony_ci                        write_barrier_kind};
8831cb0ef41Sopenharmony_ci  return access;
8841cb0ef41Sopenharmony_ci}
8851cb0ef41Sopenharmony_ci
8861cb0ef41Sopenharmony_ci// static
8871cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFeedbackVectorSlot(int index) {
8881cb0ef41Sopenharmony_ci  int offset = FeedbackVector::OffsetOfElementAt(index);
8891cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,      offset,
8901cb0ef41Sopenharmony_ci                        Handle<Name>(),   MaybeHandle<Map>(),
8911cb0ef41Sopenharmony_ci                        Type::Any(),      MachineType::AnyTagged(),
8921cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
8931cb0ef41Sopenharmony_ci  return access;
8941cb0ef41Sopenharmony_ci}
8951cb0ef41Sopenharmony_ci
8961cb0ef41Sopenharmony_ci// static
8971cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForWeakFixedArraySlot(int index) {
8981cb0ef41Sopenharmony_ci  int offset = WeakFixedArray::OffsetOfElementAt(index);
8991cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,      offset,
9001cb0ef41Sopenharmony_ci                        Handle<Name>(),   MaybeHandle<Map>(),
9011cb0ef41Sopenharmony_ci                        Type::Any(),      MachineType::AnyTagged(),
9021cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
9031cb0ef41Sopenharmony_ci  return access;
9041cb0ef41Sopenharmony_ci}
9051cb0ef41Sopenharmony_ci// static
9061cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForCellValue() {
9071cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,      Cell::kValueOffset,
9081cb0ef41Sopenharmony_ci                        Handle<Name>(),   MaybeHandle<Map>(),
9091cb0ef41Sopenharmony_ci                        Type::Any(),      MachineType::AnyTagged(),
9101cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
9111cb0ef41Sopenharmony_ci  return access;
9121cb0ef41Sopenharmony_ci}
9131cb0ef41Sopenharmony_ci
9141cb0ef41Sopenharmony_ci// static
9151cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForScopeInfoFlags() {
9161cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         ScopeInfo::kFlagsOffset,
9171cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(), MaybeHandle<Map>(),
9181cb0ef41Sopenharmony_ci                        Type::SignedSmall(), MachineType::TaggedSigned(),
9191cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
9201cb0ef41Sopenharmony_ci  return access;
9211cb0ef41Sopenharmony_ci}
9221cb0ef41Sopenharmony_ci
9231cb0ef41Sopenharmony_ci// static
9241cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForContextSlot(size_t index) {
9251cb0ef41Sopenharmony_ci  int offset = Context::OffsetOfElementAt(static_cast<int>(index));
9261cb0ef41Sopenharmony_ci  DCHECK_EQ(offset,
9271cb0ef41Sopenharmony_ci            Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag);
9281cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,      offset,
9291cb0ef41Sopenharmony_ci                        Handle<Name>(),   MaybeHandle<Map>(),
9301cb0ef41Sopenharmony_ci                        Type::Any(),      MachineType::AnyTagged(),
9311cb0ef41Sopenharmony_ci                        kFullWriteBarrier};
9321cb0ef41Sopenharmony_ci  return access;
9331cb0ef41Sopenharmony_ci}
9341cb0ef41Sopenharmony_ci
9351cb0ef41Sopenharmony_ci// static
9361cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForContextSlotKnownPointer(size_t index) {
9371cb0ef41Sopenharmony_ci  int offset = Context::OffsetOfElementAt(static_cast<int>(index));
9381cb0ef41Sopenharmony_ci  DCHECK_EQ(offset,
9391cb0ef41Sopenharmony_ci            Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag);
9401cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,         offset,
9411cb0ef41Sopenharmony_ci                        Handle<Name>(),      MaybeHandle<Map>(),
9421cb0ef41Sopenharmony_ci                        Type::Any(),         MachineType::TaggedPointer(),
9431cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
9441cb0ef41Sopenharmony_ci  return access;
9451cb0ef41Sopenharmony_ci}
9461cb0ef41Sopenharmony_ci
9471cb0ef41Sopenharmony_ci// static
9481cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForFixedArrayElement() {
9491cb0ef41Sopenharmony_ci  ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),
9501cb0ef41Sopenharmony_ci                          MachineType::AnyTagged(), kFullWriteBarrier};
9511cb0ef41Sopenharmony_ci  return access;
9521cb0ef41Sopenharmony_ci}
9531cb0ef41Sopenharmony_ci
9541cb0ef41Sopenharmony_ci// static
9551cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForWeakFixedArrayElement() {
9561cb0ef41Sopenharmony_ci  ElementAccess const access = {kTaggedBase, WeakFixedArray::kHeaderSize,
9571cb0ef41Sopenharmony_ci                                Type::Any(), MachineType::AnyTagged(),
9581cb0ef41Sopenharmony_ci                                kFullWriteBarrier};
9591cb0ef41Sopenharmony_ci  return access;
9601cb0ef41Sopenharmony_ci}
9611cb0ef41Sopenharmony_ci
9621cb0ef41Sopenharmony_ci// static
9631cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForSloppyArgumentsElementsMappedEntry() {
9641cb0ef41Sopenharmony_ci  ElementAccess access = {
9651cb0ef41Sopenharmony_ci      kTaggedBase, SloppyArgumentsElements::kMappedEntriesOffset, Type::Any(),
9661cb0ef41Sopenharmony_ci      MachineType::AnyTagged(), kFullWriteBarrier};
9671cb0ef41Sopenharmony_ci  return access;
9681cb0ef41Sopenharmony_ci}
9691cb0ef41Sopenharmony_ci
9701cb0ef41Sopenharmony_ci// statics
9711cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) {
9721cb0ef41Sopenharmony_ci  ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),
9731cb0ef41Sopenharmony_ci                          MachineType::AnyTagged(), kFullWriteBarrier};
9741cb0ef41Sopenharmony_ci  switch (kind) {
9751cb0ef41Sopenharmony_ci    case PACKED_SMI_ELEMENTS:
9761cb0ef41Sopenharmony_ci      access.type = Type::SignedSmall();
9771cb0ef41Sopenharmony_ci      access.machine_type = MachineType::TaggedSigned();
9781cb0ef41Sopenharmony_ci      access.write_barrier_kind = kNoWriteBarrier;
9791cb0ef41Sopenharmony_ci      break;
9801cb0ef41Sopenharmony_ci    case HOLEY_SMI_ELEMENTS:
9811cb0ef41Sopenharmony_ci      access.type = TypeCache::Get()->kHoleySmi;
9821cb0ef41Sopenharmony_ci      break;
9831cb0ef41Sopenharmony_ci    case PACKED_ELEMENTS:
9841cb0ef41Sopenharmony_ci      access.type = Type::NonInternal();
9851cb0ef41Sopenharmony_ci      break;
9861cb0ef41Sopenharmony_ci    case HOLEY_ELEMENTS:
9871cb0ef41Sopenharmony_ci      break;
9881cb0ef41Sopenharmony_ci    case PACKED_DOUBLE_ELEMENTS:
9891cb0ef41Sopenharmony_ci      access.type = Type::Number();
9901cb0ef41Sopenharmony_ci      access.write_barrier_kind = kNoWriteBarrier;
9911cb0ef41Sopenharmony_ci      access.machine_type = MachineType::Float64();
9921cb0ef41Sopenharmony_ci      break;
9931cb0ef41Sopenharmony_ci    case HOLEY_DOUBLE_ELEMENTS:
9941cb0ef41Sopenharmony_ci      access.type = Type::NumberOrHole();
9951cb0ef41Sopenharmony_ci      access.write_barrier_kind = kNoWriteBarrier;
9961cb0ef41Sopenharmony_ci      access.machine_type = MachineType::Float64();
9971cb0ef41Sopenharmony_ci      break;
9981cb0ef41Sopenharmony_ci    default:
9991cb0ef41Sopenharmony_ci      UNREACHABLE();
10001cb0ef41Sopenharmony_ci  }
10011cb0ef41Sopenharmony_ci  return access;
10021cb0ef41Sopenharmony_ci}
10031cb0ef41Sopenharmony_ci
10041cb0ef41Sopenharmony_ci// static
10051cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForStackArgument() {
10061cb0ef41Sopenharmony_ci  ElementAccess access = {
10071cb0ef41Sopenharmony_ci      kUntaggedBase,
10081cb0ef41Sopenharmony_ci      CommonFrameConstants::kFixedFrameSizeAboveFp - kSystemPointerSize,
10091cb0ef41Sopenharmony_ci      Type::NonInternal(), MachineType::Pointer(),
10101cb0ef41Sopenharmony_ci      WriteBarrierKind::kNoWriteBarrier};
10111cb0ef41Sopenharmony_ci  return access;
10121cb0ef41Sopenharmony_ci}
10131cb0ef41Sopenharmony_ci
10141cb0ef41Sopenharmony_ci// static
10151cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForFixedDoubleArrayElement() {
10161cb0ef41Sopenharmony_ci  ElementAccess access = {kTaggedBase, FixedDoubleArray::kHeaderSize,
10171cb0ef41Sopenharmony_ci                          TypeCache::Get()->kFloat64, MachineType::Float64(),
10181cb0ef41Sopenharmony_ci                          kNoWriteBarrier};
10191cb0ef41Sopenharmony_ci  return access;
10201cb0ef41Sopenharmony_ci}
10211cb0ef41Sopenharmony_ci
10221cb0ef41Sopenharmony_ci// static
10231cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForEnumCacheKeys() {
10241cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           EnumCache::kKeysOffset,
10251cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
10261cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
10271cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
10281cb0ef41Sopenharmony_ci  return access;
10291cb0ef41Sopenharmony_ci}
10301cb0ef41Sopenharmony_ci
10311cb0ef41Sopenharmony_ci// static
10321cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForEnumCacheIndices() {
10331cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,           EnumCache::kIndicesOffset,
10341cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),   MaybeHandle<Map>(),
10351cb0ef41Sopenharmony_ci                        Type::OtherInternal(), MachineType::TaggedPointer(),
10361cb0ef41Sopenharmony_ci                        kPointerWriteBarrier};
10371cb0ef41Sopenharmony_ci  return access;
10381cb0ef41Sopenharmony_ci}
10391cb0ef41Sopenharmony_ci
10401cb0ef41Sopenharmony_ci// static
10411cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type,
10421cb0ef41Sopenharmony_ci                                                  bool is_external) {
10431cb0ef41Sopenharmony_ci  BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase;
10441cb0ef41Sopenharmony_ci  int header_size = is_external ? 0 : ByteArray::kHeaderSize;
10451cb0ef41Sopenharmony_ci  switch (type) {
10461cb0ef41Sopenharmony_ci    case kExternalInt8Array: {
10471cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Signed32(),
10481cb0ef41Sopenharmony_ci                              MachineType::Int8(), kNoWriteBarrier};
10491cb0ef41Sopenharmony_ci      return access;
10501cb0ef41Sopenharmony_ci    }
10511cb0ef41Sopenharmony_ci    case kExternalUint8Array:
10521cb0ef41Sopenharmony_ci    case kExternalUint8ClampedArray: {
10531cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
10541cb0ef41Sopenharmony_ci                              MachineType::Uint8(), kNoWriteBarrier};
10551cb0ef41Sopenharmony_ci      return access;
10561cb0ef41Sopenharmony_ci    }
10571cb0ef41Sopenharmony_ci    case kExternalInt16Array: {
10581cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Signed32(),
10591cb0ef41Sopenharmony_ci                              MachineType::Int16(), kNoWriteBarrier};
10601cb0ef41Sopenharmony_ci      return access;
10611cb0ef41Sopenharmony_ci    }
10621cb0ef41Sopenharmony_ci    case kExternalUint16Array: {
10631cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
10641cb0ef41Sopenharmony_ci                              MachineType::Uint16(), kNoWriteBarrier};
10651cb0ef41Sopenharmony_ci      return access;
10661cb0ef41Sopenharmony_ci    }
10671cb0ef41Sopenharmony_ci    case kExternalInt32Array: {
10681cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Signed32(),
10691cb0ef41Sopenharmony_ci                              MachineType::Int32(), kNoWriteBarrier};
10701cb0ef41Sopenharmony_ci      return access;
10711cb0ef41Sopenharmony_ci    }
10721cb0ef41Sopenharmony_ci    case kExternalUint32Array: {
10731cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Unsigned32(),
10741cb0ef41Sopenharmony_ci                              MachineType::Uint32(), kNoWriteBarrier};
10751cb0ef41Sopenharmony_ci      return access;
10761cb0ef41Sopenharmony_ci    }
10771cb0ef41Sopenharmony_ci    case kExternalFloat32Array: {
10781cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Number(),
10791cb0ef41Sopenharmony_ci                              MachineType::Float32(), kNoWriteBarrier};
10801cb0ef41Sopenharmony_ci      return access;
10811cb0ef41Sopenharmony_ci    }
10821cb0ef41Sopenharmony_ci    case kExternalFloat64Array: {
10831cb0ef41Sopenharmony_ci      ElementAccess access = {taggedness, header_size, Type::Number(),
10841cb0ef41Sopenharmony_ci                              MachineType::Float64(), kNoWriteBarrier};
10851cb0ef41Sopenharmony_ci      return access;
10861cb0ef41Sopenharmony_ci    }
10871cb0ef41Sopenharmony_ci    case kExternalBigInt64Array:
10881cb0ef41Sopenharmony_ci    case kExternalBigUint64Array:
10891cb0ef41Sopenharmony_ci      // TODO(neis/jkummerow): Define appropriate types.
10901cb0ef41Sopenharmony_ci      UNIMPLEMENTED();
10911cb0ef41Sopenharmony_ci  }
10921cb0ef41Sopenharmony_ci  UNREACHABLE();
10931cb0ef41Sopenharmony_ci}
10941cb0ef41Sopenharmony_ci
10951cb0ef41Sopenharmony_ci// static
10961cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForHashTableBaseNumberOfElements() {
10971cb0ef41Sopenharmony_ci  FieldAccess access = {
10981cb0ef41Sopenharmony_ci      kTaggedBase,
10991cb0ef41Sopenharmony_ci      FixedArray::OffsetOfElementAt(HashTableBase::kNumberOfElementsIndex),
11001cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
11011cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
11021cb0ef41Sopenharmony_ci      Type::SignedSmall(),
11031cb0ef41Sopenharmony_ci      MachineType::TaggedSigned(),
11041cb0ef41Sopenharmony_ci      kNoWriteBarrier};
11051cb0ef41Sopenharmony_ci  return access;
11061cb0ef41Sopenharmony_ci}
11071cb0ef41Sopenharmony_ci
11081cb0ef41Sopenharmony_ci// static
11091cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForHashTableBaseNumberOfDeletedElement() {
11101cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
11111cb0ef41Sopenharmony_ci                        FixedArray::OffsetOfElementAt(
11121cb0ef41Sopenharmony_ci                            HashTableBase::kNumberOfDeletedElementsIndex),
11131cb0ef41Sopenharmony_ci                        MaybeHandle<Name>(),
11141cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
11151cb0ef41Sopenharmony_ci                        Type::SignedSmall(),
11161cb0ef41Sopenharmony_ci                        MachineType::TaggedSigned(),
11171cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
11181cb0ef41Sopenharmony_ci  return access;
11191cb0ef41Sopenharmony_ci}
11201cb0ef41Sopenharmony_ci
11211cb0ef41Sopenharmony_ci// static
11221cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForHashTableBaseCapacity() {
11231cb0ef41Sopenharmony_ci  FieldAccess access = {
11241cb0ef41Sopenharmony_ci      kTaggedBase,
11251cb0ef41Sopenharmony_ci      FixedArray::OffsetOfElementAt(HashTableBase::kCapacityIndex),
11261cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
11271cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
11281cb0ef41Sopenharmony_ci      Type::SignedSmall(),
11291cb0ef41Sopenharmony_ci      MachineType::TaggedSigned(),
11301cb0ef41Sopenharmony_ci      kNoWriteBarrier};
11311cb0ef41Sopenharmony_ci  return access;
11321cb0ef41Sopenharmony_ci}
11331cb0ef41Sopenharmony_ci
11341cb0ef41Sopenharmony_ci// static
11351cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForOrderedHashMapOrSetNextTable() {
11361cb0ef41Sopenharmony_ci  // TODO(turbofan): This will be redundant with the HashTableBase
11371cb0ef41Sopenharmony_ci  // methods above once the hash table unification is done.
11381cb0ef41Sopenharmony_ci  STATIC_ASSERT(OrderedHashMap::NextTableOffset() ==
11391cb0ef41Sopenharmony_ci                OrderedHashSet::NextTableOffset());
11401cb0ef41Sopenharmony_ci  FieldAccess const access = {
11411cb0ef41Sopenharmony_ci      kTaggedBase,         OrderedHashMap::NextTableOffset(),
11421cb0ef41Sopenharmony_ci      MaybeHandle<Name>(), MaybeHandle<Map>(),
11431cb0ef41Sopenharmony_ci      Type::Any(),         MachineType::AnyTagged(),
11441cb0ef41Sopenharmony_ci      kFullWriteBarrier};
11451cb0ef41Sopenharmony_ci  return access;
11461cb0ef41Sopenharmony_ci}
11471cb0ef41Sopenharmony_ci
11481cb0ef41Sopenharmony_ci// static
11491cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfBuckets() {
11501cb0ef41Sopenharmony_ci  // TODO(turbofan): This will be redundant with the HashTableBase
11511cb0ef41Sopenharmony_ci  // methods above once the hash table unification is done.
11521cb0ef41Sopenharmony_ci  STATIC_ASSERT(OrderedHashMap::NumberOfBucketsOffset() ==
11531cb0ef41Sopenharmony_ci                OrderedHashSet::NumberOfBucketsOffset());
11541cb0ef41Sopenharmony_ci  FieldAccess const access = {kTaggedBase,
11551cb0ef41Sopenharmony_ci                              OrderedHashMap::NumberOfBucketsOffset(),
11561cb0ef41Sopenharmony_ci                              MaybeHandle<Name>(),
11571cb0ef41Sopenharmony_ci                              MaybeHandle<Map>(),
11581cb0ef41Sopenharmony_ci                              TypeCache::Get()->kFixedArrayLengthType,
11591cb0ef41Sopenharmony_ci                              MachineType::TaggedSigned(),
11601cb0ef41Sopenharmony_ci                              kNoWriteBarrier};
11611cb0ef41Sopenharmony_ci  return access;
11621cb0ef41Sopenharmony_ci}
11631cb0ef41Sopenharmony_ci
11641cb0ef41Sopenharmony_ci// static
11651cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfDeletedElements() {
11661cb0ef41Sopenharmony_ci  // TODO(turbofan): This will be redundant with the HashTableBase
11671cb0ef41Sopenharmony_ci  // methods above once the hash table unification is done.
11681cb0ef41Sopenharmony_ci  STATIC_ASSERT(OrderedHashMap::NumberOfDeletedElementsOffset() ==
11691cb0ef41Sopenharmony_ci                OrderedHashSet::NumberOfDeletedElementsOffset());
11701cb0ef41Sopenharmony_ci  FieldAccess const access = {kTaggedBase,
11711cb0ef41Sopenharmony_ci                              OrderedHashMap::NumberOfDeletedElementsOffset(),
11721cb0ef41Sopenharmony_ci                              MaybeHandle<Name>(),
11731cb0ef41Sopenharmony_ci                              MaybeHandle<Map>(),
11741cb0ef41Sopenharmony_ci                              TypeCache::Get()->kFixedArrayLengthType,
11751cb0ef41Sopenharmony_ci                              MachineType::TaggedSigned(),
11761cb0ef41Sopenharmony_ci                              kNoWriteBarrier};
11771cb0ef41Sopenharmony_ci  return access;
11781cb0ef41Sopenharmony_ci}
11791cb0ef41Sopenharmony_ci
11801cb0ef41Sopenharmony_ci// static
11811cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfElements() {
11821cb0ef41Sopenharmony_ci  // TODO(turbofan): This will be redundant with the HashTableBase
11831cb0ef41Sopenharmony_ci  // methods above once the hash table unification is done.
11841cb0ef41Sopenharmony_ci  STATIC_ASSERT(OrderedHashMap::NumberOfElementsOffset() ==
11851cb0ef41Sopenharmony_ci                OrderedHashSet::NumberOfElementsOffset());
11861cb0ef41Sopenharmony_ci  FieldAccess const access = {kTaggedBase,
11871cb0ef41Sopenharmony_ci                              OrderedHashMap::NumberOfElementsOffset(),
11881cb0ef41Sopenharmony_ci                              MaybeHandle<Name>(),
11891cb0ef41Sopenharmony_ci                              MaybeHandle<Map>(),
11901cb0ef41Sopenharmony_ci                              TypeCache::Get()->kFixedArrayLengthType,
11911cb0ef41Sopenharmony_ci                              MachineType::TaggedSigned(),
11921cb0ef41Sopenharmony_ci                              kNoWriteBarrier};
11931cb0ef41Sopenharmony_ci  return access;
11941cb0ef41Sopenharmony_ci}
11951cb0ef41Sopenharmony_ci
11961cb0ef41Sopenharmony_ci// static
11971cb0ef41Sopenharmony_ciElementAccess AccessBuilder::ForOrderedHashMapEntryValue() {
11981cb0ef41Sopenharmony_ci  ElementAccess const access = {kTaggedBase,
11991cb0ef41Sopenharmony_ci                                OrderedHashMap::HashTableStartOffset() +
12001cb0ef41Sopenharmony_ci                                    OrderedHashMap::kValueOffset * kTaggedSize,
12011cb0ef41Sopenharmony_ci                                Type::Any(), MachineType::AnyTagged(),
12021cb0ef41Sopenharmony_ci                                kFullWriteBarrier};
12031cb0ef41Sopenharmony_ci  return access;
12041cb0ef41Sopenharmony_ci}
12051cb0ef41Sopenharmony_ci
12061cb0ef41Sopenharmony_ci// static
12071cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForDictionaryNextEnumerationIndex() {
12081cb0ef41Sopenharmony_ci  FieldAccess access = {
12091cb0ef41Sopenharmony_ci      kTaggedBase,
12101cb0ef41Sopenharmony_ci      FixedArray::OffsetOfElementAt(NameDictionary::kNextEnumerationIndexIndex),
12111cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
12121cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
12131cb0ef41Sopenharmony_ci      Type::SignedSmall(),
12141cb0ef41Sopenharmony_ci      MachineType::TaggedSigned(),
12151cb0ef41Sopenharmony_ci      kNoWriteBarrier};
12161cb0ef41Sopenharmony_ci  return access;
12171cb0ef41Sopenharmony_ci}
12181cb0ef41Sopenharmony_ci
12191cb0ef41Sopenharmony_ci// static
12201cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForDictionaryObjectHashIndex() {
12211cb0ef41Sopenharmony_ci  FieldAccess access = {
12221cb0ef41Sopenharmony_ci      kTaggedBase,
12231cb0ef41Sopenharmony_ci      FixedArray::OffsetOfElementAt(NameDictionary::kObjectHashIndex),
12241cb0ef41Sopenharmony_ci      MaybeHandle<Name>(),
12251cb0ef41Sopenharmony_ci      MaybeHandle<Map>(),
12261cb0ef41Sopenharmony_ci      Type::SignedSmall(),
12271cb0ef41Sopenharmony_ci      MachineType::TaggedSigned(),
12281cb0ef41Sopenharmony_ci      kNoWriteBarrier};
12291cb0ef41Sopenharmony_ci  return access;
12301cb0ef41Sopenharmony_ci}
12311cb0ef41Sopenharmony_ci
12321cb0ef41Sopenharmony_ci// static
12331cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFeedbackCellInterruptBudget() {
12341cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
12351cb0ef41Sopenharmony_ci                        FeedbackCell::kInterruptBudgetOffset,
12361cb0ef41Sopenharmony_ci                        Handle<Name>(),
12371cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
12381cb0ef41Sopenharmony_ci                        TypeCache::Get()->kInt32,
12391cb0ef41Sopenharmony_ci                        MachineType::Int32(),
12401cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
12411cb0ef41Sopenharmony_ci  return access;
12421cb0ef41Sopenharmony_ci}
12431cb0ef41Sopenharmony_ci
12441cb0ef41Sopenharmony_ci// static
12451cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFeedbackVectorInvocationCount() {
12461cb0ef41Sopenharmony_ci  FieldAccess access = {kTaggedBase,
12471cb0ef41Sopenharmony_ci                        FeedbackVector::kInvocationCountOffset,
12481cb0ef41Sopenharmony_ci                        Handle<Name>(),
12491cb0ef41Sopenharmony_ci                        MaybeHandle<Map>(),
12501cb0ef41Sopenharmony_ci                        TypeCache::Get()->kInt32,
12511cb0ef41Sopenharmony_ci                        MachineType::Int32(),
12521cb0ef41Sopenharmony_ci                        kNoWriteBarrier};
12531cb0ef41Sopenharmony_ci  return access;
12541cb0ef41Sopenharmony_ci}
12551cb0ef41Sopenharmony_ci
12561cb0ef41Sopenharmony_ci// static
12571cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFeedbackVectorFlags() {
12581cb0ef41Sopenharmony_ci  FieldAccess access = {
12591cb0ef41Sopenharmony_ci      kTaggedBase,        FeedbackVector::kFlagsOffset, Handle<Name>(),
12601cb0ef41Sopenharmony_ci      MaybeHandle<Map>(), TypeCache::Get()->kUint32,    MachineType::Uint32(),
12611cb0ef41Sopenharmony_ci      kNoWriteBarrier};
12621cb0ef41Sopenharmony_ci  return access;
12631cb0ef41Sopenharmony_ci}
12641cb0ef41Sopenharmony_ci
12651cb0ef41Sopenharmony_ci// static
12661cb0ef41Sopenharmony_ciFieldAccess AccessBuilder::ForFeedbackVectorClosureFeedbackCellArray() {
12671cb0ef41Sopenharmony_ci  FieldAccess access = {
12681cb0ef41Sopenharmony_ci      kTaggedBase,      FeedbackVector::kClosureFeedbackCellArrayOffset,
12691cb0ef41Sopenharmony_ci      Handle<Name>(),   MaybeHandle<Map>(),
12701cb0ef41Sopenharmony_ci      Type::Any(),      MachineType::TaggedPointer(),
12711cb0ef41Sopenharmony_ci      kFullWriteBarrier};
12721cb0ef41Sopenharmony_ci  return access;
12731cb0ef41Sopenharmony_ci}
12741cb0ef41Sopenharmony_ci
12751cb0ef41Sopenharmony_ci}  // namespace compiler
12761cb0ef41Sopenharmony_ci}  // namespace internal
12771cb0ef41Sopenharmony_ci}  // namespace v8
1278