| Index: src/type-feedback-vector.h
|
| diff --git a/src/type-feedback-vector.h b/src/type-feedback-vector.h
|
| index 0c741a37bba9c17d65889f4d5459823ea3fba47a..ed74904fcd9b298b92f51c8fdc87b1bae54280bd 100644
|
| --- a/src/type-feedback-vector.h
|
| +++ b/src/type-feedback-vector.h
|
| @@ -30,6 +30,7 @@ enum class FeedbackVectorSlotKind {
|
| KEYED_STORE_IC,
|
| INTERPRETER_BINARYOP_IC,
|
| INTERPRETER_COMPARE_IC,
|
| + STORE_DATA_PROPERTY_IN_LITERAL_IC,
|
|
|
| // This is a general purpose slot that occupies one feedback vector element.
|
| GENERAL,
|
| @@ -81,6 +82,10 @@ class FeedbackVectorSpecBase {
|
| return AddSlot(FeedbackVectorSlotKind::GENERAL);
|
| }
|
|
|
| + FeedbackVectorSlot AddStoreDataPropertyInLiteralICSlot() {
|
| + return AddSlot(FeedbackVectorSlotKind::STORE_DATA_PROPERTY_IN_LITERAL_IC);
|
| + }
|
| +
|
| #ifdef OBJECT_PRINT
|
| // For gdb debugging.
|
| void Print();
|
| @@ -667,6 +672,28 @@ class CompareICNexus final : public FeedbackNexus {
|
| }
|
| };
|
|
|
| +class StoreDataPropertyInLiteralICNexus : public FeedbackNexus {
|
| + public:
|
| + StoreDataPropertyInLiteralICNexus(Handle<TypeFeedbackVector> vector,
|
| + FeedbackVectorSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK_EQ(FeedbackVectorSlotKind::STORE_DATA_PROPERTY_IN_LITERAL_IC,
|
| + vector->GetKind(slot));
|
| + }
|
| + StoreDataPropertyInLiteralICNexus(TypeFeedbackVector* vector,
|
| + FeedbackVectorSlot slot)
|
| + : FeedbackNexus(vector, slot) {
|
| + DCHECK_EQ(FeedbackVectorSlotKind::STORE_DATA_PROPERTY_IN_LITERAL_IC,
|
| + vector->GetKind(slot));
|
| + }
|
| +
|
| + void Clear(Code* host) { ConfigureUninitialized(); }
|
| +
|
| + void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map);
|
| +
|
| + InlineCacheState StateFromFeedback() const override;
|
| +};
|
| +
|
| inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback);
|
| inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback);
|
|
|
|
|