diff options
Diffstat (limited to 'deps/v8/src/compiler/access-builder.cc')
-rw-r--r-- | deps/v8/src/compiler/access-builder.cc | 66 |
1 files changed, 62 insertions, 4 deletions
diff --git a/deps/v8/src/compiler/access-builder.cc b/deps/v8/src/compiler/access-builder.cc index 3156b22a1e..376170cce7 100644 --- a/deps/v8/src/compiler/access-builder.cc +++ b/deps/v8/src/compiler/access-builder.cc @@ -156,6 +156,35 @@ FieldAccess AccessBuilder::ForJSCollectionIteratorIndex() { } // static +FieldAccess AccessBuilder::ForJSExternalObjectValue() { + FieldAccess access = { + kTaggedBase, + JSExternalObject::kValueOffset, + MaybeHandle<Name>(), + MaybeHandle<Map>(), + Type::ExternalPointer(), + MachineType::Pointer(), + kNoWriteBarrier, + "JSExternalObjectValue", + ConstFieldInfo::None(), + false, + kExternalObjectValueTag, + }; + return access; +} + +#ifdef V8_ENABLE_SANDBOX +// static +FieldAccess AccessBuilder::ForJSExternalObjectPointerHandle() { + FieldAccess access = { + kTaggedBase, JSExternalObject::kValueOffset, MaybeHandle<Name>(), + MaybeHandle<Map>(), TypeCache::Get()->kUint32, MachineType::Uint32(), + kNoWriteBarrier, "JSExternalObjectPointerHandle"}; + return access; +} +#endif + +// static FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { FieldAccess access = { kTaggedBase, JSFunction::kPrototypeOrInitialMapOffset, @@ -740,6 +769,15 @@ FieldAccess AccessBuilder::ForNameRawHashField() { } // static +FieldAccess AccessBuilder::ForFreeSpaceSize() { + FieldAccess access = {kTaggedBase, FreeSpace::kSizeOffset, + MaybeHandle<Name>(), MaybeHandle<Map>(), + Type::SignedSmall(), MachineType::TaggedSigned(), + kNoWriteBarrier}; + return access; +} + +// static FieldAccess AccessBuilder::ForStringLength() { FieldAccess access = {kTaggedBase, String::kLengthOffset, @@ -1135,10 +1173,16 @@ ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type, MachineType::Float64(), kNoWriteBarrier}; return access; } - case kExternalBigInt64Array: - case kExternalBigUint64Array: - // TODO(neis/jkummerow): Define appropriate types. - UNIMPLEMENTED(); + case kExternalBigInt64Array: { + ElementAccess access = {taggedness, header_size, Type::SignedBigInt64(), + MachineType::Int64(), kNoWriteBarrier}; + return access; + } + case kExternalBigUint64Array: { + ElementAccess access = {taggedness, header_size, Type::UnsignedBigInt64(), + MachineType::Uint64(), kNoWriteBarrier}; + return access; + } } UNREACHABLE(); } @@ -1299,6 +1343,20 @@ FieldAccess AccessBuilder::ForDictionaryObjectHashIndex() { } // static +FieldAccess AccessBuilder::ForNameDictionaryFlagsIndex() { + FieldAccess access = { + kTaggedBase, + FixedArray::OffsetOfElementAt(NameDictionary::kFlagsIndex), + MaybeHandle<Name>(), + MaybeHandle<Map>(), + Type::SignedSmall(), + MachineType::TaggedSigned(), + kNoWriteBarrier, + "NameDictionaryFlagsIndex"}; + return access; +} + +// static FieldAccess AccessBuilder::ForFeedbackCellInterruptBudget() { FieldAccess access = {kTaggedBase, FeedbackCell::kInterruptBudgetOffset, |