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_; |
}; |