Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: src/ast.h

Issue 1083933002: Pass load ic state through the Oracle. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Adjust defaults. Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/compiler/js-type-feedback.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « no previous file | src/compiler/js-type-feedback.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698