LCOV - code coverage report
Current view: top level - src/compiler - access-builder.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 244 270 90.4 %
Date: 2019-01-20 Functions: 94 103 91.3 %

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

Generated by: LCOV version 1.10