#include "src/ic/keyed-store-generic.h"
#include <optional>
#include "src/codegen/code-factory.h"
#include "src/codegen/code-stub-assembler-inl.h"
#include "src/codegen/interface-descriptors.h"
#include "src/execution/isolate.h"
#include "src/ic/accessor-assembler.h"
#include "src/objects/contexts.h"
#include "src/objects/feedback-vector.h"
#include "src/objects/objects-inl.h"
namespace v8 {
namespace internal {
#include "src/codegen/define-code-stub-assembler-macros.inc"
enum class StoreMode { … };
enum class PrivateNameSemantics { … };
class KeyedStoreGenericAssembler : public AccessorAssembler { … };
void KeyedStoreMegamorphicGenerator::Generate(
compiler::CodeAssemblerState* state) { … }
void KeyedStoreGenericGenerator::Generate(compiler::CodeAssemblerState* state) { … }
void DefineKeyedOwnGenericGenerator::Generate(
compiler::CodeAssemblerState* state) { … }
void StoreICNoFeedbackGenerator::Generate(compiler::CodeAssemblerState* state) { … }
void DefineNamedOwnICNoFeedbackGenerator::Generate(
compiler::CodeAssemblerState* state) { … }
void KeyedStoreGenericGenerator::SetProperty(
compiler::CodeAssemblerState* state, TNode<Context> context,
TNode<JSReceiver> receiver, TNode<BoolT> is_simple_receiver,
TNode<Name> name, TNode<Object> value, LanguageMode language_mode) { … }
void KeyedStoreGenericGenerator::SetProperty(
compiler::CodeAssemblerState* state, TNode<Context> context,
TNode<Object> receiver, TNode<Object> key, TNode<Object> value,
LanguageMode language_mode) { … }
void KeyedStoreGenericGenerator::CreateDataProperty(
compiler::CodeAssemblerState* state, TNode<Context> context,
TNode<JSObject> receiver, TNode<Object> key, TNode<Object> value) { … }
void KeyedStoreGenericAssembler::BranchIfPrototypesMayHaveReadOnlyElements(
TNode<Map> receiver_map, Label* maybe_read_only_elements,
Label* only_fast_writable_elements) { … }
void KeyedStoreGenericAssembler::TryRewriteElements(
TNode<JSObject> receiver, TNode<Map> receiver_map,
TNode<FixedArrayBase> elements, TNode<NativeContext> native_context,
ElementsKind from_kind, ElementsKind to_kind, Label* bailout) { … }
void KeyedStoreGenericAssembler::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 KeyedStoreGenericAssembler::TryChangeToHoleyMap(
TNode<JSObject> receiver, TNode<Map> receiver_map,
TNode<Word32T> current_elements_kind, TNode<Context> context,
ElementsKind packed_kind, Label* bailout) { … }
void KeyedStoreGenericAssembler::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 KeyedStoreGenericAssembler::MaybeUpdateLengthAndReturn(
TNode<JSObject> receiver, TNode<IntPtrT> index, TNode<Object> value,
UpdateLength update_length) { … }
void KeyedStoreGenericAssembler::StoreSharedArrayElement(
TNode<Context> context, TNode<FixedArrayBase> elements,
TNode<IntPtrT> index, TNode<Object> value) { … }
void KeyedStoreGenericAssembler::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) { … }
void KeyedStoreGenericAssembler::EmitGenericElementStore(
TNode<JSObject> receiver, TNode<Map> receiver_map,
TNode<Uint16T> instance_type, TNode<IntPtrT> index, TNode<Object> value,
TNode<Context> context, Label* slow) { … }
void KeyedStoreGenericAssembler::LookupPropertyOnPrototypeChain(
TNode<Map> receiver_map, TNode<Name> name, Label* accessor,
TVariable<Object>* var_accessor_pair,
TVariable<HeapObject>* var_accessor_holder, Label* readonly,
Label* bailout) { … }
TNode<Map> KeyedStoreGenericAssembler::FindCandidateStoreICTransitionMapHandler(
TNode<Map> map, TNode<Name> name, Label* slow) { … }
void KeyedStoreGenericAssembler::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) { … }
void KeyedStoreGenericAssembler::KeyedStoreGeneric(
TNode<Context> context, TNode<Object> receiver_maybe_smi, TNode<Object> key,
TNode<Object> value, Maybe<LanguageMode> language_mode,
UseStubCache use_stub_cache, TNode<TaggedIndex> slot,
TNode<HeapObject> maybe_vector) { … }
void KeyedStoreGenericAssembler::KeyedStoreGeneric() { … }
void KeyedStoreGenericAssembler::KeyedStoreMegamorphic() { … }
void KeyedStoreGenericAssembler::StoreProperty(TNode<Context> context,
TNode<Object> receiver,
TNode<Object> key,
TNode<Object> value,
LanguageMode language_mode) { … }
void KeyedStoreGenericAssembler::StoreIC_NoFeedback() { … }
void KeyedStoreGenericAssembler::StoreProperty(TNode<Context> context,
TNode<JSReceiver> receiver,
TNode<BoolT> is_simple_receiver,
TNode<Name> unique_name,
TNode<Object> value,
LanguageMode language_mode) { … }
#include "src/codegen/undef-code-stub-assembler-macros.inc"
}
}