29template <
bool is_element>
83template <
bool is_element>
96 holder = maybe_holder;
104template <
bool is_element>
137 DCHECK(!map->has_frozen_elements());
138 DCHECK(!map->has_sealed_elements());
154 if (own_property_lookup ||
156 static_cast<size_t>(
Cast<String>(*lookup_start_object)->length())) {
161 isolate->factory()->NewJSObject(constructor);
165 }
else if (own_property_lookup) {
173 if (
IsNull(*root, isolate)) {
174 isolate->PushStackTraceAndDie(
175 reinterpret_cast<void*
>((*lookup_start_object).ptr()));
191template <
bool is_element>
203 if (isolate->bootstrapper()->IsActive())
return;
204 if (!IsJSObject(*receiver_generic))
return;
208 if (*name == roots.constructor_string()) {
210 if (IsJSArray(*
receiver, isolate)) {
211 if (!Protectors::IsArraySpeciesLookupChainIntact(isolate))
return;
214 Protectors::InvalidateArraySpeciesLookupChain(isolate);
216 }
else if (IsJSPromise(*
receiver, isolate)) {
217 if (!Protectors::IsPromiseSpeciesLookupChainIntact(isolate))
return;
218 Protectors::InvalidatePromiseSpeciesLookupChain(isolate);
220 }
else if (IsJSRegExp(*
receiver, isolate)) {
221 if (!Protectors::IsRegExpSpeciesLookupChainIntact(isolate))
return;
222 Protectors::InvalidateRegExpSpeciesLookupChain(isolate);
224 }
else if (IsJSTypedArray(*
receiver, isolate)) {
225 if (!Protectors::IsTypedArraySpeciesLookupChainIntact(isolate))
return;
226 Protectors::InvalidateTypedArraySpeciesLookupChain(isolate);
229 if (
receiver->map(isolate)->is_prototype_map()) {
233 if (isolate->IsInCreationContext(
235 Context::INITIAL_ARRAY_PROTOTYPE_INDEX)) {
236 if (!Protectors::IsArraySpeciesLookupChainIntact(isolate))
return;
239 Protectors::InvalidateArraySpeciesLookupChain(isolate);
240 }
else if (IsJSPromisePrototype(*
receiver)) {
241 if (!Protectors::IsPromiseSpeciesLookupChainIntact(isolate))
return;
242 Protectors::InvalidatePromiseSpeciesLookupChain(isolate);
243 }
else if (IsJSRegExpPrototype(*
receiver)) {
244 if (!Protectors::IsRegExpSpeciesLookupChainIntact(isolate))
return;
245 Protectors::InvalidateRegExpSpeciesLookupChain(isolate);
246 }
else if (IsJSTypedArrayPrototype(*
receiver)) {
247 if (!Protectors::IsTypedArraySpeciesLookupChainIntact(isolate))
return;
248 Protectors::InvalidateTypedArraySpeciesLookupChain(isolate);
251 }
else if (*name == roots.next_string()) {
252 if (IsJSArrayIterator(*
receiver) || IsJSArrayIteratorPrototype(*
receiver)) {
255 if (!Protectors::IsArrayIteratorLookupChainIntact(isolate))
return;
256 Protectors::InvalidateArrayIteratorLookupChain(isolate);
257 }
else if (IsJSMapIterator(*
receiver) ||
258 IsJSMapIteratorPrototype(*
receiver)) {
259 if (!Protectors::IsMapIteratorLookupChainIntact(isolate))
return;
260 Protectors::InvalidateMapIteratorLookupChain(isolate);
261 }
else if (IsJSSetIterator(*
receiver) ||
262 IsJSSetIteratorPrototype(*
receiver)) {
263 if (!Protectors::IsSetIteratorLookupChainIntact(isolate))
return;
264 Protectors::InvalidateSetIteratorLookupChain(isolate);
265 }
else if (IsJSStringIterator(*
receiver) ||
266 IsJSStringIteratorPrototype(*
receiver)) {
269 if (!Protectors::IsStringIteratorLookupChainIntact(isolate))
return;
270 Protectors::InvalidateStringIteratorLookupChain(isolate);
272 }
else if (*name == roots.species_symbol()) {
275 if (IsJSArrayConstructor(*
receiver)) {
276 if (!Protectors::IsArraySpeciesLookupChainIntact(isolate))
return;
279 Protectors::InvalidateArraySpeciesLookupChain(isolate);
280 }
else if (IsJSPromiseConstructor(*
receiver)) {
281 if (!Protectors::IsPromiseSpeciesLookupChainIntact(isolate))
return;
282 Protectors::InvalidatePromiseSpeciesLookupChain(isolate);
283 }
else if (IsJSRegExpConstructor(*
receiver)) {
284 if (!Protectors::IsRegExpSpeciesLookupChainIntact(isolate))
return;
285 Protectors::InvalidateRegExpSpeciesLookupChain(isolate);
286 }
else if (IsTypedArrayConstructor(*
receiver)) {
287 if (!Protectors::IsTypedArraySpeciesLookupChainIntact(isolate))
return;
288 Protectors::InvalidateTypedArraySpeciesLookupChain(isolate);
290 }
else if (*name == roots.is_concat_spreadable_symbol()) {
291 if (!Protectors::IsIsConcatSpreadableLookupChainIntact(isolate))
return;
292 Protectors::InvalidateIsConcatSpreadableLookupChain(isolate);
293 }
else if (*name == roots.iterator_symbol()) {
294 if (IsJSArray(*
receiver, isolate)) {
295 if (!Protectors::IsArrayIteratorLookupChainIntact(isolate))
return;
296 Protectors::InvalidateArrayIteratorLookupChain(isolate);
298 IsJSSetIteratorPrototype(*
receiver) ||
300 if (Protectors::IsSetIteratorLookupChainIntact(isolate)) {
301 Protectors::InvalidateSetIteratorLookupChain(isolate);
303 }
else if (IsJSMapIterator(*
receiver) ||
304 IsJSMapIteratorPrototype(*
receiver)) {
305 if (Protectors::IsMapIteratorLookupChainIntact(isolate)) {
306 Protectors::InvalidateMapIteratorLookupChain(isolate);
308 }
else if (IsJSIteratorPrototype(*
receiver)) {
309 if (Protectors::IsMapIteratorLookupChainIntact(isolate)) {
310 Protectors::InvalidateMapIteratorLookupChain(isolate);
312 if (Protectors::IsSetIteratorLookupChainIntact(isolate)) {
313 Protectors::InvalidateSetIteratorLookupChain(isolate);
315 }
else if (isolate->IsInCreationContext(
316 *
receiver, Context::INITIAL_STRING_PROTOTYPE_INDEX)) {
321 if (!Protectors::IsStringIteratorLookupChainIntact(isolate))
return;
322 Protectors::InvalidateStringIteratorLookupChain(isolate);
324 }
else if (*name == roots.resolve_string()) {
325 if (!Protectors::IsPromiseResolveLookupChainIntact(isolate))
return;
328 if (IsJSPromiseConstructor(*
receiver)) {
329 Protectors::InvalidatePromiseResolveLookupChain(isolate);
331 }
else if (*name == roots.then_string()) {
332 if (!Protectors::IsPromiseThenLookupChainIntact(isolate))
return;
342 Protectors::InvalidatePromiseThenLookupChain(isolate);
344 }
else if (*name == roots.match_all_symbol() ||
345 *name == roots.replace_symbol() || *name == roots.split_symbol()) {
346 if (!Protectors::IsNumberStringNotRegexpLikeIntact(isolate))
return;
353 if (
receiver->map()->is_prototype_map() &&
355 Protectors::InvalidateNumberStringNotRegexpLike(isolate);
357 }
else if (*name == roots.to_primitive_symbol()) {
358 if (!Protectors::IsStringWrapperToPrimitiveIntact(isolate))
return;
359 if (isolate->IsInCreationContext(*
receiver,
360 Context::INITIAL_STRING_PROTOTYPE_INDEX) ||
361 isolate->IsInCreationContext(*
receiver,
362 Context::INITIAL_OBJECT_PROTOTYPE_INDEX) ||
364 Protectors::InvalidateStringWrapperToPrimitive(isolate);
366 }
else if (*name == roots.valueOf_string()) {
367 if (!Protectors::IsStringWrapperToPrimitiveIntact(isolate))
return;
368 if (isolate->IsInCreationContext(*
receiver,
369 Context::INITIAL_STRING_PROTOTYPE_INDEX) ||
371 Protectors::InvalidateStringWrapperToPrimitive(isolate);
373 }
else if (*name == roots.length_string()) {
374 if (!Protectors::IsTypedArrayLengthLookupChainIntact(isolate))
return;
376 isolate->IsInCreationContext(*
receiver,
377 Context::TYPED_ARRAY_PROTOTYPE_INDEX)) {
378 Protectors::InvalidateTypedArrayLengthLookupChain(isolate);
392 if (IsJSProxy(*holder,
isolate_))
return;
413 if (IsJSGlobalObject(*holder,
isolate_)) {
431 if (holder->HasFastProperties(
isolate_)) {
444 holder->property_dictionary_swiss();
452 if (old_map->is_prototype_map()) {
460 if (!holder->HasFastProperties(
isolate_))
return;
466 if (!new_map->is_dictionary_map()) {
489 DCHECK(!old_map->is_dictionary_map());
497 holder_obj->property_dictionary_swiss();
505 !new_map->IsPrototypeValidityCellValid());
525 DCHECK(!holder_obj->HasTypedArrayOrRabGsabTypedArrayElements(
isolate_));
529 holder_obj->GetElementsAccessor(
isolate_)->Reconfigure(
530 holder_obj, elements,
number_, value, attributes);
532 }
else if (holder_obj->HasFastProperties(
isolate_)) {
539 if (!new_map->is_dictionary_map()) {
551 if (holder_obj->map(
isolate_)->is_prototype_map() &&
563 if (IsJSGlobalObject(*holder_obj,
isolate_)) {
580 holder_obj->property_dictionary_swiss(
isolate_), isolate());
588 holder_obj->property_dictionary(
isolate_), isolate());
593 details = details.
set_index(enumeration_index);
605 holder->HeapObjectVerify(
isolate());
634 if (map->is_dictionary_map()) {
636 if (IsJSGlobalObjectMap(*map)) {
661 if (transition->is_dictionary_map()) {
662 DCHECK(!IsJSGlobalObjectMap(*transition));
685 DCHECK(!global->HasFastProperties());
701 bool simple_transition =
705 !transition->IsPrototypeValidityCellValid()) {
710 transition->set_prototype_validity_cell(*validity_cell,
kRelaxedStore);
717 if (simple_transition) {
718 number_ = transition->LastAdded();
734 receiver->SetProperties(*dictionary);
743 receiver->SetProperties(*dictionary);
746 dictionary->set_may_have_interesting_properties(
true);
770 ? RuntimeCallCounterId::kPrototypeObject_DeleteProperty
771 : RuntimeCallCounterId::kObject_DeleteProperty);
776 if (holder->HasFastProperties(
isolate_)) {
782 if (IsJSObject(*holder,
isolate_)) {
816 bool simple_transition =
820 if (simple_transition) {
821 number_ = new_map->LastAdded();
828 if (!new_map->is_dictionary_map())
return;
874 receiver->RequireSlowElements(*dictionary);
879 uint32_t length = parameter_map->length();
881 parameter_map->set_mapped_entries(
884 parameter_map->set_arguments(*dictionary);
886 receiver->set_elements(*dictionary);
899 "TransitionToAccessorPair");
970 if (IsUninitialized(value,
isolate())) {
983 holder->RawFastPropertyAt(
isolate_, field_index);
996 holder->RawFastPropertyAt(
isolate_, field_index);
997 return IsUninitialized(current_value,
isolate());
1010 if (IsUninitialized(value,
isolate())) {
1026 return IsUninitialized(current_value,
isolate());
1095 bool initializing_store) {
1107 }
else if (holder->HasFastProperties(
isolate_)) {
1121 }
else if (IsJSGlobalObject(*holder,
isolate_)) {
1130 DCHECK(cell->value() == *value ||
1131 (IsString(cell->value()) && IsString(*value) &&
1144 holder->property_dictionary_swiss(
isolate_);
1171 holder->FastPropertyAtPut(field_index, *value, tag);
1192 return direct_handle(holder->RawFastPropertyAtSwap(field_index, *value, tag),
1215 return direct_handle(holder->RawFastPropertyAtCompareAndSwap(
1216 field_index, *expected, *value, tag),
1220template <
bool is_element>
1224 !info->can_intercept_symbols()) {
1227 if (info->non_masking()) {
1263template <
bool is_element>
1264bool HasInterceptor(
Tagged<Map> map,
size_t index) {
1269 DCHECK(!map->has_typed_array_or_rab_gsab_typed_array_elements());
1270 return map->has_named_interceptor();
1272 return map->has_indexed_interceptor();
1274 return map->has_named_interceptor();
1280template <
bool is_element>
1286 if (IsJSProxyMap(map)) {
1289#if V8_ENABLE_WEBASSEMBLY
1292 if (map->is_access_check_needed()) {
1293 if (is_element || !
name_->IsPrivate() ||
name_->IsPrivateName())
1336template <
bool is_element>
1355 if (map->has_frozen_elements()) {
1357 }
else if (map->has_sealed_elements()) {
1360 }
else if (!map->is_dictionary_map()) {
1369 holder->property_dictionary_swiss(
isolate_);
1400 if (map->is_dictionary_map()) {
1403 holder->property_dictionary_swiss(isolate);
1413 InternalIndex entry = descriptors->SearchWithCache(isolate, *marker, map);
1429 if (!access_check_info.
is_null()) {
1432 DCHECK(!
holder_->map()->has_typed_array_or_rab_gsab_typed_array_elements());
1434 ? access_check_info->indexed_interceptor()
1435 : access_check_info->named_interceptor();
1453 return IsAccessorPair(*accessor_pair,
isolate_) &&
1469 std::optional<Tagged<Name>> maybe_name =
1471 if (!maybe_name.has_value())
return false;
1473 if (IsJSFunction(
getter)) {
1479 if (it.state() !=
DATA)
return false;
1494 ElementsKind elements_kind,
int array_length,
size_t index) {
1514 if (index >=
static_cast<size_t>(array_length))
return {};
1515 if (index >=
static_cast<size_t>(array_elements->length()))
return {};
1561 if (!IsFixedArray(elements))
return kGaveUp;
1563 if (index >=
static_cast<uint32_t
>(elements_fixed_array->length())) {
1574 if (!IsNumberDictionary(elements))
return kGaveUp;
1588 reinterpret_cast<Tagged<String>*
>(result_out), isolate, local_isolate,
1589 wrapped_string, index);
1615 const uint32_t length =
static_cast<uint32_t
>(
string->length());
1616 if (index >= length)
return kGaveUp;
1621 charcode =
string->Get(
static_cast<int>(index), access_guard);
1627 isolate->factory()->single_character_string_table()->get(charcode,
1637std::optional<Tagged<PropertyCell>>
1644 if (holder_map->is_access_check_needed())
return {};
1645 if (holder_map->has_named_interceptor())
return {};
1648 std::optional<Tagged<PropertyCell>> maybe_cell =
1649 dict->TryFindPropertyCellForConcurrentLookupIterator(isolate, name,
1651 if (!maybe_cell.has_value())
return {};
1656 if (!IsAccessorPair(maybe_accessor_pair))
return {};
1658 std::optional<Tagged<Name>> maybe_cached_property_name =
1662 if (!maybe_cached_property_name.has_value())
return {};
1664 maybe_cell = dict->TryFindPropertyCellForConcurrentLookupIterator(
1665 isolate,
direct_handle(*maybe_cached_property_name, local_isolate),
1667 if (!maybe_cell.has_value())
return {};
1668 cell = maybe_cell.value();
1673 DCHECK(maybe_cell.has_value());
static const uint16_t kMaxChar
@ kArrayInstanceConstructorModified
@ kArrayPrototypeConstructorModified
static Tagged< AccessCheckInfo > Get(Isolate *isolate, DirectHandle< JSObject > receiver)
static NEVER_READ_ONLY_SPACE DirectHandle< AccessorPair > Copy(Isolate *isolate, DirectHandle< AccessorPair > pair)
static V8_EXPORT_PRIVATE std::optional< Tagged< Object > > TryGetOwnCowElement(Isolate *isolate, Tagged< FixedArray > array_elements, ElementsKind elements_kind, int array_length, size_t index)
static V8_EXPORT_PRIVATE Result TryGetOwnChar(Tagged< String > *result_out, Isolate *isolate, LocalIsolate *local_isolate, Tagged< String > string, size_t index)
static V8_EXPORT_PRIVATE Result TryGetOwnConstantElement(Tagged< Object > *result_out, Isolate *isolate, LocalIsolate *local_isolate, Tagged< JSObject > holder, Tagged< FixedArrayBase > elements, ElementsKind elements_kind, size_t index)
static V8_EXPORT_PRIVATE std::optional< Tagged< PropertyCell > > TryGetPropertyCell(Isolate *isolate, LocalIsolate *local_isolate, DirectHandle< JSGlobalObject > holder, DirectHandle< Name > name)
virtual Handle< Object > Get(Isolate *isolate, DirectHandle< JSObject > holder, InternalIndex entry)=0
virtual Handle< Object > CompareAndSwapAtomic(Isolate *isolate, DirectHandle< JSObject > holder, InternalIndex entry, Tagged< Object > expected, Tagged< Object > value, SeqCstAccessTag tag)=0
virtual InternalIndex GetEntryForIndex(Isolate *isolate, Tagged< JSObject > holder, Tagged< FixedArrayBase > backing_store, size_t index)=0
virtual Handle< Object > SwapAtomic(Isolate *isolate, DirectHandle< JSObject > holder, InternalIndex entry, Tagged< Object > value, SeqCstAccessTag tag)=0
virtual void Delete(DirectHandle< JSObject > holder, InternalIndex entry)=0
virtual Handle< Object > GetAtomic(Isolate *isolate, DirectHandle< JSObject > holder, InternalIndex entry, SeqCstAccessTag tag)=0
virtual PropertyDetails GetDetails(Tagged< JSObject > holder, InternalIndex entry)=0
virtual void SetAtomic(DirectHandle< JSObject > holder, InternalIndex entry, Tagged< Object > value, SeqCstAccessTag tag)=0
virtual void Set(DirectHandle< JSObject > holder, InternalIndex entry, Tagged< Object > value)=0
Handle< AccessorPair > NewAccessorPair()
Handle< PropertyCell > NewPropertyCell(DirectHandle< Name > name, PropertyDetails details, DirectHandle< Object > value, AllocationType allocation=AllocationType::kOld)
static FieldIndex ForDetails(Tagged< Map > map, PropertyDetails details)
static FieldIndex ForDescriptor(Tagged< Map > map, InternalIndex descriptor_index)
static std::optional< Tagged< Name > > TryGetCachedPropertyName(Isolate *isolate, Tagged< Object > getter)
V8_INLINE bool is_identical_to(const HandleBase &that) const
bool is_not_found() const
static InternalIndex NotFound()
constexpr int as_int() const
uint32_t as_uint32() const
void CountUsage(v8::Isolate::UseCounterFeature feature)
Handle< NativeContext > native_context()
v8::internal::Factory * factory()
bool MayAccess(DirectHandle< NativeContext > accessing_context, DirectHandle< JSObject > receiver)
static V8_EXPORT_PRIVATE DirectHandle< NumberDictionary > NormalizeElements(DirectHandle< JSObject > object)
static Handle< JSAny > FastPropertyAt(Isolate *isolate, DirectHandle< JSObject > object, Representation representation, FieldIndex index)
static Tagged< Map > InvalidatePrototypeChains(Tagged< Map > map)
static constexpr uint32_t kMaxElementIndex
static void SetNormalizedProperty(DirectHandle< JSObject > object, DirectHandle< Name > name, DirectHandle< Object > value, PropertyDetails details)
static V8_EXPORT_PRIVATE void NormalizeProperties(Isolate *isolate, DirectHandle< JSObject > object, PropertyNormalizationMode mode, int expected_additional_properties, bool use_cache, const char *reason)
static V8_EXPORT_PRIVATE void TransitionElementsKind(DirectHandle< JSObject > object, ElementsKind to_kind)
static V8_EXPORT_PRIVATE void MigrateToMap(Isolate *isolate, DirectHandle< JSObject > object, DirectHandle< Map > new_map, int expected_additional_properties=0)
static void ReoptimizeIfPrototype(DirectHandle< JSObject > object)
static void EnsureWritableFastElements(DirectHandle< JSObject > object)
static void DeleteNormalizedProperty(DirectHandle< JSReceiver > object, InternalIndex entry)
bool is_js_array_element(bool is_element) const
const Configuration configuration_
void WriteDataValue(DirectHandle< Object > value, bool initializing_store)
PropertyDetails property_details() const
static bool HasInternalMarkerProperty(Isolate *isolate, Tagged< JSReceiver > object, DirectHandle< Symbol > marker)
DirectHandle< UnionOf< Map, PropertyCell > > transition_
DirectHandle< Object > FetchValue(AllocationPolicy allocation_policy=AllocationPolicy::kAllocationAllowed) const
uint32_t array_index() const
bool check_interceptor() const
int GetFieldDescriptorIndex() const
int GetAccessorIndex() const
bool CanStayConst(Tagged< Object > value) const
DirectHandle< InterceptorInfo > GetInterceptor() const
V8_WARN_UNUSED_RESULT Tagged< JSReceiver > NextHolder(Tagged< Map > map)
Isolate * isolate() const
void RestartLookupForNonMaskingInterceptors()
FieldIndex GetFieldIndex() const
InternalIndex dictionary_entry() const
InterceptorState interceptor_state_
DirectHandle< T > GetStoreTarget() const
DirectHandle< Object > GetAccessors() const
DirectHandle< Name > name_
DirectHandle< JSReceiver > holder_
DirectHandle< Object > CompareAndSwapDataValue(DirectHandle< Object > expected, DirectHandle< Object > value, SeqCstAccessTag tag)
DirectHandle< InterceptorInfo > GetInterceptorForFailedAccessCheck() const
static void InternalUpdateProtector(Isolate *isolate, DirectHandle< JSAny > receiver, DirectHandle< Name > name)
bool TryLookupCachedProperty()
bool SkipInterceptor(Tagged< JSObject > holder)
State LookupInSpecialHolder(Tagged< Map > map, Tagged< JSReceiver > holder)
bool LookupCachedProperty(DirectHandle< AccessorPair > accessor)
bool DictCanStayConst(Tagged< Object > value) const
static MaybeDirectHandle< JSReceiver > GetRootForNonJSReceiver(Isolate *isolate, DirectHandle< JSPrimitive > lookup_start_object, size_t index, Configuration configuration)
DirectHandle< PropertyCell > transition_cell() const
void PrepareTransitionToDataProperty(DirectHandle< JSReceiver > receiver, DirectHandle< Object > value, PropertyAttributes attributes, StoreOrigin store_origin)
const DirectHandle< JSAny > receiver_
PropertyDetails property_details_
void PrepareForDataProperty(DirectHandle< Object > value)
void NextInternal(Tagged< Map > map, Tagged< JSReceiver > holder)
DirectHandle< T > GetHolder() const
Handle< Object > GetDataValue(AllocationPolicy allocation_policy=AllocationPolicy::kAllocationAllowed) const
State LookupInHolder(Tagged< Map > map, Tagged< JSReceiver > holder)
DirectHandle< JSAny > lookup_start_object() const
V8_EXPORT_PRIVATE void Start()
DirectHandle< Object > SwapDataValue(DirectHandle< Object > value, SeqCstAccessTag tag)
State LookupInRegularHolder(Tagged< Map > map, Tagged< JSReceiver > holder)
bool HolderIsReceiver() const
void ReconfigureDataProperty(DirectHandle< Object > value, PropertyAttributes attributes)
static MaybeDirectHandle< JSReceiver > GetRoot(Isolate *isolate, DirectHandle< JSAny > lookup_start_object, size_t index, Configuration configuration)
Factory * factory() const
InternalIndex descriptor_number() const
@ TYPED_ARRAY_INDEX_NOT_FOUND
void ApplyTransitionToDataProperty(DirectHandle< JSReceiver > receiver)
bool HolderIsReceiverOrHiddenPrototype() const
void TransitionToAccessorPair(DirectHandle< Object > pair, PropertyAttributes attributes)
DirectHandle< Map > GetReceiverMap() const
void ReloadPropertyInformation()
DirectHandle< Name > name() const
Representation representation() const
void RestartInternal(InterceptorState interceptor_state)
bool IsPrivateName() const
PropertyConstness constness() const
const DirectHandle< JSAny > lookup_start_object_
DirectHandle< Map > transition_map() const
bool check_prototype_chain() const
DirectHandle< PropertyCell > GetPropertyCell() const
void TransitionToAccessorProperty(DirectHandle< Object > getter, DirectHandle< Object > setter, PropertyAttributes attributes)
void RecheckTypedArrayBounds()
static Handle< Map > ReconfigureExistingProperty(Isolate *isolate, DirectHandle< Map > map, InternalIndex descriptor, PropertyKind kind, PropertyAttributes attributes, PropertyConstness constness)
static Handle< UnionOf< Smi, Cell > > GetOrCreatePrototypeChainValidityCell(DirectHandle< Map > map, Isolate *isolate)
static V8_EXPORT_PRIVATE DirectHandle< Map > TransitionToDataProperty(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, DirectHandle< Object > value, PropertyAttributes attributes, PropertyConstness constness, StoreOrigin store_origin)
static V8_EXPORT_PRIVATE DirectHandle< Map > PrepareForDataProperty(Isolate *isolate, DirectHandle< Map > old_map, InternalIndex descriptor_number, PropertyConstness constness, DirectHandle< Object > value)
static V8_EXPORT_PRIVATE DirectHandle< Map > Update(Isolate *isolate, DirectHandle< Map > map)
static V8_EXPORT_PRIVATE DirectHandle< Map > TransitionToAccessorProperty(Isolate *isolate, DirectHandle< Map > map, DirectHandle< Name > name, InternalIndex descriptor, DirectHandle< Object > getter, DirectHandle< Object > setter, PropertyAttributes attributes)
V8_WARN_UNUSED_RESULT V8_INLINE bool ToHandle(DirectHandle< S > *out) const
static V8_WARN_UNUSED_RESULT HandleType< NumberDictionary > Set(Isolate *isolate, HandleType< NumberDictionary > dictionary, uint32_t key, DirectHandle< Object > value, DirectHandle< JSObject > dictionary_holder=DirectHandle< JSObject >::null(), PropertyDetails details=PropertyDetails::Empty())
static Tagged< Map > GetPrototypeChainRootMap(Tagged< Object > obj, Isolate *isolate)
static ElementsKind OptimalElementsKind(Tagged< Object > obj, PtrComprCageBase cage_base)
static PropertyCellType InitialType(Isolate *isolate, Tagged< Object > value)
static Handle< PropertyCell > PrepareForAndSetValue(Isolate *isolate, DirectHandle< GlobalDictionary > dictionary, InternalIndex entry, DirectHandle< Object > value, PropertyDetails details)
PropertyAttributes attributes() const
PropertyDetails CopyWithConstness(PropertyConstness constness) const
PropertyLocation location() const
Representation representation() const
static constexpr PropertyConstness kConstIfDictConstnessTracking
int dictionary_index() const
PropertyKind kind() const
PropertyDetails set_index(int index) const
static constexpr PropertyDetails Empty(PropertyCellType cell_type=PropertyCellType::kNoCell)
PropertyConstness constness() const
PropertyDetails CopyAddAttributes(PropertyAttributes new_attributes) const
Tagged< Smi > AsSmi() const
constexpr bool IsDouble() const
static HandleType< SwissNameDictionary > Add(IsolateT *isolate, HandleType< SwissNameDictionary > table, DirectHandle< Name > key, DirectHandle< Object > value, PropertyDetails details, InternalIndex *entry_out=nullptr)
V8_INLINE constexpr bool is_null() const
#define V8_ENABLE_SWISS_NAME_DICTIONARY_BOOL
#define V8_DICT_PROPERTY_CONST_TRACKING_BOOL
ZoneVector< RpoNumber > & result
V8_INLINE constexpr bool IsThinString(InstanceType instance_type)
V8_INLINE constexpr bool IsInternalizedString(InstanceType instance_type)
bool IsNone(Tagged< FieldType > obj)
constexpr bool IsHoleyElementsKind(ElementsKind kind)
bool IsNumber(Tagged< Object > obj)
Map::Bits1::HasPrototypeSlotBit Map::Bits1::HasNamedInterceptorBit Map::Bits1::IsUndetectableBit Map::Bits1::IsConstructorBit Map::Bits2::IsImmutablePrototypeBit Map::Bits3::IsDeprecatedBit is_prototype_map
bool IsSealedElementsKind(ElementsKind kind)
bool IsSpecialIndex(Tagged< String > string)
V8_INLINE IndirectHandle< T > indirect_handle(DirectHandle< T > handle)
bool IsSpecialReceiverMap(Tagged< Map > map)
constexpr uint64_t kHoleNanInt64
bool IsNonextensibleElementsKind(ElementsKind kind)
V8_INLINE DirectHandle< T > direct_handle(Tagged< T > object, Isolate *isolate)
bool IsHoleyElementsKindForRead(ElementsKind kind)
bool IsSmiOrObjectElementsKind(ElementsKind kind)
ElementsKind GetHoleyElementsKind(ElementsKind packed_kind)
bool IsShared(Tagged< Object > obj)
bool IsFrozenElementsKind(ElementsKind kind)
bool IsFastElementsKind(ElementsKind kind)
bool IsDictionaryElementsKind(ElementsKind kind)
V8_EXPORT_PRIVATE FlagValues v8_flags
V8_INLINE bool IsWasmObject(T obj, Isolate *=nullptr)
bool IsStringWrapperElementsKind(ElementsKind kind)
ElementsKind GetMoreGeneralElementsKind(ElementsKind from_kind, ElementsKind to_kind)
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset IsNull(value)||IsJSProxy(value)||IsWasmObject(value)||(IsJSObject(value) &&(HeapLayout
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset prototype
PropertyNormalizationMode
@ KEEP_INOBJECT_PROPERTIES
@ CLEAR_INOBJECT_PROPERTIES
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
static constexpr ReleaseStoreTag kReleaseStore
static constexpr SeqCstAccessTag kSeqCstAccess
static constexpr RelaxedLoadTag kRelaxedLoad
static constexpr RelaxedStoreTag kRelaxedStore
static constexpr AcquireLoadTag kAcquireLoad
#define DCHECK_LE(v1, v2)
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK_NE(v1, v2)
#define DCHECK_GE(v1, v2)
#define CHECK_EQ(lhs, rhs)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
#define DCHECK_GT(v1, v2)
#define V8_UNLIKELY(condition)