Index: src/ast.h |
diff --git a/src/ast.h b/src/ast.h |
index 7bfa02178faabb6e09af3c3f8d8f303393da88d1..a5d4bafb49ba26541de25e8c032f520a4704b4f8 100644 |
--- a/src/ast.h |
+++ b/src/ast.h |
@@ -1746,10 +1746,10 @@ class Property FINAL : public Expression { |
return !is_for_call() && HasNoTypeInformation(); |
} |
bool HasNoTypeInformation() const { |
- return IsUninitializedField::decode(bit_field_); |
+ return GetInlineCacheState() == UNINITIALIZED; |
} |
- void set_is_uninitialized(bool b) { |
- bit_field_ = IsUninitializedField::update(bit_field_, b); |
+ InlineCacheState GetInlineCacheState() const { |
+ return InlineCacheStateField::decode(bit_field_); |
} |
void set_is_string_access(bool b) { |
bit_field_ = IsStringAccessField::update(bit_field_, b); |
@@ -1757,6 +1757,9 @@ class Property FINAL : public Expression { |
void set_key_type(IcCheckType key_type) { |
bit_field_ = KeyTypeField::update(bit_field_, key_type); |
} |
+ void set_inline_cache_state(InlineCacheState state) { |
+ bit_field_ = InlineCacheStateField::update(bit_field_, state); |
+ } |
void mark_for_call() { |
bit_field_ = IsForCallField::update(bit_field_, true); |
} |
@@ -1787,8 +1790,8 @@ class Property FINAL : public Expression { |
Property(Zone* zone, Expression* obj, Expression* key, int pos) |
: Expression(zone, pos), |
bit_field_(IsForCallField::encode(false) | |
- IsUninitializedField::encode(false) | |
- IsStringAccessField::encode(false)), |
+ IsStringAccessField::encode(false) | |
+ InlineCacheStateField::encode(UNINITIALIZED)), |
property_feedback_slot_(FeedbackVectorICSlot::Invalid()), |
obj_(obj), |
key_(key) {} |
@@ -1798,9 +1801,9 @@ class Property FINAL : public Expression { |
int local_id(int n) const { return base_id() + parent_num_ids() + n; } |
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> {}; |
+ class IsStringAccessField : public BitField8<bool, 1, 1> {}; |
+ class KeyTypeField : public BitField8<IcCheckType, 2, 1> {}; |
+ class InlineCacheStateField : public BitField8<InlineCacheState, 3, 4> {}; |
uint8_t bit_field_; |
FeedbackVectorICSlot property_feedback_slot_; |
Expression* obj_; |