Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index 368ff81c733996ba36c0a5ab3e5bde7d1ec5f60a..43bde6ad25cc736bd89aab639ebb7398ccf6a947 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1748,8 +1748,7 @@ class Property FINAL : public Expression { |
SmallMapList* GetReceiverTypes() OVERRIDE { return &receiver_types_; } |
KeyedAccessStoreMode GetStoreMode() const OVERRIDE { return STANDARD_STORE; } |
IcCheckType GetKeyType() const OVERRIDE { |
- // PROPERTY key types currently aren't implemented for KeyedLoadICs. |
- return ELEMENT; |
+ return KeyTypeField::decode(bit_field_); |
} |
bool IsUninitialized() const { |
return !is_for_call() && HasNoTypeInformation(); |
@@ -1763,6 +1762,9 @@ class Property FINAL : public Expression { |
void set_is_string_access(bool b) { |
bit_field_ = IsStringAccessField::update(bit_field_, b); |
} |
+ void set_key_type(IcCheckType key_type) { |
+ bit_field_ = KeyTypeField::update(bit_field_, key_type); |
+ } |
void mark_for_call() { |
bit_field_ = IsForCallField::update(bit_field_, true); |
} |
@@ -1805,6 +1807,7 @@ class Property FINAL : public Expression { |
class IsForCallField : public BitField8<bool, 0, 1> {}; |
class IsUninitializedField : public BitField8<bool, 1, 1> {}; |
class IsStringAccessField : public BitField8<bool, 2, 1> {}; |
+ class KeyTypeField : public BitField8<IcCheckType, 3, 1> {}; |
uint8_t bit_field_; |
FeedbackVectorICSlot property_feedback_slot_; |
Expression* obj_; |