LCOV - code coverage report
Current view: top level - src/compiler - access-builder.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 246 274 89.8 %
Date: 2019-03-21 Functions: 94 104 90.4 %

          Line data    Source code
       1             : // Copyright 2014 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/compiler/access-builder.h"
       6             : 
       7             : #include "src/compiler/type-cache.h"
       8             : #include "src/contexts.h"
       9             : #include "src/frames.h"
      10             : #include "src/handles-inl.h"
      11             : #include "src/heap/heap.h"
      12             : #include "src/objects-inl.h"
      13             : #include "src/objects/arguments.h"
      14             : #include "src/objects/cell.h"
      15             : #include "src/objects/heap-number.h"
      16             : #include "src/objects/js-collection.h"
      17             : #include "src/objects/js-generator.h"
      18             : #include "src/objects/module.h"
      19             : 
      20             : namespace v8 {
      21             : namespace internal {
      22             : namespace compiler {
      23             : 
      24             : // static
      25      140459 : FieldAccess AccessBuilder::ForExternalIntPtr() {
      26             :   FieldAccess access = {kUntaggedBase,      0,           MaybeHandle<Name>(),
      27             :                         MaybeHandle<Map>(), Type::Any(), MachineType::IntPtr(),
      28             :                         kNoWriteBarrier};
      29      140459 :   return access;
      30             : }
      31             : 
      32             : // static
      33           0 : FieldAccess AccessBuilder::ForExternalUint8Value() {
      34             :   FieldAccess access = {kUntaggedBase,
      35             :                         0,
      36             :                         MaybeHandle<Name>(),
      37             :                         MaybeHandle<Map>(),
      38           0 :                         TypeCache::Get()->kUint8,
      39             :                         MachineType::Uint8(),
      40             :                         kNoWriteBarrier};
      41           0 :   return access;
      42             : }
      43             : 
      44             : // static
      45      487491 : FieldAccess AccessBuilder::ForMap() {
      46             :   FieldAccess access = {kTaggedBase,           HeapObject::kMapOffset,
      47             :                         MaybeHandle<Name>(),   MaybeHandle<Map>(),
      48             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
      49             :                         kMapWriteBarrier};
      50      487491 :   return access;
      51             : }
      52             : 
      53             : // static
      54           0 : FieldAccess AccessBuilder::ForCompressedMap() {
      55             :   FieldAccess access = {kTaggedBase, HeapObject::kMapOffset,
      56             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
      57             :                         // We use MachineType::Uint32() for the compressed
      58             :                         // pointer load, because we want to examine it
      59             :                         // as a compressed pointer in map checks.
      60             :                         Type::OtherInternal(), MachineType::Uint32(),
      61             :                         kMapWriteBarrier, LoadSensitivity::kUnsafe};
      62           0 :   return access;
      63             : }
      64             : 
      65             : // static
      66      196930 : FieldAccess AccessBuilder::ForHeapNumberValue() {
      67             :   FieldAccess access = {
      68             :       kTaggedBase,        HeapNumber::kValueOffset,   MaybeHandle<Name>(),
      69      196930 :       MaybeHandle<Map>(), TypeCache::Get()->kFloat64, MachineType::Float64(),
      70             :       kNoWriteBarrier};
      71      196930 :   return access;
      72             : }
      73             : 
      74             : // static
      75       47420 : FieldAccess AccessBuilder::ForBigIntBitfield() {
      76             :   FieldAccess access = {
      77             :       kTaggedBase,        BigInt::kBitfieldOffset,  MaybeHandle<Name>(),
      78       47420 :       MaybeHandle<Map>(), TypeCache::Get()->kInt32, MachineType::Uint32(),
      79             :       kNoWriteBarrier};
      80       47420 :   return access;
      81             : }
      82             : 
      83             : // static
      84       88422 : FieldAccess AccessBuilder::ForJSObjectPropertiesOrHash() {
      85             :   FieldAccess access = {kTaggedBase,          JSObject::kPropertiesOrHashOffset,
      86             :                         MaybeHandle<Name>(),  MaybeHandle<Map>(),
      87             :                         Type::Any(),          MachineType::AnyTagged(),
      88             :                         kPointerWriteBarrier, LoadSensitivity::kCritical};
      89       88422 :   return access;
      90             : }
      91             : 
      92             : 
      93             : // static
      94      105097 : FieldAccess AccessBuilder::ForJSObjectElements() {
      95             :   FieldAccess access = {kTaggedBase,          JSObject::kElementsOffset,
      96             :                         MaybeHandle<Name>(),  MaybeHandle<Map>(),
      97             :                         Type::Internal(),     MachineType::TaggedPointer(),
      98             :                         kPointerWriteBarrier, LoadSensitivity::kCritical};
      99      105097 :   return access;
     100             : }
     101             : 
     102             : 
     103             : // static
     104       32800 : FieldAccess AccessBuilder::ForJSObjectInObjectProperty(const MapRef& map,
     105             :                                                        int index) {
     106       32800 :   int const offset = map.GetInObjectPropertyOffset(index);
     107             :   FieldAccess access = {kTaggedBase,         offset,
     108             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     109             :                         Type::NonInternal(), MachineType::AnyTagged(),
     110             :                         kFullWriteBarrier};
     111       32800 :   return access;
     112             : }
     113             : 
     114             : // static
     115        2990 : FieldAccess AccessBuilder::ForJSObjectOffset(
     116             :     int offset, WriteBarrierKind write_barrier_kind) {
     117             :   FieldAccess access = {kTaggedBase,         offset,
     118             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     119             :                         Type::NonInternal(), MachineType::AnyTagged(),
     120             :                         write_barrier_kind};
     121        2990 :   return access;
     122             : }
     123             : 
     124             : // static
     125         445 : FieldAccess AccessBuilder::ForJSCollectionTable() {
     126             :   FieldAccess access = {kTaggedBase,           JSCollection::kTableOffset,
     127             :                         MaybeHandle<Name>(),   MaybeHandle<Map>(),
     128             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     129             :                         kPointerWriteBarrier};
     130         445 :   return access;
     131             : }
     132             : 
     133             : // static
     134        1283 : FieldAccess AccessBuilder::ForJSCollectionIteratorTable() {
     135             :   FieldAccess access = {
     136             :       kTaggedBase,           JSCollectionIterator::kTableOffset,
     137             :       MaybeHandle<Name>(),   MaybeHandle<Map>(),
     138             :       Type::OtherInternal(), MachineType::TaggedPointer(),
     139             :       kPointerWriteBarrier};
     140        1283 :   return access;
     141             : }
     142             : 
     143             : // static
     144        1283 : FieldAccess AccessBuilder::ForJSCollectionIteratorIndex() {
     145             :   FieldAccess access = {kTaggedBase,
     146             :                         JSCollectionIterator::kIndexOffset,
     147             :                         MaybeHandle<Name>(),
     148             :                         MaybeHandle<Map>(),
     149        1283 :                         TypeCache::Get()->kFixedArrayLengthType,
     150             :                         MachineType::TaggedSigned(),
     151             :                         kNoWriteBarrier};
     152        1283 :   return access;
     153             : }
     154             : 
     155             : // static
     156        2223 : FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() {
     157             :   FieldAccess access = {
     158             :       kTaggedBase,         JSFunction::kPrototypeOrInitialMapOffset,
     159             :       MaybeHandle<Name>(), MaybeHandle<Map>(),
     160             :       Type::Any(),         MachineType::AnyTagged(),
     161             :       kFullWriteBarrier};
     162        2223 :   return access;
     163             : }
     164             : 
     165             : // static
     166       58231 : FieldAccess AccessBuilder::ForJSFunctionContext() {
     167             :   FieldAccess access = {kTaggedBase,         JSFunction::kContextOffset,
     168             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     169             :                         Type::Internal(),    MachineType::AnyTagged(),
     170             :                         kPointerWriteBarrier};
     171       58231 :   return access;
     172             : }
     173             : 
     174             : 
     175             : // static
     176       31995 : FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() {
     177             :   FieldAccess access = {
     178             :       kTaggedBase,           JSFunction::kSharedFunctionInfoOffset,
     179             :       Handle<Name>(),        MaybeHandle<Map>(),
     180             :       Type::OtherInternal(), MachineType::TaggedPointer(),
     181             :       kPointerWriteBarrier};
     182       31995 :   return access;
     183             : }
     184             : 
     185             : // static
     186       31995 : FieldAccess AccessBuilder::ForJSFunctionFeedbackCell() {
     187             :   FieldAccess access = {kTaggedBase,         JSFunction::kFeedbackCellOffset,
     188             :                         Handle<Name>(),      MaybeHandle<Map>(),
     189             :                         Type::Internal(),    MachineType::TaggedPointer(),
     190             :                         kPointerWriteBarrier};
     191       31995 :   return access;
     192             : }
     193             : 
     194             : // static
     195       31995 : FieldAccess AccessBuilder::ForJSFunctionCode() {
     196             :   FieldAccess access = {kTaggedBase,           JSFunction::kCodeOffset,
     197             :                         Handle<Name>(),        MaybeHandle<Map>(),
     198             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     199             :                         kPointerWriteBarrier};
     200       31995 :   return access;
     201             : }
     202             : 
     203             : // static
     204         111 : FieldAccess AccessBuilder::ForJSBoundFunctionBoundTargetFunction() {
     205             :   FieldAccess access = {
     206             :       kTaggedBase,         JSBoundFunction::kBoundTargetFunctionOffset,
     207             :       Handle<Name>(),      MaybeHandle<Map>(),
     208             :       Type::Callable(),    MachineType::TaggedPointer(),
     209             :       kPointerWriteBarrier};
     210         111 :   return access;
     211             : }
     212             : 
     213             : // static
     214         111 : FieldAccess AccessBuilder::ForJSBoundFunctionBoundThis() {
     215             :   FieldAccess access = {kTaggedBase,         JSBoundFunction::kBoundThisOffset,
     216             :                         Handle<Name>(),      MaybeHandle<Map>(),
     217             :                         Type::NonInternal(), MachineType::AnyTagged(),
     218             :                         kFullWriteBarrier};
     219         111 :   return access;
     220             : }
     221             : 
     222             : // static
     223         111 : FieldAccess AccessBuilder::ForJSBoundFunctionBoundArguments() {
     224             :   FieldAccess access = {
     225             :       kTaggedBase,         JSBoundFunction::kBoundArgumentsOffset,
     226             :       Handle<Name>(),      MaybeHandle<Map>(),
     227             :       Type::Internal(),    MachineType::TaggedPointer(),
     228             :       kPointerWriteBarrier};
     229         111 :   return access;
     230             : }
     231             : 
     232             : // static
     233       10652 : FieldAccess AccessBuilder::ForJSGeneratorObjectContext() {
     234             :   FieldAccess access = {kTaggedBase,         JSGeneratorObject::kContextOffset,
     235             :                         Handle<Name>(),      MaybeHandle<Map>(),
     236             :                         Type::Internal(),    MachineType::TaggedPointer(),
     237             :                         kPointerWriteBarrier};
     238       10652 :   return access;
     239             : }
     240             : 
     241             : // static
     242        1642 : FieldAccess AccessBuilder::ForJSGeneratorObjectFunction() {
     243             :   FieldAccess access = {kTaggedBase,         JSGeneratorObject::kFunctionOffset,
     244             :                         Handle<Name>(),      MaybeHandle<Map>(),
     245             :                         Type::Function(),    MachineType::TaggedPointer(),
     246             :                         kPointerWriteBarrier};
     247        1642 :   return access;
     248             : }
     249             : 
     250             : // static
     251        1642 : FieldAccess AccessBuilder::ForJSGeneratorObjectReceiver() {
     252             :   FieldAccess access = {kTaggedBase,         JSGeneratorObject::kReceiverOffset,
     253             :                         Handle<Name>(),      MaybeHandle<Map>(),
     254             :                         Type::Internal(),    MachineType::TaggedPointer(),
     255             :                         kPointerWriteBarrier};
     256        1642 :   return access;
     257             : }
     258             : 
     259             : // static
     260       10834 : FieldAccess AccessBuilder::ForJSGeneratorObjectContinuation() {
     261             :   FieldAccess access = {
     262             :       kTaggedBase,         JSGeneratorObject::kContinuationOffset,
     263             :       Handle<Name>(),      MaybeHandle<Map>(),
     264             :       Type::SignedSmall(), MachineType::TaggedSigned(),
     265             :       kNoWriteBarrier};
     266       10834 :   return access;
     267             : }
     268             : 
     269             : // static
     270       15441 : FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() {
     271             :   FieldAccess access = {
     272             :       kTaggedBase,         JSGeneratorObject::kInputOrDebugPosOffset,
     273             :       Handle<Name>(),      MaybeHandle<Map>(),
     274             :       Type::NonInternal(), MachineType::AnyTagged(),
     275             :       kFullWriteBarrier};
     276       15441 :   return access;
     277             : }
     278             : 
     279             : 
     280             : // static
     281       24600 : FieldAccess AccessBuilder::ForJSGeneratorObjectParametersAndRegisters() {
     282             :   FieldAccess access = {
     283             :       kTaggedBase,         JSGeneratorObject::kParametersAndRegistersOffset,
     284             :       Handle<Name>(),      MaybeHandle<Map>(),
     285             :       Type::Internal(),    MachineType::AnyTagged(),
     286             :       kPointerWriteBarrier};
     287       24600 :   return access;
     288             : }
     289             : 
     290             : // static
     291        8931 : FieldAccess AccessBuilder::ForJSGeneratorObjectResumeMode() {
     292             :   FieldAccess access = {
     293             :       kTaggedBase,         JSGeneratorObject::kResumeModeOffset,
     294             :       Handle<Name>(),      MaybeHandle<Map>(),
     295             :       Type::SignedSmall(), MachineType::TaggedSigned(),
     296             :       kNoWriteBarrier};
     297        8931 :   return access;
     298             : }
     299             : 
     300             : // static
     301        3212 : FieldAccess AccessBuilder::ForJSAsyncFunctionObjectPromise() {
     302             :   FieldAccess access = {
     303             :       kTaggedBase,         JSAsyncFunctionObject::kPromiseOffset,
     304             :       Handle<Name>(),      MaybeHandle<Map>(),
     305             :       Type::OtherObject(), MachineType::TaggedPointer(),
     306             :       kFullWriteBarrier};
     307        3212 :   return access;
     308             : }
     309             : 
     310             : // static
     311          35 : FieldAccess AccessBuilder::ForJSAsyncGeneratorObjectQueue() {
     312             :   FieldAccess access = {
     313             :       kTaggedBase,         JSAsyncGeneratorObject::kQueueOffset,
     314             :       Handle<Name>(),      MaybeHandle<Map>(),
     315             :       Type::NonInternal(), MachineType::AnyTagged(),
     316             :       kFullWriteBarrier};
     317          35 :   return access;
     318             : }
     319             : 
     320             : // static
     321          35 : FieldAccess AccessBuilder::ForJSAsyncGeneratorObjectIsAwaiting() {
     322             :   FieldAccess access = {
     323             :       kTaggedBase,         JSAsyncGeneratorObject::kIsAwaitingOffset,
     324             :       Handle<Name>(),      MaybeHandle<Map>(),
     325             :       Type::SignedSmall(), MachineType::TaggedSigned(),
     326             :       kNoWriteBarrier};
     327          35 :   return access;
     328             : }
     329             : 
     330             : // static
     331       31877 : FieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) {
     332       31877 :   TypeCache const* type_cache = TypeCache::Get();
     333             :   FieldAccess access = {kTaggedBase,
     334             :                         JSArray::kLengthOffset,
     335             :                         Handle<Name>(),
     336             :                         MaybeHandle<Map>(),
     337             :                         type_cache->kJSArrayLengthType,
     338             :                         MachineType::TaggedSigned(),
     339             :                         kFullWriteBarrier};
     340       31877 :   if (IsDoubleElementsKind(elements_kind)) {
     341        4425 :     access.type = type_cache->kFixedDoubleArrayLengthType;
     342        4425 :     access.write_barrier_kind = kNoWriteBarrier;
     343       27452 :   } else if (IsFastElementsKind(elements_kind)) {
     344       27452 :     access.type = type_cache->kFixedArrayLengthType;
     345       27452 :     access.write_barrier_kind = kNoWriteBarrier;
     346             :   }
     347       31877 :   return access;
     348             : }
     349             : 
     350             : 
     351             : // static
     352         478 : FieldAccess AccessBuilder::ForJSArrayBufferBackingStore() {
     353             :   FieldAccess access = {
     354             :       kTaggedBase,           JSArrayBuffer::kBackingStoreOffset,
     355             :       MaybeHandle<Name>(),   MaybeHandle<Map>(),
     356             :       Type::OtherInternal(), MachineType::Pointer(),
     357             :       kNoWriteBarrier};
     358         478 :   return access;
     359             : }
     360             : 
     361             : // static
     362         350 : FieldAccess AccessBuilder::ForJSArrayBufferBitField() {
     363             :   FieldAccess access = {
     364             :       kTaggedBase,        JSArrayBuffer::kBitFieldOffset, MaybeHandle<Name>(),
     365         350 :       MaybeHandle<Map>(), TypeCache::Get()->kUint8,       MachineType::Uint32(),
     366             :       kNoWriteBarrier};
     367         350 :   return access;
     368             : }
     369             : 
     370             : // static
     371        6206 : FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() {
     372             :   FieldAccess access = {kTaggedBase,           JSArrayBufferView::kBufferOffset,
     373             :                         MaybeHandle<Name>(),   MaybeHandle<Map>(),
     374             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     375             :                         kPointerWriteBarrier};
     376        6206 :   return access;
     377             : }
     378             : 
     379             : // static
     380         267 : FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() {
     381             :   FieldAccess access = {kTaggedBase,
     382             :                         JSArrayBufferView::kByteLengthOffset,
     383             :                         MaybeHandle<Name>(),
     384             :                         MaybeHandle<Map>(),
     385         267 :                         TypeCache::Get()->kJSArrayBufferViewByteLengthType,
     386             :                         MachineType::UintPtr(),
     387             :                         kNoWriteBarrier};
     388         267 :   return access;
     389             : }
     390             : 
     391             : // static
     392         266 : FieldAccess AccessBuilder::ForJSArrayBufferViewByteOffset() {
     393             :   FieldAccess access = {kTaggedBase,
     394             :                         JSArrayBufferView::kByteOffsetOffset,
     395             :                         MaybeHandle<Name>(),
     396             :                         MaybeHandle<Map>(),
     397         266 :                         TypeCache::Get()->kJSArrayBufferViewByteOffsetType,
     398             :                         MachineType::UintPtr(),
     399             :                         kNoWriteBarrier};
     400         266 :   return access;
     401             : }
     402             : 
     403             : // static
     404        6391 : FieldAccess AccessBuilder::ForJSTypedArrayLength() {
     405             :   FieldAccess access = {kTaggedBase,
     406             :                         JSTypedArray::kLengthOffset,
     407             :                         MaybeHandle<Name>(),
     408             :                         MaybeHandle<Map>(),
     409        6391 :                         TypeCache::Get()->kJSTypedArrayLengthType,
     410             :                         MachineType::TaggedSigned(),
     411             :                         kNoWriteBarrier};
     412        6391 :   return access;
     413             : }
     414             : 
     415             : // static
     416           0 : FieldAccess AccessBuilder::ForJSDateValue() {
     417             :   FieldAccess access = {kTaggedBase,
     418             :                         JSDate::kValueOffset,
     419             :                         MaybeHandle<Name>(),
     420             :                         MaybeHandle<Map>(),
     421           0 :                         TypeCache::Get()->kJSDateValueType,
     422             :                         MachineType::AnyTagged(),
     423             :                         kFullWriteBarrier};
     424           0 :   return access;
     425             : }
     426             : 
     427             : // static
     428           0 : FieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) {
     429             :   FieldAccess access = {
     430             :       kTaggedBase,         JSDate::kValueOffset + index * kTaggedSize,
     431             :       MaybeHandle<Name>(), MaybeHandle<Map>(),
     432             :       Type::Number(),      MachineType::AnyTagged(),
     433           0 :       kFullWriteBarrier};
     434           0 :   return access;
     435             : }
     436             : 
     437             : 
     438             : // static
     439        3803 : FieldAccess AccessBuilder::ForJSIteratorResultDone() {
     440             :   FieldAccess access = {kTaggedBase,         JSIteratorResult::kDoneOffset,
     441             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     442             :                         Type::NonInternal(), MachineType::AnyTagged(),
     443             :                         kFullWriteBarrier};
     444        3803 :   return access;
     445             : }
     446             : 
     447             : 
     448             : // static
     449        3803 : FieldAccess AccessBuilder::ForJSIteratorResultValue() {
     450             :   FieldAccess access = {kTaggedBase,         JSIteratorResult::kValueOffset,
     451             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     452             :                         Type::NonInternal(), MachineType::AnyTagged(),
     453             :                         kFullWriteBarrier};
     454        3803 :   return access;
     455             : }
     456             : 
     457             : // static
     458         582 : FieldAccess AccessBuilder::ForJSRegExpData() {
     459             :   FieldAccess access = {kTaggedBase,         JSRegExp::kDataOffset,
     460             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     461             :                         Type::NonInternal(), MachineType::AnyTagged(),
     462             :                         kFullWriteBarrier};
     463         582 :   return access;
     464             : }
     465             : 
     466             : // static
     467         582 : FieldAccess AccessBuilder::ForJSRegExpFlags() {
     468             :   FieldAccess access = {kTaggedBase,         JSRegExp::kFlagsOffset,
     469             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     470             :                         Type::NonInternal(), MachineType::AnyTagged(),
     471             :                         kFullWriteBarrier};
     472         582 :   return access;
     473             : }
     474             : 
     475             : // static
     476        1069 : FieldAccess AccessBuilder::ForJSRegExpLastIndex() {
     477             :   FieldAccess access = {kTaggedBase,         JSRegExp::kLastIndexOffset,
     478             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     479             :                         Type::NonInternal(), MachineType::AnyTagged(),
     480             :                         kFullWriteBarrier};
     481        1069 :   return access;
     482             : }
     483             : 
     484             : // static
     485         582 : FieldAccess AccessBuilder::ForJSRegExpSource() {
     486             :   FieldAccess access = {kTaggedBase,         JSRegExp::kSourceOffset,
     487             :                         MaybeHandle<Name>(), MaybeHandle<Map>(),
     488             :                         Type::NonInternal(), MachineType::AnyTagged(),
     489             :                         kFullWriteBarrier};
     490         582 :   return access;
     491             : }
     492             : 
     493             : 
     494             : // static
     495       62687 : FieldAccess AccessBuilder::ForFixedArrayLength() {
     496             :   FieldAccess access = {kTaggedBase,
     497             :                         FixedArray::kLengthOffset,
     498             :                         MaybeHandle<Name>(),
     499             :                         MaybeHandle<Map>(),
     500       62687 :                         TypeCache::Get()->kFixedArrayLengthType,
     501             :                         MachineType::TaggedSigned(),
     502             :                         kNoWriteBarrier};
     503       62687 :   return access;
     504             : }
     505             : 
     506             : // static
     507        4359 : FieldAccess AccessBuilder::ForPropertyArrayLengthAndHash() {
     508             :   FieldAccess access = {
     509             :       kTaggedBase,         PropertyArray::kLengthAndHashOffset,
     510             :       MaybeHandle<Name>(), MaybeHandle<Map>(),
     511             :       Type::SignedSmall(), MachineType::TaggedSigned(),
     512             :       kNoWriteBarrier};
     513        4359 :   return access;
     514             : }
     515             : 
     516             : // static
     517        5625 : FieldAccess AccessBuilder::ForFixedTypedArrayBaseBasePointer() {
     518             :   FieldAccess access = {
     519             :       kTaggedBase,           FixedTypedArrayBase::kBasePointerOffset,
     520             :       MaybeHandle<Name>(),   MaybeHandle<Map>(),
     521             :       Type::OtherInternal(), MachineType::AnyTagged(),
     522             :       kPointerWriteBarrier,  LoadSensitivity::kCritical};
     523        5625 :   return access;
     524             : }
     525             : 
     526             : // static
     527        5625 : FieldAccess AccessBuilder::ForFixedTypedArrayBaseExternalPointer() {
     528             :   FieldAccess access = {kTaggedBase,
     529             :                         FixedTypedArrayBase::kExternalPointerOffset,
     530             :                         MaybeHandle<Name>(),
     531             :                         MaybeHandle<Map>(),
     532             :                         Type::ExternalPointer(),
     533             :                         MachineType::Pointer(),
     534             :                         kNoWriteBarrier,
     535             :                         LoadSensitivity::kCritical};
     536        5625 :   return access;
     537             : }
     538             : 
     539             : // static
     540        1672 : FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() {
     541             :   FieldAccess access = {
     542             :       kTaggedBase,           DescriptorArray::kEnumCacheOffset,
     543             :       Handle<Name>(),        MaybeHandle<Map>(),
     544             :       Type::OtherInternal(), MachineType::TaggedPointer(),
     545             :       kPointerWriteBarrier};
     546        1672 :   return access;
     547             : }
     548             : 
     549             : // static
     550       68964 : FieldAccess AccessBuilder::ForMapBitField() {
     551             :   FieldAccess access = {
     552             :       kTaggedBase,        Map::kBitFieldOffset,     Handle<Name>(),
     553       68964 :       MaybeHandle<Map>(), TypeCache::Get()->kUint8, MachineType::Uint8(),
     554             :       kNoWriteBarrier};
     555       68964 :   return access;
     556             : }
     557             : 
     558             : // static
     559         230 : FieldAccess AccessBuilder::ForMapBitField2() {
     560             :   FieldAccess access = {
     561             :       kTaggedBase,        Map::kBitField2Offset,    Handle<Name>(),
     562         230 :       MaybeHandle<Map>(), TypeCache::Get()->kUint8, MachineType::Uint8(),
     563             :       kNoWriteBarrier};
     564         230 :   return access;
     565             : }
     566             : 
     567             : // static
     568        2065 : FieldAccess AccessBuilder::ForMapBitField3() {
     569             :   FieldAccess access = {
     570             :       kTaggedBase,        Map::kBitField3Offset,    Handle<Name>(),
     571        2065 :       MaybeHandle<Map>(), TypeCache::Get()->kInt32, MachineType::Int32(),
     572             :       kNoWriteBarrier};
     573        2065 :   return access;
     574             : }
     575             : 
     576             : 
     577             : // static
     578        1672 : FieldAccess AccessBuilder::ForMapDescriptors() {
     579             :   FieldAccess access = {kTaggedBase,           Map::kDescriptorsOffset,
     580             :                         Handle<Name>(),        MaybeHandle<Map>(),
     581             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     582             :                         kPointerWriteBarrier};
     583        1672 :   return access;
     584             : }
     585             : 
     586             : 
     587             : // static
     588       87028 : FieldAccess AccessBuilder::ForMapInstanceType() {
     589             :   FieldAccess access = {
     590             :       kTaggedBase,        Map::kInstanceTypeOffset,  Handle<Name>(),
     591       87028 :       MaybeHandle<Map>(), TypeCache::Get()->kUint16, MachineType::Uint16(),
     592             :       kNoWriteBarrier};
     593       87028 :   return access;
     594             : }
     595             : 
     596             : 
     597             : // static
     598         613 : FieldAccess AccessBuilder::ForMapPrototype() {
     599             :   FieldAccess access = {kTaggedBase,         Map::kPrototypeOffset,
     600             :                         Handle<Name>(),      MaybeHandle<Map>(),
     601             :                         Type::Any(),         MachineType::TaggedPointer(),
     602             :                         kPointerWriteBarrier};
     603         613 :   return access;
     604             : }
     605             : 
     606             : // static
     607        7017 : FieldAccess AccessBuilder::ForModuleRegularExports() {
     608             :   FieldAccess access = {kTaggedBase,           Module::kRegularExportsOffset,
     609             :                         Handle<Name>(),        MaybeHandle<Map>(),
     610             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     611             :                         kPointerWriteBarrier};
     612        7017 :   return access;
     613             : }
     614             : 
     615             : // static
     616         103 : FieldAccess AccessBuilder::ForModuleRegularImports() {
     617             :   FieldAccess access = {kTaggedBase,           Module::kRegularImportsOffset,
     618             :                         Handle<Name>(),        MaybeHandle<Map>(),
     619             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     620             :                         kPointerWriteBarrier};
     621         103 :   return access;
     622             : }
     623             : 
     624             : // static
     625        7561 : FieldAccess AccessBuilder::ForNameHashField() {
     626             :   FieldAccess access = {kTaggedBase,        Name::kHashFieldOffset,
     627             :                         Handle<Name>(),     MaybeHandle<Map>(),
     628             :                         Type::Unsigned32(), MachineType::Uint32(),
     629             :                         kNoWriteBarrier};
     630        7561 :   return access;
     631             : }
     632             : 
     633             : // static
     634       31102 : FieldAccess AccessBuilder::ForStringLength() {
     635             :   FieldAccess access = {kTaggedBase,
     636             :                         String::kLengthOffset,
     637             :                         Handle<Name>(),
     638             :                         MaybeHandle<Map>(),
     639       31102 :                         TypeCache::Get()->kStringLengthType,
     640             :                         MachineType::Uint32(),
     641             :                         kNoWriteBarrier};
     642       31102 :   return access;
     643             : }
     644             : 
     645             : // static
     646        7354 : FieldAccess AccessBuilder::ForConsStringFirst() {
     647             :   FieldAccess access = {kTaggedBase,         ConsString::kFirstOffset,
     648             :                         Handle<Name>(),      MaybeHandle<Map>(),
     649             :                         Type::String(),      MachineType::TaggedPointer(),
     650             :                         kPointerWriteBarrier};
     651        7354 :   return access;
     652             : }
     653             : 
     654             : // static
     655        7354 : FieldAccess AccessBuilder::ForConsStringSecond() {
     656             :   FieldAccess access = {kTaggedBase,         ConsString::kSecondOffset,
     657             :                         Handle<Name>(),      MaybeHandle<Map>(),
     658             :                         Type::String(),      MachineType::TaggedPointer(),
     659             :                         kPointerWriteBarrier};
     660        7354 :   return access;
     661             : }
     662             : 
     663             : // static
     664        2409 : FieldAccess AccessBuilder::ForThinStringActual() {
     665             :   FieldAccess access = {kTaggedBase,         ThinString::kActualOffset,
     666             :                         Handle<Name>(),      MaybeHandle<Map>(),
     667             :                         Type::String(),      MachineType::TaggedPointer(),
     668             :                         kPointerWriteBarrier};
     669        2409 :   return access;
     670             : }
     671             : 
     672             : // static
     673        2300 : FieldAccess AccessBuilder::ForSlicedStringOffset() {
     674             :   FieldAccess access = {kTaggedBase,         SlicedString::kOffsetOffset,
     675             :                         Handle<Name>(),      MaybeHandle<Map>(),
     676             :                         Type::SignedSmall(), MachineType::TaggedSigned(),
     677             :                         kNoWriteBarrier};
     678        2300 :   return access;
     679             : }
     680             : 
     681             : // static
     682        2300 : FieldAccess AccessBuilder::ForSlicedStringParent() {
     683             :   FieldAccess access = {kTaggedBase,         SlicedString::kParentOffset,
     684             :                         Handle<Name>(),      MaybeHandle<Map>(),
     685             :                         Type::String(),      MachineType::TaggedPointer(),
     686             :                         kPointerWriteBarrier};
     687        2300 :   return access;
     688             : }
     689             : 
     690             : // static
     691        2300 : FieldAccess AccessBuilder::ForExternalStringResourceData() {
     692             :   FieldAccess access = {kTaggedBase,
     693             :                         ExternalString::kResourceDataOffset,
     694             :                         Handle<Name>(),
     695             :                         MaybeHandle<Map>(),
     696             :                         Type::ExternalPointer(),
     697             :                         MachineType::Pointer(),
     698             :                         kNoWriteBarrier};
     699        2300 :   return access;
     700             : }
     701             : 
     702             : // static
     703           0 : ElementAccess AccessBuilder::ForExternalOneByteStringCharacter() {
     704           0 :   ElementAccess access = {kUntaggedBase, 0, TypeCache::Get()->kUint8,
     705             :                           MachineType::Uint8(), kNoWriteBarrier};
     706           0 :   return access;
     707             : }
     708             : 
     709             : // static
     710           0 : ElementAccess AccessBuilder::ForExternalTwoByteStringCharacter() {
     711           0 :   ElementAccess access = {kUntaggedBase, 0, TypeCache::Get()->kUint16,
     712             :                           MachineType::Uint16(), kNoWriteBarrier};
     713           0 :   return access;
     714             : }
     715             : 
     716             : // static
     717        2300 : ElementAccess AccessBuilder::ForSeqOneByteStringCharacter() {
     718             :   ElementAccess access = {kTaggedBase, SeqOneByteString::kHeaderSize,
     719        2300 :                           TypeCache::Get()->kUint8, MachineType::Uint8(),
     720             :                           kNoWriteBarrier};
     721        2300 :   return access;
     722             : }
     723             : 
     724             : // static
     725        2300 : ElementAccess AccessBuilder::ForSeqTwoByteStringCharacter() {
     726             :   ElementAccess access = {kTaggedBase, SeqTwoByteString::kHeaderSize,
     727        2300 :                           TypeCache::Get()->kUint16, MachineType::Uint16(),
     728             :                           kNoWriteBarrier};
     729        2300 :   return access;
     730             : }
     731             : 
     732             : // static
     733           0 : FieldAccess AccessBuilder::ForJSGlobalObjectGlobalProxy() {
     734             :   FieldAccess access = {kTaggedBase,         JSGlobalObject::kGlobalProxyOffset,
     735             :                         Handle<Name>(),      MaybeHandle<Map>(),
     736             :                         Type::Receiver(),    MachineType::TaggedPointer(),
     737             :                         kPointerWriteBarrier};
     738           0 :   return access;
     739             : }
     740             : 
     741             : // static
     742           0 : FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() {
     743             :   FieldAccess access = {
     744             :       kTaggedBase,         JSGlobalObject::kNativeContextOffset,
     745             :       Handle<Name>(),      MaybeHandle<Map>(),
     746             :       Type::Internal(),    MachineType::TaggedPointer(),
     747             :       kPointerWriteBarrier};
     748           0 :   return access;
     749             : }
     750             : 
     751             : // static
     752         880 : FieldAccess AccessBuilder::ForJSGlobalProxyNativeContext() {
     753             :   FieldAccess access = {
     754             :       kTaggedBase,         JSGlobalProxy::kNativeContextOffset,
     755             :       Handle<Name>(),      MaybeHandle<Map>(),
     756             :       Type::Internal(),    MachineType::TaggedPointer(),
     757             :       kPointerWriteBarrier};
     758         880 :   return access;
     759             : }
     760             : 
     761             : // static
     762        1555 : FieldAccess AccessBuilder::ForJSArrayIteratorIteratedObject() {
     763             :   FieldAccess access = {
     764             :       kTaggedBase,         JSArrayIterator::kIteratedObjectOffset,
     765             :       Handle<Name>(),      MaybeHandle<Map>(),
     766             :       Type::Receiver(),    MachineType::TaggedPointer(),
     767             :       kPointerWriteBarrier};
     768        1555 :   return access;
     769             : }
     770             : 
     771             : // static
     772        1555 : FieldAccess AccessBuilder::ForJSArrayIteratorNextIndex() {
     773             :   // In generic case, cap to 2^53-1 (per ToLength() in spec) via
     774             :   // kPositiveSafeInteger
     775             :   FieldAccess access = {kTaggedBase,
     776             :                         JSArrayIterator::kNextIndexOffset,
     777             :                         Handle<Name>(),
     778             :                         MaybeHandle<Map>(),
     779        1555 :                         TypeCache::Get()->kPositiveSafeInteger,
     780             :                         MachineType::AnyTagged(),
     781             :                         kFullWriteBarrier};
     782        1555 :   return access;
     783             : }
     784             : 
     785             : // static
     786         934 : FieldAccess AccessBuilder::ForJSArrayIteratorKind() {
     787             :   FieldAccess access = {kTaggedBase,
     788             :                         JSArrayIterator::kKindOffset,
     789             :                         Handle<Name>(),
     790             :                         MaybeHandle<Map>(),
     791         934 :                         TypeCache::Get()->kJSArrayIteratorKindType,
     792             :                         MachineType::TaggedSigned(),
     793             :                         kNoWriteBarrier};
     794         934 :   return access;
     795             : }
     796             : 
     797             : // static
     798         149 : FieldAccess AccessBuilder::ForJSStringIteratorString() {
     799             :   FieldAccess access = {kTaggedBase,         JSStringIterator::kStringOffset,
     800             :                         Handle<Name>(),      MaybeHandle<Map>(),
     801             :                         Type::String(),      MachineType::TaggedPointer(),
     802             :                         kPointerWriteBarrier};
     803         149 :   return access;
     804             : }
     805             : 
     806             : // static
     807         236 : FieldAccess AccessBuilder::ForJSStringIteratorIndex() {
     808             :   FieldAccess access = {kTaggedBase,
     809             :                         JSStringIterator::kNextIndexOffset,
     810             :                         Handle<Name>(),
     811             :                         MaybeHandle<Map>(),
     812         236 :                         TypeCache::Get()->kStringLengthType,
     813             :                         MachineType::TaggedSigned(),
     814             :                         kNoWriteBarrier};
     815         236 :   return access;
     816             : }
     817             : 
     818             : // static
     819           0 : FieldAccess AccessBuilder::ForValue() {
     820             :   FieldAccess access = {kTaggedBase,         JSValue::kValueOffset,
     821             :                         Handle<Name>(),      MaybeHandle<Map>(),
     822             :                         Type::NonInternal(), MachineType::AnyTagged(),
     823             :                         kFullWriteBarrier};
     824           0 :   return access;
     825             : }
     826             : 
     827             : 
     828             : // static
     829       17985 : FieldAccess AccessBuilder::ForArgumentsLength() {
     830             :   FieldAccess access = {
     831             :       kTaggedBase,         JSArgumentsObjectWithLength::kLengthOffset,
     832             :       Handle<Name>(),      MaybeHandle<Map>(),
     833             :       Type::NonInternal(), MachineType::AnyTagged(),
     834             :       kFullWriteBarrier};
     835       17985 :   return access;
     836             : }
     837             : 
     838             : 
     839             : // static
     840       11807 : FieldAccess AccessBuilder::ForArgumentsCallee() {
     841             :   FieldAccess access = {
     842             :       kTaggedBase,         JSSloppyArgumentsObject::kCalleeOffset,
     843             :       Handle<Name>(),      MaybeHandle<Map>(),
     844             :       Type::NonInternal(), MachineType::AnyTagged(),
     845             :       kPointerWriteBarrier};
     846       11807 :   return access;
     847             : }
     848             : 
     849             : 
     850             : // static
     851     1629057 : FieldAccess AccessBuilder::ForFixedArraySlot(
     852             :     size_t index, WriteBarrierKind write_barrier_kind) {
     853     1629057 :   int offset = FixedArray::OffsetOfElementAt(static_cast<int>(index));
     854             :   FieldAccess access = {kTaggedBase,       offset,
     855             :                         Handle<Name>(),    MaybeHandle<Map>(),
     856             :                         Type::Any(),       MachineType::AnyTagged(),
     857             :                         write_barrier_kind};
     858     1629057 :   return access;
     859             : }
     860             : 
     861             : 
     862             : // static
     863        7265 : FieldAccess AccessBuilder::ForCellValue() {
     864             :   FieldAccess access = {kTaggedBase,       Cell::kValueOffset,
     865             :                         Handle<Name>(),    MaybeHandle<Map>(),
     866             :                         Type::Any(),       MachineType::AnyTagged(),
     867             :                         kFullWriteBarrier, LoadSensitivity::kCritical};
     868        7265 :   return access;
     869             : }
     870             : 
     871             : // static
     872     1026609 : FieldAccess AccessBuilder::ForContextSlot(size_t index) {
     873     1026609 :   int offset = Context::OffsetOfElementAt(static_cast<int>(index));
     874             :   DCHECK_EQ(offset,
     875             :             Context::SlotOffset(static_cast<int>(index)) + kHeapObjectTag);
     876             :   FieldAccess access = {kTaggedBase,      offset,
     877             :                         Handle<Name>(),   MaybeHandle<Map>(),
     878             :                         Type::Any(),      MachineType::AnyTagged(),
     879             :                         kFullWriteBarrier};
     880     1026609 :   return access;
     881             : }
     882             : 
     883             : // static
     884       18623 : ElementAccess AccessBuilder::ForFixedArrayElement() {
     885             :   ElementAccess access = {kTaggedBase, FixedArray::kHeaderSize, Type::Any(),
     886             :                           MachineType::AnyTagged(), kFullWriteBarrier};
     887       18623 :   return access;
     888             : }
     889             : 
     890             : // static
     891        6478 : ElementAccess AccessBuilder::ForFixedArrayElement(
     892             :     ElementsKind kind, LoadSensitivity load_sensitivity) {
     893             :   ElementAccess access = {kTaggedBase,       FixedArray::kHeaderSize,
     894             :                           Type::Any(),       MachineType::AnyTagged(),
     895             :                           kFullWriteBarrier, load_sensitivity};
     896        6478 :   switch (kind) {
     897             :     case PACKED_SMI_ELEMENTS:
     898        3302 :       access.type = Type::SignedSmall();
     899        3302 :       access.machine_type = MachineType::TaggedSigned();
     900        3302 :       access.write_barrier_kind = kNoWriteBarrier;
     901        3302 :       break;
     902             :     case HOLEY_SMI_ELEMENTS:
     903         683 :       access.type = TypeCache::Get()->kHoleySmi;
     904         683 :       break;
     905             :     case PACKED_ELEMENTS:
     906        1321 :       access.type = Type::NonInternal();
     907        1321 :       break;
     908             :     case HOLEY_ELEMENTS:
     909             :       break;
     910             :     case PACKED_DOUBLE_ELEMENTS:
     911         581 :       access.type = Type::Number();
     912         581 :       access.write_barrier_kind = kNoWriteBarrier;
     913         581 :       access.machine_type = MachineType::Float64();
     914         581 :       break;
     915             :     case HOLEY_DOUBLE_ELEMENTS:
     916         256 :       access.type = Type::NumberOrHole();
     917         256 :       access.write_barrier_kind = kNoWriteBarrier;
     918         256 :       access.machine_type = MachineType::Float64();
     919         256 :       break;
     920             :     default:
     921           0 :       UNREACHABLE();
     922             :       break;
     923             :   }
     924        6478 :   return access;
     925             : }
     926             : 
     927             : // static
     928         571 : ElementAccess AccessBuilder::ForStackArgument() {
     929             :   ElementAccess access = {
     930             :       kUntaggedBase,
     931             :       CommonFrameConstants::kFixedFrameSizeAboveFp - kSystemPointerSize,
     932             :       Type::NonInternal(), MachineType::Pointer(),
     933             :       WriteBarrierKind::kNoWriteBarrier};
     934         571 :   return access;
     935             : }
     936             : 
     937             : // static
     938         893 : ElementAccess AccessBuilder::ForFixedDoubleArrayElement() {
     939             :   ElementAccess access = {kTaggedBase, FixedDoubleArray::kHeaderSize,
     940         893 :                           TypeCache::Get()->kFloat64, MachineType::Float64(),
     941             :                           kNoWriteBarrier};
     942         893 :   return access;
     943             : }
     944             : 
     945             : // static
     946        1361 : FieldAccess AccessBuilder::ForEnumCacheKeys() {
     947             :   FieldAccess access = {kTaggedBase,           EnumCache::kKeysOffset,
     948             :                         MaybeHandle<Name>(),   MaybeHandle<Map>(),
     949             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     950             :                         kPointerWriteBarrier};
     951        1361 :   return access;
     952             : }
     953             : 
     954             : // static
     955         311 : FieldAccess AccessBuilder::ForEnumCacheIndices() {
     956             :   FieldAccess access = {kTaggedBase,           EnumCache::kIndicesOffset,
     957             :                         MaybeHandle<Name>(),   MaybeHandle<Map>(),
     958             :                         Type::OtherInternal(), MachineType::TaggedPointer(),
     959             :                         kPointerWriteBarrier};
     960         311 :   return access;
     961             : }
     962             : 
     963             : // static
     964        9390 : ElementAccess AccessBuilder::ForTypedArrayElement(
     965             :     ExternalArrayType type, bool is_external,
     966             :     LoadSensitivity load_sensitivity) {
     967        9390 :   BaseTaggedness taggedness = is_external ? kUntaggedBase : kTaggedBase;
     968        9390 :   int header_size = is_external ? 0 : FixedTypedArrayBase::kDataOffset;
     969        9390 :   switch (type) {
     970             :     case kExternalInt8Array: {
     971             :       ElementAccess access = {taggedness,       header_size,
     972             :                               Type::Signed32(), MachineType::Int8(),
     973             :                               kNoWriteBarrier,  load_sensitivity};
     974         737 :       return access;
     975             :     }
     976             :     case kExternalUint8Array:
     977             :     case kExternalUint8ClampedArray: {
     978             :       ElementAccess access = {taggedness,         header_size,
     979             :                               Type::Unsigned32(), MachineType::Uint8(),
     980             :                               kNoWriteBarrier,    load_sensitivity};
     981        2451 :       return access;
     982             :     }
     983             :     case kExternalInt16Array: {
     984             :       ElementAccess access = {taggedness,       header_size,
     985             :                               Type::Signed32(), MachineType::Int16(),
     986             :                               kNoWriteBarrier,  load_sensitivity};
     987         613 :       return access;
     988             :     }
     989             :     case kExternalUint16Array: {
     990             :       ElementAccess access = {taggedness,         header_size,
     991             :                               Type::Unsigned32(), MachineType::Uint16(),
     992             :                               kNoWriteBarrier,    load_sensitivity};
     993         816 :       return access;
     994             :     }
     995             :     case kExternalInt32Array: {
     996             :       ElementAccess access = {taggedness,       header_size,
     997             :                               Type::Signed32(), MachineType::Int32(),
     998             :                               kNoWriteBarrier,  load_sensitivity};
     999         941 :       return access;
    1000             :     }
    1001             :     case kExternalUint32Array: {
    1002             :       ElementAccess access = {taggedness,         header_size,
    1003             :                               Type::Unsigned32(), MachineType::Uint32(),
    1004             :                               kNoWriteBarrier,    load_sensitivity};
    1005         880 :       return access;
    1006             :     }
    1007             :     case kExternalFloat32Array: {
    1008             :       ElementAccess access = {taggedness,      header_size,
    1009             :                               Type::Number(),  MachineType::Float32(),
    1010             :                               kNoWriteBarrier, load_sensitivity};
    1011        2050 :       return access;
    1012             :     }
    1013             :     case kExternalFloat64Array: {
    1014             :       ElementAccess access = {taggedness,      header_size,
    1015             :                               Type::Number(),  MachineType::Float64(),
    1016             :                               kNoWriteBarrier, load_sensitivity};
    1017         902 :       return access;
    1018             :     }
    1019             :     case kExternalBigInt64Array:
    1020             :     case kExternalBigUint64Array:
    1021             :       // TODO(neis/jkummerow): Define appropriate types.
    1022           0 :       UNIMPLEMENTED();
    1023             :   }
    1024           0 :   UNREACHABLE();
    1025             : }
    1026             : 
    1027             : // static
    1028          16 : FieldAccess AccessBuilder::ForHashTableBaseNumberOfElements() {
    1029             :   FieldAccess access = {
    1030             :       kTaggedBase,
    1031             :       FixedArray::OffsetOfElementAt(HashTableBase::kNumberOfElementsIndex),
    1032             :       MaybeHandle<Name>(),
    1033             :       MaybeHandle<Map>(),
    1034             :       Type::SignedSmall(),
    1035             :       MachineType::TaggedSigned(),
    1036             :       kNoWriteBarrier};
    1037          16 :   return access;
    1038             : }
    1039             : 
    1040             : // static
    1041          16 : FieldAccess AccessBuilder::ForHashTableBaseNumberOfDeletedElement() {
    1042             :   FieldAccess access = {
    1043             :       kTaggedBase, FixedArray::OffsetOfElementAt(
    1044             :                        HashTableBase::kNumberOfDeletedElementsIndex),
    1045             :       MaybeHandle<Name>(), MaybeHandle<Map>(), Type::SignedSmall(),
    1046             :       MachineType::TaggedSigned(), kNoWriteBarrier};
    1047          16 :   return access;
    1048             : }
    1049             : 
    1050             : // static
    1051          16 : FieldAccess AccessBuilder::ForHashTableBaseCapacity() {
    1052             :   FieldAccess access = {
    1053             :       kTaggedBase,
    1054             :       FixedArray::OffsetOfElementAt(HashTableBase::kCapacityIndex),
    1055             :       MaybeHandle<Name>(),
    1056             :       MaybeHandle<Map>(),
    1057             :       Type::SignedSmall(),
    1058             :       MachineType::TaggedSigned(),
    1059             :       kNoWriteBarrier};
    1060          16 :   return access;
    1061             : }
    1062             : 
    1063             : // static
    1064         280 : FieldAccess AccessBuilder::ForOrderedHashMapOrSetNextTable() {
    1065             :   // TODO(turbofan): This will be redundant with the HashTableBase
    1066             :   // methods above once the hash table unification is done.
    1067             :   STATIC_ASSERT(OrderedHashMap::NextTableOffset() ==
    1068             :                 OrderedHashSet::NextTableOffset());
    1069             :   FieldAccess const access = {
    1070             :       kTaggedBase,         OrderedHashMap::NextTableOffset(),
    1071             :       MaybeHandle<Name>(), MaybeHandle<Map>(),
    1072             :       Type::Any(),         MachineType::AnyTagged(),
    1073             :       kFullWriteBarrier};
    1074         280 :   return access;
    1075             : }
    1076             : 
    1077             : // static
    1078         296 : FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfBuckets() {
    1079             :   // TODO(turbofan): This will be redundant with the HashTableBase
    1080             :   // methods above once the hash table unification is done.
    1081             :   STATIC_ASSERT(OrderedHashMap::NumberOfBucketsOffset() ==
    1082             :                 OrderedHashSet::NumberOfBucketsOffset());
    1083             :   FieldAccess const access = {kTaggedBase,
    1084             :                               OrderedHashMap::NumberOfBucketsOffset(),
    1085             :                               MaybeHandle<Name>(),
    1086             :                               MaybeHandle<Map>(),
    1087         296 :                               TypeCache::Get()->kFixedArrayLengthType,
    1088             :                               MachineType::TaggedSigned(),
    1089             :                               kNoWriteBarrier};
    1090         296 :   return access;
    1091             : }
    1092             : 
    1093             : // static
    1094         280 : FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfDeletedElements() {
    1095             :   // TODO(turbofan): This will be redundant with the HashTableBase
    1096             :   // methods above once the hash table unification is done.
    1097             :   STATIC_ASSERT(OrderedHashMap::NumberOfDeletedElementsOffset() ==
    1098             :                 OrderedHashSet::NumberOfDeletedElementsOffset());
    1099             :   FieldAccess const access = {kTaggedBase,
    1100             :                               OrderedHashMap::NumberOfDeletedElementsOffset(),
    1101             :                               MaybeHandle<Name>(),
    1102             :                               MaybeHandle<Map>(),
    1103         280 :                               TypeCache::Get()->kFixedArrayLengthType,
    1104             :                               MachineType::TaggedSigned(),
    1105             :                               kNoWriteBarrier};
    1106         280 :   return access;
    1107             : }
    1108             : 
    1109             : // static
    1110         378 : FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfElements() {
    1111             :   // TODO(turbofan): This will be redundant with the HashTableBase
    1112             :   // methods above once the hash table unification is done.
    1113             :   STATIC_ASSERT(OrderedHashMap::NumberOfElementsOffset() ==
    1114             :                 OrderedHashSet::NumberOfElementsOffset());
    1115             :   FieldAccess const access = {kTaggedBase,
    1116             :                               OrderedHashMap::NumberOfElementsOffset(),
    1117             :                               MaybeHandle<Name>(),
    1118             :                               MaybeHandle<Map>(),
    1119         378 :                               TypeCache::Get()->kFixedArrayLengthType,
    1120             :                               MachineType::TaggedSigned(),
    1121             :                               kNoWriteBarrier};
    1122         378 :   return access;
    1123             : }
    1124             : 
    1125             : // static
    1126          99 : ElementAccess AccessBuilder::ForOrderedHashMapEntryValue() {
    1127             :   ElementAccess const access = {kTaggedBase,
    1128             :                                 OrderedHashMap::HashTableStartOffset() +
    1129             :                                     OrderedHashMap::kValueOffset * kTaggedSize,
    1130             :                                 Type::Any(), MachineType::AnyTagged(),
    1131             :                                 kFullWriteBarrier};
    1132          99 :   return access;
    1133             : }
    1134             : 
    1135             : // static
    1136           0 : FieldAccess AccessBuilder::ForDictionaryMaxNumberKey() {
    1137             :   FieldAccess access = {
    1138             :       kTaggedBase,
    1139             :       FixedArray::OffsetOfElementAt(NumberDictionary::kMaxNumberKeyIndex),
    1140             :       MaybeHandle<Name>(),
    1141             :       MaybeHandle<Map>(),
    1142             :       Type::Any(),
    1143             :       MachineType::AnyTagged(),
    1144             :       kNoWriteBarrier};
    1145           0 :   return access;
    1146             : }
    1147             : 
    1148             : // static
    1149          16 : FieldAccess AccessBuilder::ForDictionaryNextEnumerationIndex() {
    1150             :   FieldAccess access = {
    1151             :       kTaggedBase,
    1152             :       FixedArray::OffsetOfElementAt(NameDictionary::kNextEnumerationIndexIndex),
    1153             :       MaybeHandle<Name>(),
    1154             :       MaybeHandle<Map>(),
    1155             :       Type::SignedSmall(),
    1156             :       MachineType::TaggedSigned(),
    1157             :       kNoWriteBarrier};
    1158          16 :   return access;
    1159             : }
    1160             : 
    1161             : // static
    1162          16 : FieldAccess AccessBuilder::ForDictionaryObjectHashIndex() {
    1163             :   FieldAccess access = {
    1164             :       kTaggedBase,
    1165             :       FixedArray::OffsetOfElementAt(NameDictionary::kObjectHashIndex),
    1166             :       MaybeHandle<Name>(),
    1167             :       MaybeHandle<Map>(),
    1168             :       Type::SignedSmall(),
    1169             :       MachineType::TaggedSigned(),
    1170             :       kNoWriteBarrier};
    1171          16 :   return access;
    1172             : }
    1173             : 
    1174             : }  // namespace compiler
    1175             : }  // namespace internal
    1176      120216 : }  // namespace v8

Generated by: LCOV version 1.10