summaryrefslogtreecommitdiff
path: root/deps/v8/src/ic/accessor-assembler.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ic/accessor-assembler.h')
-rw-r--r--deps/v8/src/ic/accessor-assembler.h33
1 files changed, 24 insertions, 9 deletions
diff --git a/deps/v8/src/ic/accessor-assembler.h b/deps/v8/src/ic/accessor-assembler.h
index 40445355f3..367a9aff52 100644
--- a/deps/v8/src/ic/accessor-assembler.h
+++ b/deps/v8/src/ic/accessor-assembler.h
@@ -35,10 +35,12 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
void GenerateLoadSuperICBaseline();
void GenerateKeyedLoadIC();
void GenerateKeyedLoadIC_Megamorphic();
+ void GenerateKeyedLoadIC_MegamorphicStringKey();
void GenerateKeyedLoadIC_PolymorphicName();
void GenerateKeyedLoadICTrampoline();
void GenerateKeyedLoadICBaseline();
void GenerateKeyedLoadICTrampoline_Megamorphic();
+ void GenerateKeyedLoadICTrampoline_MegamorphicStringKey();
void GenerateStoreIC();
void GenerateStoreICTrampoline();
void GenerateStoreICBaseline();
@@ -59,6 +61,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
void GenerateLoadGlobalIC(TypeofMode typeof_mode);
void GenerateLoadGlobalICTrampoline(TypeofMode typeof_mode);
void GenerateLoadGlobalICBaseline(TypeofMode typeof_mode);
+ void GenerateLookupGlobalIC(TypeofMode typeof_mode);
void GenerateLookupGlobalICTrampoline(TypeofMode typeof_mode);
void GenerateLookupGlobalICBaseline(TypeofMode typeof_mode);
void GenerateLookupContextTrampoline(TypeofMode typeof_mode);
@@ -209,12 +212,13 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
StoreICParameters(TNode<Context> context,
base::Optional<TNode<Object>> receiver,
TNode<Object> name, TNode<Object> value,
- TNode<TaggedIndex> slot, TNode<HeapObject> vector,
- StoreICMode mode)
+ base::Optional<TNode<Smi>> flags, TNode<TaggedIndex> slot,
+ TNode<HeapObject> vector, StoreICMode mode)
: context_(context),
receiver_(receiver),
name_(name),
value_(value),
+ flags_(flags),
slot_(slot),
vector_(vector),
mode_(mode) {}
@@ -223,12 +227,14 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
TNode<Object> receiver() const { return receiver_.value(); }
TNode<Object> name() const { return name_; }
TNode<Object> value() const { return value_; }
+ TNode<Smi> flags() const { return flags_.value(); }
TNode<TaggedIndex> slot() const { return slot_; }
TNode<HeapObject> vector() const { return vector_; }
TNode<Object> lookup_start_object() const { return receiver(); }
bool receiver_is_null() const { return !receiver_.has_value(); }
+ bool flags_is_null() const { return !flags_.has_value(); }
bool IsDefineNamedOwn() const {
return mode_ == StoreICMode::kDefineNamedOwn;
@@ -245,6 +251,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
base::Optional<TNode<Object>> receiver_;
TNode<Object> name_;
TNode<Object> value_;
+ base::Optional<TNode<Smi>> flags_;
TNode<TaggedIndex> slot_;
TNode<HeapObject> vector_;
StoreICMode mode_;
@@ -268,6 +275,10 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
Label* miss,
StoreTransitionMapFlags flags);
+ // Updates flags on |dict| if |name| is an interesting symbol.
+ void UpdateMayHaveInterestingSymbol(TNode<PropertyDictionary> dict,
+ TNode<Name> name);
+
void JumpIfDataProperty(TNode<Uint32T> details, Label* writable,
Label* readonly);
@@ -323,6 +334,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
void KeyedLoadIC(const LoadICParameters* p, LoadAccessMode access_mode);
void KeyedLoadICGeneric(const LoadICParameters* p);
+ void KeyedLoadICGeneric_StringKey(const LoadICParameters* p);
void KeyedLoadICPolymorphicName(const LoadICParameters* p,
LoadAccessMode access_mode);
@@ -343,17 +355,20 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
LazyNode<TaggedIndex> lazy_slot, TNode<Context> context,
TypeofMode typeof_mode);
+ void GotoIfNotSameNumberBitPattern(TNode<Float64T> left,
+ TNode<Float64T> right, Label* miss);
+
// IC dispatcher behavior.
// Checks monomorphic case. Returns {feedback} entry of the vector.
TNode<HeapObjectReference> TryMonomorphicCase(
TNode<TaggedIndex> slot, TNode<FeedbackVector> vector,
- TNode<Map> lookup_start_object_map, Label* if_handler,
+ TNode<HeapObjectReference> weak_lookup_start_object_map,
+ Label* if_handler, TVariable<MaybeObject>* var_handler, Label* if_miss);
+ void HandlePolymorphicCase(
+ TNode<HeapObjectReference> weak_lookup_start_object_map,
+ TNode<WeakFixedArray> feedback, Label* if_handler,
TVariable<MaybeObject>* var_handler, Label* if_miss);
- void HandlePolymorphicCase(TNode<Map> lookup_start_object_map,
- TNode<WeakFixedArray> feedback, Label* if_handler,
- TVariable<MaybeObject>* var_handler,
- Label* if_miss);
void TryMegaDOMCase(TNode<Object> lookup_start_object,
TNode<Map> lookup_start_object_map,
@@ -496,7 +511,7 @@ class V8_EXPORT_PRIVATE AccessorAssembler : public CodeStubAssembler {
// Low-level helpers.
- using OnCodeHandler = std::function<void(TNode<CodeT> code_handler)>;
+ using OnCodeHandler = std::function<void(TNode<Code> code_handler)>;
using OnFoundOnLookupStartObject = std::function<void(
TNode<PropertyDictionary> properties, TNode<IntPtrT> name_index)>;
@@ -603,7 +618,7 @@ class ExitPoint {
template <class... TArgs>
void ReturnCallStub(const CallInterfaceDescriptor& descriptor,
- TNode<CodeT> target, TNode<Context> context,
+ TNode<Code> target, TNode<Context> context,
TArgs... args) {
if (IsDirect()) {
asm_->TailCallStub(descriptor, target, context, args...);