98 TNode<HeapObject> maybe_vector = {});
101 TNode<Map> receiver_map,
102 TNode<Uint16T> instance_type,
103 TNode<IntPtrT> index, TNode<Object> value,
104 TNode<Context> context, Label* slow);
109 TNode<Map> receiver_map,
110 TNode<Uint16T> instance_type,
111 const StoreICParameters* p,
112 ExitPoint* exit_point, Label* slow,
113 Maybe<LanguageMode> maybe_language_mode,
128 Label* only_fast_writable_elements);
208 assembler.KeyedStoreMegamorphic();
214 assembler.KeyedStoreGeneric();
221 assembler.KeyedStoreGeneric();
227 assembler.StoreIC_NoFeedback();
236 assembler.StoreIC_NoFeedback();
245 assembler.StoreProperty(context,
receiver, is_simple_receiver, name, value,
255 assembler.StoreProperty(context,
receiver,
key, value, language_mode);
269 Label* only_fast_writable_elements) {
271 var_map = receiver_map;
272 Label loop_body(
this, &var_map);
281 var_map = prototype_map;
284 maybe_read_only_elements);
289 Goto(maybe_read_only_elements);
303 Label perform_transition(
this), check_holey_map(
this);
309 var_target_map =
CAST(
311 Goto(&perform_transition);
315 BIND(&check_holey_map);
320 var_target_map =
CAST(LoadContextElement(
322 Goto(&perform_transition);
326 BIND(&perform_transition);
357 Label already_holey(
this);
363 holey_kind, &already_holey, bailout, bailout);
364 BIND(&already_holey);
373 Label already_holey(
this), check_other_kind(
this);
382 holey_kind, &already_holey, &check_other_kind,
384 BIND(&check_other_kind);
386 packed_kind_2, holey_kind_2, &already_holey,
388 BIND(&already_holey);
432 Label check_double_elements(
this), check_cow_elements(
this);
434 GotoIf(IsNotFixedArrayMap(elements_map), &check_double_elements);
446 Label hole_check_passed(
this);
450 GotoIf(IsNotTheHole(element), &hole_check_passed);
454 BIND(&hole_check_passed);
461 Label non_smi_value(
this);
472 BIND(&non_smi_value);
477 Label must_transition(
this);
480 GotoIf(Int32LessThanOrEqual(elements_kind,
490 BIND(&must_transition);
495 Label transition_to_double(
this), transition_to_object(
this);
497#ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
498 GotoIf(IsHeapNumber(
CAST(value)), &transition_to_double);
499 GotoIfNot(IsUndefined(value), &transition_to_object);
511 Branch(IsHeapNumber(
CAST(value)), &transition_to_double,
512 &transition_to_object);
515 BIND(&transition_to_double);
532 double_offset, double_value);
536 BIND(&transition_to_object);
553 BIND(&check_double_elements);
554 GotoIf(IsNotFixedDoubleArrayMap(elements_map), &check_cow_elements);
563 Label hole_check_passed(
this);
567 Label found_hole(
this);
570 Goto(&hole_check_passed);
575 BIND(&hole_check_passed);
581 Label non_number_value(
this);
582 Label undefined_value(
this);
584#ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
590 double_value = Float64SilenceNaN(double_value);
601#ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
602 BIND(&undefined_value);
616 BIND(&non_number_value);
631 Store(fast_elements, fast_offset, value);
636 BIND(&check_cow_elements);
647 Label if_fast(
this), if_in_bounds(
this), if_increment_length_by_one(
this),
648 if_bump_length_with_gap(
this), if_grow(
this), if_nonfast(
this),
649 if_typed_array(
this), if_dictionary(
this), if_shared_array(
this);
654 Label if_array(
this);
658 Branch(UintPtrLessThan(index, capacity), &if_in_bounds, &if_grow);
664 GotoIf(UintPtrLessThan(index, length), &if_in_bounds);
666 GotoIf(UintPtrGreaterThanOrEqual(index, capacity), &if_grow);
668 &if_bump_length_with_gap);
677 BIND(&if_increment_length_by_one);
680 index, value, context, slow,
684 BIND(&if_bump_length_with_gap);
707 GotoIf(Int32GreaterThanOrEqual(
718 BIND(&if_dictionary);
725 BIND(&if_typed_array);
733 BIND(&if_shared_array);
736 GotoIf(UintPtrGreaterThanOrEqual(index, length), slow);
746 Label ok_to_write(
this);
750 var_holder_map =
LoadMap(var_holder.value());
752 Label loop(
this, {&var_holder, &var_holder_map});
758 TNode<Map> holder_map = var_holder_map.value();
760 Label next_proto(
this);
762 Label found(
this), found_fast(
this), found_dict(
this), found_global(
this);
766 &found_dict, &found_global, &var_meta_storage,
767 &var_entry, &next_proto, bailout);
779 details, var_accessor_pair);
780 *var_accessor_holder = holder;
791 if (accessor !=
nullptr) {
794 *var_accessor_holder = holder;
811 property_cell, PropertyCell::kPropertyDetailsRawOffset));
814 if (accessor !=
nullptr) {
816 *var_accessor_pair =
value;
817 *var_accessor_holder = holder;
831 var_holder_map =
LoadMap(proto);
840 Label simple_transition(
this), transition_array(
this),
841 found_handler_candidate(
this);
852 &transition_array, &var_transition_map_or_array);
854 BIND(&simple_transition);
856 var_transition_map =
CAST(var_transition_map_or_array.value());
857 Goto(&found_handler_candidate);
860 BIND(&transition_array);
863 LoadMap(
CAST(var_transition_map_or_array.value()));
864 GotoIfNot(IsTransitionArrayMap(maybe_handler_map), slow);
867 Label if_found_candidate(
this);
869 CAST(var_transition_map_or_array.value());
873 BIND(&if_found_candidate);
887 static_assert(
NONE == 0);
893 var_name_index.value(), kKeyToTargetOffset)));
894 Goto(&found_handler_candidate);
898 BIND(&found_handler_candidate);
899 return var_transition_map.value();
907 CSA_DCHECK(
this, IsSimpleObjectMap(receiver_map));
912 Label fast_properties(
this), dictionary_properties(
this), accessor(
this),
913 readonly(
this), try_stub_cache(
this);
917 &dictionary_properties, &fast_properties);
919 BIND(&fast_properties);
921 Comment(
"fast property store");
923 Label descriptor_found(
this), lookup_transition(
this);
927 &var_name_index, &lookup_transition);
932 BIND(&descriptor_found);
936 Label data_property(
this);
945 name_index, details, &var_accessor_pair);
953 BIND(&data_property);
960 name_index, details, p->
value(),
967 descriptors, name_index, details,
975 BIND(&lookup_transition);
981 Label* if_not_found =
985 receiver_map, name, if_not_found);
997 BIND(&dictionary_properties);
999 Comment(
"dictionary property store");
1004 Label dictionary_found(
this, &var_name_index),
1005 not_found(
this, &var_name_index);
1015 BIND(&dictionary_found);
1017 Label check_const(
this), overwrite(
this), done(
this);
1052 properties, var_name_index.value(), p->
value());
1067 Label extensible(
this), is_private_symbol(
this);
1072 BIND(&is_private_symbol);
1084 receiver_map, name, &accessor, &var_accessor_pair,
1085 &var_accessor_holder,
1088 Label add_dictionary_property_slow(
this);
1092 &add_dictionary_property_slow,
1093 var_name_index.value());
1096 BIND(&add_dictionary_property_slow);
1106 Label not_callable(
this);
1108 GotoIf(IsAccessorInfo(accessor_pair), slow);
1109 CSA_DCHECK(
this, IsAccessorPair(accessor_pair));
1114 GotoIf(IsFunctionTemplateInfoMap(setter_map), slow);
1120 BIND(¬_callable);
1123 if (maybe_language_mode.
To(&language_mode)) {
1126 Runtime::kThrowTypeError, p->
context(),
1127 SmiConstant(MessageTemplate::kNoSetterInCallback), name,
1128 var_accessor_holder.value());
1134 SmiConstant(MessageTemplate::kNoSetterInCallback), name,
1135 var_accessor_holder.value());
1146 if (maybe_language_mode.
To(&language_mode)) {
1156 SmiConstant(MessageTemplate::kStrictReadOnlyProperty), name,
1165 BIND(&try_stub_cache);
1172 Label found_handler(
this, &var_handler), stub_cache_miss(
this);
1175 &var_handler, &stub_cache_miss);
1177 BIND(&found_handler);
1179 Comment(
"KeyedStoreGeneric found handler");
1183 BIND(&stub_cache_miss);
1185 Comment(
"KeyedStoreGeneric_miss");
1201 Label if_index(
this, &var_index), if_unique_name(
this),
1202 not_internalized(
this), slow(
this);
1212 TryToName(
key, &if_index, &var_index, &if_unique_name, &var_unique, &slow,
1219 var_index.value(), value, context, &slow);
1222 BIND(&if_unique_name);
1224 Comment(
"key is unique name");
1226 std::nullopt, slot, maybe_vector,
1230 &direct_exit, &slow, language_mode,
1234 BIND(¬_internalized);
1236 if (
v8_flags.internalize_on_the_fly) {
1238 &var_unique, &slow, &slow);
1249 Comment(
"KeyedStoreGeneric_slow");
1323 UndefinedConstant(),
1334 : Runtime::kStoreIC_Miss;
1338 receiver_maybe_smi, name);
1371 unique_name, value, flags, p.vector(), slot);
#define CSA_DCHECK(csa,...)
V8_WARN_UNUSED_RESULT V8_INLINE bool To(T *out) const
void UpdateMayHaveInterestingProperty(TNode< PropertyDictionary > dict, TNode< Name > name)
void InvalidateValidityCellIfPrototype(TNode< Map > map, std::optional< TNode< Uint32T > > bitfield3=std::nullopt)
void JumpIfDataProperty(TNode< Uint32T > details, Label *writable, Label *readonly)
void HandleStoreICTransitionMapHandlerCase(const StoreICParameters *p, TNode< Map > transition_map, Label *miss, StoreTransitionMapFlags flags)
TNode< BoolT > IsPropertyDetailsConst(TNode< Uint32T > details)
@ kValidateTransitionHandler
@ kCheckPrototypeValidity
void OverwriteExistingFastDataProperty(TNode< HeapObject > object, TNode< Map > object_map, TNode< DescriptorArray > descriptors, TNode< IntPtrT > descriptor_name_index, TNode< Uint32T > details, TNode< Object > value, Label *slow, bool do_transitioning_store)
void HandleStoreICHandlerCase(const StoreICParameters *p, TNode< MaybeObject > handler, Label *miss, ICMode ic_mode, ElementSupport support_elements=kOnlyProperties)
void TryProbeStubCache(StubCache *stub_cache, TNode< JSAny > lookup_start_object, TNode< Map > lookup_start_object_map, TNode< Name > name, Label *if_handler, TVariable< MaybeObject > *var_handler, Label *if_miss)
void StoreJSSharedStructField(TNode< Context > context, TNode< HeapObject > shared_struct, TNode< Map > shared_struct_map, TNode< DescriptorArray > descriptors, TNode< IntPtrT > descriptor_name_index, TNode< Uint32T > details, TNode< Object > value)
static bool ShouldTrack(ElementsKind boilerplate_elements_kind)
TNode< BoolT > IsJSArrayInstanceType(TNode< Int32T > instance_type)
TNode< IntPtrT > LoadAndUntagFixedArrayBaseLength(TNode< FixedArrayBase > array)
TNode< MaybeObject > LoadMaybeWeakObjectField(TNode< HeapObject > object, int offset)
TNode< BoolT > IsJSTypedArrayMap(TNode< Map > map)
TNode< BoolT > IsCallableMap(TNode< Map > map)
void NameDictionaryLookup(TNode< Dictionary > dictionary, TNode< Name > unique_name, Label *if_found, TVariable< IntPtrT > *var_name_index, Label *if_not_found, LookupMode mode=kFindExisting)
TNode< FixedArrayBase > GrowElementsCapacity(TNode< HeapObject > object, TNode< FixedArrayBase > elements, ElementsKind from_kind, ElementsKind to_kind, TNode< TIndex > capacity, TNode< TIndex > new_capacity, Label *bailout)
TNode< BoolT > IsJSApiObjectInstanceType(TNode< Int32T > instance_type)
TNode< Float64T > TryTaggedToFloat64(TNode< Object > value, Label *if_valueisnotnumber)
TNode< Uint32T > LoadDetailsByKeyIndex(TNode< ContainerType > container, TNode< IntPtrT > key_index)
TNode< BoolT > IsPrivateName(TNode< Symbol > symbol)
TNode< BoolT > IsFastElementsKind(TNode< Int32T > elements_kind)
TNode< DescriptorArray > LoadMapDescriptors(TNode< Map > map)
TNode< HeapObject > LoadSlowProperties(TNode< JSReceiver > object)
TNode< BoolT > IsFastOrNonExtensibleOrSealedElementsKind(TNode< Int32T > elements_kind)
void ThrowTypeError(TNode< Context > context, MessageTemplate message, char const *arg0=nullptr, char const *arg1=nullptr)
TNode< Smi > SmiTag(TNode< IntPtrT > value)
TNode< BoolT > TaggedEqual(TNode< AnyTaggedT > a, TNode< AnyTaggedT > b)
TNode< FixedArrayBase > LoadElements(TNode< JSObject > object)
TNode< T > LoadObjectField(TNode< HeapObject > object, int offset)
TNode< BoolT > TaggedNotEqual(TNode< AnyTaggedT > a, TNode< AnyTaggedT > b)
TNode< Uint32T > LoadMapBitField3(TNode< Map > map)
void TrapAllocationMemento(TNode< JSObject > object, Label *memento_found)
TNode< BoolT > IsDoubleElementsKind(TNode< Int32T > elements_kind)
void TryToName(TNode< Object > key, Label *if_keyisindex, TVariable< IntPtrT > *var_index, Label *if_keyisunique, TVariable< Name > *var_unique, Label *if_bailout, Label *if_notinternalized=nullptr)
TNode< Uint32T > LoadDetailsByDescriptorEntry(TNode< DescriptorArray > descriptors, TNode< IntPtrT > descriptor)
void StoreValueByKeyIndex(TNode< ContainerType > container, TNode< IntPtrT > key_index, TNode< Object > value, WriteBarrierMode write_barrier=UPDATE_WRITE_BARRIER)
void TryInternalizeString(TNode< String > string, Label *if_index, TVariable< IntPtrT > *var_index, Label *if_internalized, TVariable< Name > *var_internalized, Label *if_not_internalized, Label *if_bailout)
void CheckForAssociatedProtector(TNode< Name > name, Label *if_protector)
TNode< BoolT > IsFastPackedElementsKind(TNode< Int32T > elements_kind)
TNode< JSPrototype > LoadMapPrototype(TNode< Map > map)
TNode< BoolT > IsSetWord32(TNode< Word32T > word32)
TNode< Map > LoadJSArrayElementsMap(ElementsKind kind, TNode< NativeContext > native_context)
void TryLookupProperty(TNode< HeapObject > object, TNode< Map > map, TNode< Int32T > instance_type, TNode< Name > unique_name, Label *if_found_fast, Label *if_found_dict, Label *if_found_global, TVariable< HeapObject > *var_meta_storage, TVariable< IntPtrT > *var_name_index, Label *if_not_found, Label *if_bailout)
void StoreMap(TNode< HeapObject > object, TNode< Map > map)
void DispatchMaybeObject(TNode< MaybeObject > maybe_object, Label *if_smi, Label *if_cleared, Label *if_weak, Label *if_strong, TVariable< Object > *extracted)
TNode< Object > LoadValueByKeyIndex(TNode< ContainerType > container, TNode< IntPtrT > key_index)
TNode< BoolT > IsCustomElementsReceiverInstanceType(TNode< Int32T > instance_type)
void DescriptorLookup(TNode< Name > unique_name, TNode< DescriptorArray > descriptors, TNode< Uint32T > bitfield3, Label *if_found, TVariable< IntPtrT > *var_name_index, Label *if_not_found)
TNode< Int32T > LoadAndUntagToWord32ObjectField(TNode< HeapObject > object, int offset)
void StoreObjectFieldNoWriteBarrier(TNode< HeapObject > object, TNode< IntPtrT > offset, TNode< T > value)
TNode< JSAny > Call(TNode< Context > context, TNode< TCallable > callable, ConvertReceiverMode mode, TNode< JSAny > receiver, TArgs... args)
TNode< Uint16T > LoadMapInstanceType(TNode< Map > map)
TNode< BoolT > IsJSArrayMap(TNode< Map > map)
TNode< Float64T > LoadDoubleWithHoleCheck(TNode< FixedDoubleArray > array, TNode< IntPtrT > index, Label *if_hole=nullptr)
TNode< IntPtrT > ElementOffsetFromIndex(TNode< TIndex > index, ElementsKind kind, int base_size=0)
void UnsafeStoreFixedArrayElement(TNode< FixedArray > object, int index, TNode< Object > value, WriteBarrierMode barrier_mode=UPDATE_WRITE_BARRIER)
void TransitionLookup(TNode< Name > unique_name, TNode< TransitionArray > transitions, Label *if_found, TVariable< IntPtrT > *var_name_index, Label *if_not_found)
void SharedValueBarrier(TNode< Context > context, TVariable< Object > *var_shared_value)
@ kFindExistingOrInsertionIndex
TNode< NativeContext > LoadNativeContext(TNode< Context > context)
TNode< BoolT > TaggedIsSmi(TNode< MaybeObject > a)
TNode< Smi > LoadFastJSArrayLength(TNode< JSArray > array)
TNode< BoolT > IsSpecialReceiverInstanceType(TNode< Int32T > instance_type)
TNode< Float64T > LoadHeapNumberValue(TNode< HeapObject > object)
TNode< BoolT > IsJSSharedStructInstanceType(TNode< Int32T > instance_type)
TNode< String > Typeof(TNode< Object > value, std::optional< TNode< UintPtrT > > slot_id={}, std::optional< TNode< HeapObject > > maybe_feedback_vector={})
TNode< Map > LoadMap(TNode< HeapObject > object)
TNode< BoolT > IsDictionaryMap(TNode< Map > map)
TNode< Int32T > LoadMapElementsKind(TNode< Map > map)
TNode< Object > LoadAccessorPairSetter(TNode< AccessorPair > accessor_pair)
TNode< IntPtrT > PositiveSmiUntag(TNode< Smi > value)
TNode< TValue > LoadArrayElement(TNode< Array > array, int array_header_size, TNode< TIndex > index, int additional_offset=0)
void LoadPropertyFromFastObject(TNode< HeapObject > object, TNode< Map > map, TNode< DescriptorArray > descriptors, TNode< IntPtrT > name_index, TVariable< Uint32T > *var_details, TVariable< Object > *var_value)
TNode< BoolT > IsJSTypedArrayInstanceType(TNode< Int32T > instance_type)
TNode< HeapObject > GetHeapObjectAssumeWeak(TNode< MaybeObject > value)
void AddToDictionary(TNode< Dictionary > dictionary, TNode< Name > key, TNode< Object > value, Label *bailout, std::optional< TNode< IntPtrT > > insertion_index=std::nullopt)
static int ArrayMapIndex(ElementsKind elements_kind)
static void Generate(compiler::CodeAssemblerState *state)
static void Generate(compiler::CodeAssemblerState *state)
void Return(const TNode< Object > result)
void ReturnCallRuntime(Runtime::FunctionId function, TNode< Context > context, TArgs... args)
static FeedbackSlot Invalid()
bool ShouldCheckPrototype() const
void EmitGenericPropertyStore(TNode< JSReceiver > receiver, TNode< Map > receiver_map, TNode< Uint16T > instance_type, const StoreICParameters *p, ExitPoint *exit_point, Label *slow, Maybe< LanguageMode > maybe_language_mode, UseStubCache use_stub_cache)
bool IsDefineKeyedOwn() const
bool ShouldCheckPrototypeValidity() const
bool ShouldCallSetter() const
bool ShouldReconfigureExisting() const
bool IsDefineKeyedOwnInLiteral() const
void MaybeUpdateLengthAndReturn(TNode< JSObject > receiver, TNode< IntPtrT > index, TNode< Object > value, UpdateLength update_length)
void TryRewriteElements(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< FixedArrayBase > elements, TNode< NativeContext > native_context, ElementsKind from_kind, ElementsKind to_kind, Label *bailout)
void EmitGenericElementStore(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< Uint16T > instance_type, TNode< IntPtrT > index, TNode< Object > value, TNode< Context > context, Label *slow)
void StoreElementWithCapacity(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< FixedArrayBase > elements, TNode< Word32T > elements_kind, TNode< IntPtrT > index, TNode< Object > value, TNode< Context > context, Label *slow, UpdateLength update_length)
TNode< Map > FindCandidateStoreICTransitionMapHandler(TNode< Map > map, TNode< Name > name, Label *slow)
void TryChangeToHoleyMapMulti(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< Word32T > current_elements_kind, TNode< Context > context, ElementsKind packed_kind, ElementsKind packed_kind_2, Label *bailout)
void KeyedStoreMegamorphic()
KeyedStoreGenericAssembler(compiler::CodeAssemblerState *state, StoreMode mode)
bool IsAnyDefineOwn() const
void TryChangeToHoleyMapHelper(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< NativeContext > native_context, ElementsKind packed_kind, ElementsKind holey_kind, Label *done, Label *map_mismatch, Label *bailout)
void EmitGenericPropertyStore(TNode< JSReceiver > receiver, TNode< Map > receiver_map, TNode< Uint16T > instance_type, const StoreICParameters *p, Label *slow)
void StoreIC_NoFeedback()
void StoreSharedArrayElement(TNode< Context > context, TNode< FixedArrayBase > elements, TNode< IntPtrT > index, TNode< Object > value)
void BranchIfPrototypesMayHaveReadOnlyElements(TNode< Map > receiver_map, Label *maybe_read_only_elements, Label *only_fast_writable_elements)
void StoreProperty(TNode< Context > context, TNode< JSReceiver > receiver, TNode< BoolT > is_simple_receiver, TNode< Name > unique_name, TNode< Object > value, LanguageMode language_mode)
void LookupPropertyOnPrototypeChain(TNode< Map > receiver_map, TNode< Name > name, Label *accessor, TVariable< Object > *var_accessor_pair, TVariable< HeapObject > *var_accessor_holder, Label *readonly, Label *bailout)
void TryChangeToHoleyMap(TNode< JSObject > receiver, TNode< Map > receiver_map, TNode< Word32T > current_elements_kind, TNode< Context > context, ElementsKind packed_kind, Label *bailout)
bool IsDefineNamedOwn() const
static void SetProperty(compiler::CodeAssemblerState *state, TNode< Context > context, TNode< JSReceiver > receiver, TNode< BoolT > is_simple_receiver, TNode< Name > name, TNode< Object > value, LanguageMode language_mode)
static void CreateDataProperty(compiler::CodeAssemblerState *state, TNode< Context > context, TNode< JSObject > receiver, TNode< Object > key, TNode< Object > value)
static void Generate(compiler::CodeAssemblerState *state)
static void Generate(compiler::CodeAssemblerState *state)
static constexpr MachineType AnyTagged()
static constexpr MachineType None()
static const int kAttributesReadOnlyMask
static void Generate(compiler::CodeAssemblerState *state)
static const int kEntryKeyIndex
static const int kEntryTargetIndex
TNode< IntPtrT > IntPtrAdd(TNode< IntPtrT > left, TNode< IntPtrT > right)
TNode< Int32T > Signed(TNode< Word32T > x)
void Comment(MessageWithSourceLocation message, Args &&... args)
TNode< IntPtrT > IntPtrConstant(intptr_t value)
TNode< BoolT > WordEqual(TNode< WordT > left, TNode< WordT > right)
void GotoIfNot(TNode< IntegralT > condition, Label *false_label, GotoHint goto_hint=GotoHint::kNone)
void Return(TNode< Object > value)
TNode< Uint32T > Unsigned(TNode< Word32T > x)
TNode< Uint64T > Uint64Constant(uint64_t value)
void TailCallRuntime(Runtime::FunctionId function, TNode< Object > context, TArgs... args)
TNode< Smi > SmiConstant(Tagged< Smi > value)
void GotoIf(TNode< IntegralT > condition, Label *true_label, GotoHint goto_hint=GotoHint::kNone)
Node * Load(MachineType type, Node *base)
TNode< BoolT > BoolConstant(bool value)
TNode< TaggedIndex > TaggedIndexConstant(intptr_t value)
TNode< Int32T > Int32Constant(int32_t value)
TNode< BoolT > Word32Equal(TNode< Word32T > left, TNode< Word32T > right)
TNode< T > CallRuntime(Runtime::FunctionId function, TNode< Object > context, TArgs... args)
void Store(Node *base, Node *value)
void Branch(TNode< IntegralT > condition, Label *true_label, Label *false_label, BranchHint branch_hint=BranchHint::kNone)
void StoreNoWriteBarrier(MachineRepresentation rep, Node *base, Node *value)
TNode< T > Parameter(int value, const SourceLocation &loc=SourceLocation::Current())
#define V8_DICT_PROPERTY_CONST_TRACKING_BOOL
SharedFunctionInfoRef shared
ZoneVector< RpoNumber > & result
constexpr int kTaggedSize
@ kDefineKeyedOwnInLiteral
@ FIRST_FIXED_TYPED_ARRAY_ELEMENTS_KIND
@ LAST_RAB_GSAB_FIXED_TYPED_ARRAY_ELEMENTS_KIND
ElementsKind GetHoleyElementsKind(ElementsKind packed_kind)
DONT_OVERRIDE DISABLE_ALLOCATION_SITES HOLEY_ELEMENTS
DONT_OVERRIDE DISABLE_ALLOCATION_SITES DISABLE_ALLOCATION_SITES HOLEY_DOUBLE_ELEMENTS
V8_EXPORT_PRIVATE FlagValues v8_flags
bool IsPrivateSymbol(Tagged< Object > obj)
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset IsNull(value)||IsJSProxy(value)||IsWasmObject(value)||(IsJSObject(value) &&(HeapLayout
!IsContextMap !IsContextMap native_context
Maybe< T > Just(const T &t)
#define DCHECK_IMPLIES(v1, v2)
#define DCHECK(condition)
TNode< Object > name() const
TNode< Context > context() const
TNode< TaggedIndex > slot() const
TNode< HeapObject > vector() const
StubCache * stub_cache(Isolate *isolate) const
TNode< Object > value() const
TNode< JSAny > receiver() const
#define OFFSET_OF_DATA_START(Type)