| Index: src/ast.h
|
| diff --git a/src/ast.h b/src/ast.h
|
| index 5debc74ebbab68ee18c40a863d664ad5f92e7a1b..88cd69605df54747e98a04f936d36d308976d1ac 100644
|
| --- a/src/ast.h
|
| +++ b/src/ast.h
|
| @@ -349,6 +349,10 @@ class Expression: public AstNode {
|
| ASSERT(types != NULL && types->length() == 1);
|
| return types->at(0);
|
| }
|
| + virtual KeyedAccessStoreMode GetStoreMode() {
|
| + UNREACHABLE();
|
| + return STANDARD_STORE;
|
| + }
|
|
|
| BailoutId id() const { return id_; }
|
| TypeFeedbackId test_id() const { return test_id_; }
|
| @@ -1481,6 +1485,9 @@ class Property: public Expression {
|
| void RecordTypeFeedback(TypeFeedbackOracle* oracle, Zone* zone);
|
| virtual bool IsMonomorphic() { return is_monomorphic_; }
|
| virtual SmallMapList* GetReceiverTypes() { return &receiver_types_; }
|
| + virtual KeyedAccessStoreMode GetStoreMode() {
|
| + return STANDARD_STORE;
|
| + }
|
| bool IsArrayLength() { return is_array_length_; }
|
| bool IsUninitialized() { return is_uninitialized_; }
|
| TypeFeedbackId PropertyFeedbackId() { return reuse(id()); }
|
| @@ -1773,6 +1780,9 @@ class CountOperation: public Expression {
|
| void RecordTypeFeedback(TypeFeedbackOracle* oracle, Zone* znoe);
|
| virtual bool IsMonomorphic() { return is_monomorphic_; }
|
| virtual SmallMapList* GetReceiverTypes() { return &receiver_types_; }
|
| + virtual KeyedAccessStoreMode GetStoreMode() {
|
| + return store_mode_;
|
| + }
|
|
|
| BailoutId AssignmentId() const { return assignment_id_; }
|
|
|
| @@ -1788,6 +1798,8 @@ class CountOperation: public Expression {
|
| : Expression(isolate),
|
| op_(op),
|
| is_prefix_(is_prefix),
|
| + is_monomorphic_(false),
|
| + store_mode_(STANDARD_STORE),
|
| expression_(expr),
|
| pos_(pos),
|
| assignment_id_(GetNextId(isolate)),
|
| @@ -1795,8 +1807,9 @@ class CountOperation: public Expression {
|
|
|
| private:
|
| Token::Value op_;
|
| - bool is_prefix_;
|
| - bool is_monomorphic_;
|
| + bool is_prefix_ : 1;
|
| + bool is_monomorphic_ : 1;
|
| + KeyedAccessStoreMode store_mode_: 4;
|
| Expression* expression_;
|
| int pos_;
|
| const BailoutId assignment_id_;
|
| @@ -1909,6 +1922,9 @@ class Assignment: public Expression {
|
| void RecordTypeFeedback(TypeFeedbackOracle* oracle, Zone* zone);
|
| virtual bool IsMonomorphic() { return is_monomorphic_; }
|
| virtual SmallMapList* GetReceiverTypes() { return &receiver_types_; }
|
| + virtual KeyedAccessStoreMode GetStoreMode() {
|
| + return store_mode_;
|
| + }
|
|
|
| protected:
|
| Assignment(Isolate* isolate,
|
| @@ -1934,7 +1950,8 @@ class Assignment: public Expression {
|
| BinaryOperation* binary_operation_;
|
| const BailoutId assignment_id_;
|
|
|
| - bool is_monomorphic_;
|
| + bool is_monomorphic_ : 1;
|
| + KeyedAccessStoreMode store_mode_ : 4;
|
| SmallMapList receiver_types_;
|
| };
|
|
|
|
|