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#ifndef V8_COMPILER_ACCESS_BUILDER_H_
61cb0ef41Sopenharmony_ci#define V8_COMPILER_ACCESS_BUILDER_H_
71cb0ef41Sopenharmony_ci
81cb0ef41Sopenharmony_ci#include "src/base/compiler-specific.h"
91cb0ef41Sopenharmony_ci#include "src/compiler/simplified-operator.h"
101cb0ef41Sopenharmony_ci#include "src/compiler/write-barrier-kind.h"
111cb0ef41Sopenharmony_ci#include "src/objects/elements-kind.h"
121cb0ef41Sopenharmony_ci#include "src/objects/js-objects.h"
131cb0ef41Sopenharmony_ci
141cb0ef41Sopenharmony_cinamespace v8 {
151cb0ef41Sopenharmony_cinamespace internal {
161cb0ef41Sopenharmony_cinamespace compiler {
171cb0ef41Sopenharmony_ci
181cb0ef41Sopenharmony_ci// This access builder provides a set of static methods constructing commonly
191cb0ef41Sopenharmony_ci// used FieldAccess and ElementAccess descriptors. These descriptors serve as
201cb0ef41Sopenharmony_ci// parameters to simplified load/store operators.
211cb0ef41Sopenharmony_ciclass V8_EXPORT_PRIVATE AccessBuilder final
221cb0ef41Sopenharmony_ci    : public NON_EXPORTED_BASE(AllStatic) {
231cb0ef41Sopenharmony_ci public:
241cb0ef41Sopenharmony_ci  // ===========================================================================
251cb0ef41Sopenharmony_ci  // Access to external values (based on external references).
261cb0ef41Sopenharmony_ci
271cb0ef41Sopenharmony_ci  // Provides access to an IntPtr field identified by an external reference.
281cb0ef41Sopenharmony_ci  static FieldAccess ForExternalIntPtr();
291cb0ef41Sopenharmony_ci
301cb0ef41Sopenharmony_ci  // ===========================================================================
311cb0ef41Sopenharmony_ci  // Access to heap object fields and elements (based on tagged pointer).
321cb0ef41Sopenharmony_ci
331cb0ef41Sopenharmony_ci  // Provides access to HeapObject::map() field.
341cb0ef41Sopenharmony_ci  static FieldAccess ForMap(WriteBarrierKind write_barrier = kMapWriteBarrier);
351cb0ef41Sopenharmony_ci
361cb0ef41Sopenharmony_ci  // Provides access to HeapNumber::value() field.
371cb0ef41Sopenharmony_ci  static FieldAccess ForHeapNumberValue();
381cb0ef41Sopenharmony_ci
391cb0ef41Sopenharmony_ci  // Provides access to BigInt's bit field.
401cb0ef41Sopenharmony_ci  static FieldAccess ForBigIntBitfield();
411cb0ef41Sopenharmony_ci
421cb0ef41Sopenharmony_ci  // Provides access to BigInt's 32 bit padding that is placed after the
431cb0ef41Sopenharmony_ci  // bitfield on 64 bit architectures without pointer compression. Do not use
441cb0ef41Sopenharmony_ci  // this on 32 bit architectures.
451cb0ef41Sopenharmony_ci  static FieldAccess ForBigIntOptionalPadding();
461cb0ef41Sopenharmony_ci
471cb0ef41Sopenharmony_ci  // Provides access to BigInt's least significant digit on 64 bit
481cb0ef41Sopenharmony_ci  // architectures. Do not use this on 32 bit architectures.
491cb0ef41Sopenharmony_ci  static FieldAccess ForBigIntLeastSignificantDigit64();
501cb0ef41Sopenharmony_ci
511cb0ef41Sopenharmony_ci  // Provides access to JSObject::properties() field.
521cb0ef41Sopenharmony_ci  static FieldAccess ForJSObjectPropertiesOrHash();
531cb0ef41Sopenharmony_ci
541cb0ef41Sopenharmony_ci  // Provides access to JSObject::properties() field for known pointers.
551cb0ef41Sopenharmony_ci  static FieldAccess ForJSObjectPropertiesOrHashKnownPointer();
561cb0ef41Sopenharmony_ci
571cb0ef41Sopenharmony_ci  // Provides access to JSObject::elements() field.
581cb0ef41Sopenharmony_ci  static FieldAccess ForJSObjectElements();
591cb0ef41Sopenharmony_ci
601cb0ef41Sopenharmony_ci  // Provides access to JSObject inobject property fields.
611cb0ef41Sopenharmony_ci  static FieldAccess ForJSObjectInObjectProperty(
621cb0ef41Sopenharmony_ci      const MapRef& map, int index,
631cb0ef41Sopenharmony_ci      MachineType machine_type = MachineType::AnyTagged());
641cb0ef41Sopenharmony_ci  static FieldAccess ForJSObjectOffset(
651cb0ef41Sopenharmony_ci      int offset, WriteBarrierKind write_barrier_kind = kFullWriteBarrier);
661cb0ef41Sopenharmony_ci
671cb0ef41Sopenharmony_ci  // Provides access to JSCollecton::table() field.
681cb0ef41Sopenharmony_ci  static FieldAccess ForJSCollectionTable();
691cb0ef41Sopenharmony_ci
701cb0ef41Sopenharmony_ci  // Provides access to JSCollectionIterator::table() field.
711cb0ef41Sopenharmony_ci  static FieldAccess ForJSCollectionIteratorTable();
721cb0ef41Sopenharmony_ci
731cb0ef41Sopenharmony_ci  // Provides access to JSCollectionIterator::index() field.
741cb0ef41Sopenharmony_ci  static FieldAccess ForJSCollectionIteratorIndex();
751cb0ef41Sopenharmony_ci
761cb0ef41Sopenharmony_ci  // Provides access to JSFunction::prototype_or_initial_map() field.
771cb0ef41Sopenharmony_ci  static FieldAccess ForJSFunctionPrototypeOrInitialMap();
781cb0ef41Sopenharmony_ci
791cb0ef41Sopenharmony_ci  // Provides access to JSFunction::context() field.
801cb0ef41Sopenharmony_ci  static FieldAccess ForJSFunctionContext();
811cb0ef41Sopenharmony_ci
821cb0ef41Sopenharmony_ci  // Provides access to JSFunction::shared() field.
831cb0ef41Sopenharmony_ci  static FieldAccess ForJSFunctionSharedFunctionInfo();
841cb0ef41Sopenharmony_ci
851cb0ef41Sopenharmony_ci  // Provides access to JSFunction::feedback_cell() field.
861cb0ef41Sopenharmony_ci  static FieldAccess ForJSFunctionFeedbackCell();
871cb0ef41Sopenharmony_ci
881cb0ef41Sopenharmony_ci  // Provides access to JSFunction::code() field.
891cb0ef41Sopenharmony_ci  static FieldAccess ForJSFunctionCode();
901cb0ef41Sopenharmony_ci
911cb0ef41Sopenharmony_ci  // Provides access to JSBoundFunction::bound_target_function() field.
921cb0ef41Sopenharmony_ci  static FieldAccess ForJSBoundFunctionBoundTargetFunction();
931cb0ef41Sopenharmony_ci
941cb0ef41Sopenharmony_ci  // Provides access to JSBoundFunction::bound_this() field.
951cb0ef41Sopenharmony_ci  static FieldAccess ForJSBoundFunctionBoundThis();
961cb0ef41Sopenharmony_ci
971cb0ef41Sopenharmony_ci  // Provides access to JSBoundFunction::bound_arguments() field.
981cb0ef41Sopenharmony_ci  static FieldAccess ForJSBoundFunctionBoundArguments();
991cb0ef41Sopenharmony_ci
1001cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::context() field.
1011cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectContext();
1021cb0ef41Sopenharmony_ci
1031cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::continuation() field.
1041cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectContinuation();
1051cb0ef41Sopenharmony_ci
1061cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::input_or_debug_pos() field.
1071cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectInputOrDebugPos();
1081cb0ef41Sopenharmony_ci
1091cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::parameters_and_registers() field.
1101cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectParametersAndRegisters();
1111cb0ef41Sopenharmony_ci
1121cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::function() field.
1131cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectFunction();
1141cb0ef41Sopenharmony_ci
1151cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::receiver() field.
1161cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectReceiver();
1171cb0ef41Sopenharmony_ci
1181cb0ef41Sopenharmony_ci  // Provides access to JSGeneratorObject::resume_mode() field.
1191cb0ef41Sopenharmony_ci  static FieldAccess ForJSGeneratorObjectResumeMode();
1201cb0ef41Sopenharmony_ci
1211cb0ef41Sopenharmony_ci  // Provides access to JSAsyncFunctionObject::promise() field.
1221cb0ef41Sopenharmony_ci  static FieldAccess ForJSAsyncFunctionObjectPromise();
1231cb0ef41Sopenharmony_ci
1241cb0ef41Sopenharmony_ci  // Provides access to JSAsyncGeneratorObject::queue() field.
1251cb0ef41Sopenharmony_ci  static FieldAccess ForJSAsyncGeneratorObjectQueue();
1261cb0ef41Sopenharmony_ci
1271cb0ef41Sopenharmony_ci  // Provides access to JSAsyncGeneratorObject::is_awaiting() field.
1281cb0ef41Sopenharmony_ci  static FieldAccess ForJSAsyncGeneratorObjectIsAwaiting();
1291cb0ef41Sopenharmony_ci
1301cb0ef41Sopenharmony_ci  // Provides access to JSArray::length() field.
1311cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayLength(ElementsKind elements_kind);
1321cb0ef41Sopenharmony_ci
1331cb0ef41Sopenharmony_ci  // Provides access to JSArrayBuffer::bit_field() field.
1341cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayBufferBitField();
1351cb0ef41Sopenharmony_ci
1361cb0ef41Sopenharmony_ci  // Provides access to JSArrayBufferView::buffer() field.
1371cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayBufferViewBuffer();
1381cb0ef41Sopenharmony_ci
1391cb0ef41Sopenharmony_ci  // Provides access to JSArrayBufferView::byteLength() field.
1401cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayBufferViewByteLength();
1411cb0ef41Sopenharmony_ci
1421cb0ef41Sopenharmony_ci  // Provides access to JSArrayBufferView::byteOffset() field.
1431cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayBufferViewByteOffset();
1441cb0ef41Sopenharmony_ci
1451cb0ef41Sopenharmony_ci  // Provides access to JSTypedArray::length() field.
1461cb0ef41Sopenharmony_ci  static FieldAccess ForJSTypedArrayLength();
1471cb0ef41Sopenharmony_ci
1481cb0ef41Sopenharmony_ci  // Provides access to JSTypedArray::base_pointer() field.
1491cb0ef41Sopenharmony_ci  static FieldAccess ForJSTypedArrayBasePointer();
1501cb0ef41Sopenharmony_ci
1511cb0ef41Sopenharmony_ci  // Provides access to JSTypedArray::external_pointer() field.
1521cb0ef41Sopenharmony_ci  static FieldAccess ForJSTypedArrayExternalPointer();
1531cb0ef41Sopenharmony_ci
1541cb0ef41Sopenharmony_ci  // Provides access to JSDataView::data_pointer() field.
1551cb0ef41Sopenharmony_ci  static FieldAccess ForJSDataViewDataPointer();
1561cb0ef41Sopenharmony_ci
1571cb0ef41Sopenharmony_ci  // Provides access to JSDate::value() field.
1581cb0ef41Sopenharmony_ci  static FieldAccess ForJSDateValue();
1591cb0ef41Sopenharmony_ci
1601cb0ef41Sopenharmony_ci  // Provides access to JSDate fields.
1611cb0ef41Sopenharmony_ci  static FieldAccess ForJSDateField(JSDate::FieldIndex index);
1621cb0ef41Sopenharmony_ci
1631cb0ef41Sopenharmony_ci  // Provides access to JSIteratorResult::done() field.
1641cb0ef41Sopenharmony_ci  static FieldAccess ForJSIteratorResultDone();
1651cb0ef41Sopenharmony_ci
1661cb0ef41Sopenharmony_ci  // Provides access to JSIteratorResult::value() field.
1671cb0ef41Sopenharmony_ci  static FieldAccess ForJSIteratorResultValue();
1681cb0ef41Sopenharmony_ci
1691cb0ef41Sopenharmony_ci  // Provides access to JSRegExp::data() field.
1701cb0ef41Sopenharmony_ci  static FieldAccess ForJSRegExpData();
1711cb0ef41Sopenharmony_ci
1721cb0ef41Sopenharmony_ci  // Provides access to JSRegExp::flags() field.
1731cb0ef41Sopenharmony_ci  static FieldAccess ForJSRegExpFlags();
1741cb0ef41Sopenharmony_ci
1751cb0ef41Sopenharmony_ci  // Provides access to JSRegExp::last_index() field.
1761cb0ef41Sopenharmony_ci  static FieldAccess ForJSRegExpLastIndex();
1771cb0ef41Sopenharmony_ci
1781cb0ef41Sopenharmony_ci  // Provides access to JSRegExp::source() field.
1791cb0ef41Sopenharmony_ci  static FieldAccess ForJSRegExpSource();
1801cb0ef41Sopenharmony_ci
1811cb0ef41Sopenharmony_ci  // Provides access to FixedArray::length() field.
1821cb0ef41Sopenharmony_ci  static FieldAccess ForFixedArrayLength();
1831cb0ef41Sopenharmony_ci
1841cb0ef41Sopenharmony_ci  // Provides access to WeakFixedArray::length() field.
1851cb0ef41Sopenharmony_ci  static FieldAccess ForWeakFixedArrayLength();
1861cb0ef41Sopenharmony_ci
1871cb0ef41Sopenharmony_ci  // Provides access to SloppyArgumentsElements::context() field.
1881cb0ef41Sopenharmony_ci  static FieldAccess ForSloppyArgumentsElementsContext();
1891cb0ef41Sopenharmony_ci
1901cb0ef41Sopenharmony_ci  // Provides access to SloppyArgumentsElements::arguments() field.
1911cb0ef41Sopenharmony_ci  static FieldAccess ForSloppyArgumentsElementsArguments();
1921cb0ef41Sopenharmony_ci
1931cb0ef41Sopenharmony_ci  // Provides access to PropertyArray::length() field.
1941cb0ef41Sopenharmony_ci  static FieldAccess ForPropertyArrayLengthAndHash();
1951cb0ef41Sopenharmony_ci
1961cb0ef41Sopenharmony_ci  // Provides access to DescriptorArray::enum_cache() field.
1971cb0ef41Sopenharmony_ci  static FieldAccess ForDescriptorArrayEnumCache();
1981cb0ef41Sopenharmony_ci
1991cb0ef41Sopenharmony_ci  // Provides access to Map::bit_field() byte.
2001cb0ef41Sopenharmony_ci  static FieldAccess ForMapBitField();
2011cb0ef41Sopenharmony_ci
2021cb0ef41Sopenharmony_ci  // Provides access to Map::bit_field2() byte.
2031cb0ef41Sopenharmony_ci  static FieldAccess ForMapBitField2();
2041cb0ef41Sopenharmony_ci
2051cb0ef41Sopenharmony_ci  // Provides access to Map::bit_field3() field.
2061cb0ef41Sopenharmony_ci  static FieldAccess ForMapBitField3();
2071cb0ef41Sopenharmony_ci
2081cb0ef41Sopenharmony_ci  // Provides access to Map::descriptors() field.
2091cb0ef41Sopenharmony_ci  static FieldAccess ForMapDescriptors();
2101cb0ef41Sopenharmony_ci
2111cb0ef41Sopenharmony_ci  // Provides access to Map::instance_type() field.
2121cb0ef41Sopenharmony_ci  static FieldAccess ForMapInstanceType();
2131cb0ef41Sopenharmony_ci
2141cb0ef41Sopenharmony_ci  // Provides access to Map::prototype() field.
2151cb0ef41Sopenharmony_ci  static FieldAccess ForMapPrototype();
2161cb0ef41Sopenharmony_ci
2171cb0ef41Sopenharmony_ci  // Provides access to Map::native_context() field.
2181cb0ef41Sopenharmony_ci  static FieldAccess ForMapNativeContext();
2191cb0ef41Sopenharmony_ci
2201cb0ef41Sopenharmony_ci  // Provides access to Module::regular_exports() field.
2211cb0ef41Sopenharmony_ci  static FieldAccess ForModuleRegularExports();
2221cb0ef41Sopenharmony_ci
2231cb0ef41Sopenharmony_ci  // Provides access to Module::regular_imports() field.
2241cb0ef41Sopenharmony_ci  static FieldAccess ForModuleRegularImports();
2251cb0ef41Sopenharmony_ci
2261cb0ef41Sopenharmony_ci  // Provides access to Name::raw_hash_field() field.
2271cb0ef41Sopenharmony_ci  static FieldAccess ForNameRawHashField();
2281cb0ef41Sopenharmony_ci
2291cb0ef41Sopenharmony_ci  // Provides access to String::length() field.
2301cb0ef41Sopenharmony_ci  static FieldAccess ForStringLength();
2311cb0ef41Sopenharmony_ci
2321cb0ef41Sopenharmony_ci  // Provides access to ConsString::first() field.
2331cb0ef41Sopenharmony_ci  static FieldAccess ForConsStringFirst();
2341cb0ef41Sopenharmony_ci
2351cb0ef41Sopenharmony_ci  // Provides access to ConsString::second() field.
2361cb0ef41Sopenharmony_ci  static FieldAccess ForConsStringSecond();
2371cb0ef41Sopenharmony_ci
2381cb0ef41Sopenharmony_ci  // Provides access to ThinString::actual() field.
2391cb0ef41Sopenharmony_ci  static FieldAccess ForThinStringActual();
2401cb0ef41Sopenharmony_ci
2411cb0ef41Sopenharmony_ci  // Provides access to SlicedString::offset() field.
2421cb0ef41Sopenharmony_ci  static FieldAccess ForSlicedStringOffset();
2431cb0ef41Sopenharmony_ci
2441cb0ef41Sopenharmony_ci  // Provides access to SlicedString::parent() field.
2451cb0ef41Sopenharmony_ci  static FieldAccess ForSlicedStringParent();
2461cb0ef41Sopenharmony_ci
2471cb0ef41Sopenharmony_ci  // Provides access to ExternalString::resource_data() field.
2481cb0ef41Sopenharmony_ci  static FieldAccess ForExternalStringResourceData();
2491cb0ef41Sopenharmony_ci
2501cb0ef41Sopenharmony_ci  // Provides access to SeqOneByteString characters.
2511cb0ef41Sopenharmony_ci  static ElementAccess ForSeqOneByteStringCharacter();
2521cb0ef41Sopenharmony_ci
2531cb0ef41Sopenharmony_ci  // Provides access to SeqTwoByteString characters.
2541cb0ef41Sopenharmony_ci  static ElementAccess ForSeqTwoByteStringCharacter();
2551cb0ef41Sopenharmony_ci
2561cb0ef41Sopenharmony_ci  // Provides access to JSGlobalProxy::native_context() field.
2571cb0ef41Sopenharmony_ci  static FieldAccess ForJSGlobalProxyNativeContext();
2581cb0ef41Sopenharmony_ci
2591cb0ef41Sopenharmony_ci  // Provides access to JSArrayIterator::iterated_object() field.
2601cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayIteratorIteratedObject();
2611cb0ef41Sopenharmony_ci
2621cb0ef41Sopenharmony_ci  // Provides access to JSArrayIterator::next_index() field.
2631cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayIteratorNextIndex();
2641cb0ef41Sopenharmony_ci
2651cb0ef41Sopenharmony_ci  // Provides access to JSArrayIterator::kind() field.
2661cb0ef41Sopenharmony_ci  static FieldAccess ForJSArrayIteratorKind();
2671cb0ef41Sopenharmony_ci
2681cb0ef41Sopenharmony_ci  // Provides access to JSStringIterator::string() field.
2691cb0ef41Sopenharmony_ci  static FieldAccess ForJSStringIteratorString();
2701cb0ef41Sopenharmony_ci
2711cb0ef41Sopenharmony_ci  // Provides access to JSStringIterator::index() field.
2721cb0ef41Sopenharmony_ci  static FieldAccess ForJSStringIteratorIndex();
2731cb0ef41Sopenharmony_ci
2741cb0ef41Sopenharmony_ci  // Provides access to Cell::value() field.
2751cb0ef41Sopenharmony_ci  static FieldAccess ForCellValue();
2761cb0ef41Sopenharmony_ci
2771cb0ef41Sopenharmony_ci  // Provides access to arguments object fields.
2781cb0ef41Sopenharmony_ci  static FieldAccess ForArgumentsLength();
2791cb0ef41Sopenharmony_ci  static FieldAccess ForArgumentsCallee();
2801cb0ef41Sopenharmony_ci
2811cb0ef41Sopenharmony_ci  // Provides access to FixedArray slots.
2821cb0ef41Sopenharmony_ci  static FieldAccess ForFixedArraySlot(
2831cb0ef41Sopenharmony_ci      size_t index, WriteBarrierKind write_barrier_kind = kFullWriteBarrier);
2841cb0ef41Sopenharmony_ci
2851cb0ef41Sopenharmony_ci  static FieldAccess ForFeedbackVectorSlot(int index);
2861cb0ef41Sopenharmony_ci
2871cb0ef41Sopenharmony_ci  // Provides access to ScopeInfo flags.
2881cb0ef41Sopenharmony_ci  static FieldAccess ForScopeInfoFlags();
2891cb0ef41Sopenharmony_ci
2901cb0ef41Sopenharmony_ci  // Provides access to Context slots.
2911cb0ef41Sopenharmony_ci  static FieldAccess ForContextSlot(size_t index);
2921cb0ef41Sopenharmony_ci
2931cb0ef41Sopenharmony_ci  // Provides access to Context slots that are known to be pointers.
2941cb0ef41Sopenharmony_ci  static FieldAccess ForContextSlotKnownPointer(size_t index);
2951cb0ef41Sopenharmony_ci
2961cb0ef41Sopenharmony_ci  // Provides access to WeakFixedArray elements.
2971cb0ef41Sopenharmony_ci  static ElementAccess ForWeakFixedArrayElement();
2981cb0ef41Sopenharmony_ci  static FieldAccess ForWeakFixedArraySlot(int index);
2991cb0ef41Sopenharmony_ci
3001cb0ef41Sopenharmony_ci  // Provides access to FixedArray elements.
3011cb0ef41Sopenharmony_ci  static ElementAccess ForFixedArrayElement();
3021cb0ef41Sopenharmony_ci  static ElementAccess ForFixedArrayElement(ElementsKind kind);
3031cb0ef41Sopenharmony_ci
3041cb0ef41Sopenharmony_ci  // Provides access to SloppyArgumentsElements elements.
3051cb0ef41Sopenharmony_ci  static ElementAccess ForSloppyArgumentsElementsMappedEntry();
3061cb0ef41Sopenharmony_ci
3071cb0ef41Sopenharmony_ci  // Provides access to stack arguments
3081cb0ef41Sopenharmony_ci  static ElementAccess ForStackArgument();
3091cb0ef41Sopenharmony_ci
3101cb0ef41Sopenharmony_ci  // Provides access to FixedDoubleArray elements.
3111cb0ef41Sopenharmony_ci  static ElementAccess ForFixedDoubleArrayElement();
3121cb0ef41Sopenharmony_ci
3131cb0ef41Sopenharmony_ci  // Provides access to EnumCache::keys() field.
3141cb0ef41Sopenharmony_ci  static FieldAccess ForEnumCacheKeys();
3151cb0ef41Sopenharmony_ci
3161cb0ef41Sopenharmony_ci  // Provides access to EnumCache::indices() field.
3171cb0ef41Sopenharmony_ci  static FieldAccess ForEnumCacheIndices();
3181cb0ef41Sopenharmony_ci
3191cb0ef41Sopenharmony_ci  // Provides access to Fixed{type}TypedArray and External{type}Array elements.
3201cb0ef41Sopenharmony_ci  static ElementAccess ForTypedArrayElement(ExternalArrayType type,
3211cb0ef41Sopenharmony_ci                                            bool is_external);
3221cb0ef41Sopenharmony_ci
3231cb0ef41Sopenharmony_ci  // Provides access to HashTable fields.
3241cb0ef41Sopenharmony_ci  static FieldAccess ForHashTableBaseNumberOfElements();
3251cb0ef41Sopenharmony_ci  static FieldAccess ForHashTableBaseNumberOfDeletedElement();
3261cb0ef41Sopenharmony_ci  static FieldAccess ForHashTableBaseCapacity();
3271cb0ef41Sopenharmony_ci
3281cb0ef41Sopenharmony_ci  // Provides access to OrderedHashMapOrSet fields.
3291cb0ef41Sopenharmony_ci  static FieldAccess ForOrderedHashMapOrSetNextTable();
3301cb0ef41Sopenharmony_ci  static FieldAccess ForOrderedHashMapOrSetNumberOfBuckets();
3311cb0ef41Sopenharmony_ci  static FieldAccess ForOrderedHashMapOrSetNumberOfElements();
3321cb0ef41Sopenharmony_ci  static FieldAccess ForOrderedHashMapOrSetNumberOfDeletedElements();
3331cb0ef41Sopenharmony_ci
3341cb0ef41Sopenharmony_ci  // Provides access to OrderedHashMap elements.
3351cb0ef41Sopenharmony_ci  static ElementAccess ForOrderedHashMapEntryValue();
3361cb0ef41Sopenharmony_ci
3371cb0ef41Sopenharmony_ci  // Provides access to Dictionary fields.
3381cb0ef41Sopenharmony_ci  static FieldAccess ForDictionaryNextEnumerationIndex();
3391cb0ef41Sopenharmony_ci  static FieldAccess ForDictionaryObjectHashIndex();
3401cb0ef41Sopenharmony_ci
3411cb0ef41Sopenharmony_ci  // Provides access to FeedbackCell fields.
3421cb0ef41Sopenharmony_ci  static FieldAccess ForFeedbackCellInterruptBudget();
3431cb0ef41Sopenharmony_ci
3441cb0ef41Sopenharmony_ci  // Provides access to a FeedbackVector fields.
3451cb0ef41Sopenharmony_ci  static FieldAccess ForFeedbackVectorInvocationCount();
3461cb0ef41Sopenharmony_ci  static FieldAccess ForFeedbackVectorFlags();
3471cb0ef41Sopenharmony_ci  static FieldAccess ForFeedbackVectorClosureFeedbackCellArray();
3481cb0ef41Sopenharmony_ci
3491cb0ef41Sopenharmony_ci private:
3501cb0ef41Sopenharmony_ci  DISALLOW_IMPLICIT_CONSTRUCTORS(AccessBuilder);
3511cb0ef41Sopenharmony_ci};
3521cb0ef41Sopenharmony_ci
3531cb0ef41Sopenharmony_ci}  // namespace compiler
3541cb0ef41Sopenharmony_ci}  // namespace internal
3551cb0ef41Sopenharmony_ci}  // namespace v8
3561cb0ef41Sopenharmony_ci
3571cb0ef41Sopenharmony_ci#endif  // V8_COMPILER_ACCESS_BUILDER_H_
358