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