| Index: src/ast.h
|
| diff --git a/src/ast.h b/src/ast.h
|
| index 6cb866925968ee34f2b08ccc88a23e34eebe31d6..f4ed5acad284a48ed348e980bda224ba156a7723 100644
|
| --- a/src/ast.h
|
| +++ b/src/ast.h
|
| @@ -377,6 +377,10 @@ class Expression : public AstNode {
|
| UNREACHABLE();
|
| return STANDARD_STORE;
|
| }
|
| + virtual IcCheckType GetKeyType() {
|
| + UNREACHABLE();
|
| + return ELEMENT;
|
| + }
|
|
|
| // TODO(rossberg): this should move to its own AST node eventually.
|
| virtual void RecordToBooleanTypeFeedback(TypeFeedbackOracle* oracle);
|
| @@ -2101,10 +2105,12 @@ class CountOperation FINAL : public Expression {
|
| virtual SmallMapList* GetReceiverTypes() OVERRIDE {
|
| return &receiver_types_;
|
| }
|
| + virtual IcCheckType GetKeyType() OVERRIDE { return key_type_; }
|
| virtual KeyedAccessStoreMode GetStoreMode() OVERRIDE {
|
| return store_mode_;
|
| }
|
| Type* type() const { return type_; }
|
| + void set_key_type(IcCheckType type) { key_type_ = type; }
|
| void set_store_mode(KeyedAccessStoreMode mode) { store_mode_ = mode; }
|
| void set_type(Type* type) { type_ = type; }
|
|
|
| @@ -2131,6 +2137,7 @@ class CountOperation FINAL : public Expression {
|
| private:
|
| Token::Value op_;
|
| bool is_prefix_ : 1;
|
| + IcCheckType key_type_ : 1;
|
| KeyedAccessStoreMode store_mode_ : 5; // Windows treats as signed,
|
| // must have extra bit.
|
| Type* type_;
|
| @@ -2243,10 +2250,12 @@ class Assignment FINAL : public Expression {
|
| virtual SmallMapList* GetReceiverTypes() OVERRIDE {
|
| return &receiver_types_;
|
| }
|
| + virtual IcCheckType GetKeyType() OVERRIDE { return key_type_; }
|
| virtual KeyedAccessStoreMode GetStoreMode() OVERRIDE {
|
| return store_mode_;
|
| }
|
| void set_is_uninitialized(bool b) { is_uninitialized_ = b; }
|
| + void set_key_type(IcCheckType key_type) { key_type_ = key_type; }
|
| void set_store_mode(KeyedAccessStoreMode mode) { store_mode_ = mode; }
|
|
|
| protected:
|
| @@ -2271,6 +2280,7 @@ class Assignment FINAL : public Expression {
|
| Expression* value_;
|
| BinaryOperation* binary_operation_;
|
| bool is_uninitialized_ : 1;
|
| + IcCheckType key_type_ : 1;
|
| KeyedAccessStoreMode store_mode_ : 5; // Windows treats as signed,
|
| // must have extra bit.
|
| SmallMapList receiver_types_;
|
|
|