Index: src/scopeinfo.h |
diff --git a/src/scopeinfo.h b/src/scopeinfo.h |
index 70a17cd7d4a945975ce7ed59f7dc73c9d42d569c..0ca082643b295f7966ee0ba9195413d137faae89 100644 |
--- a/src/scopeinfo.h |
+++ b/src/scopeinfo.h |
@@ -21,11 +21,13 @@ class ContextSlotCache { |
// Lookup context slot index for (data, name). |
// If absent, kNotFound is returned. |
int Lookup(Object* data, String* name, VariableMode* mode, |
+ ContextSlotKindFlag* context_slot_kind, |
InitializationFlag* init_flag, |
MaybeAssignedFlag* maybe_assigned_flag); |
// Update an element in the cache. |
void Update(Handle<Object> data, Handle<String> name, VariableMode mode, |
+ ContextSlotKindFlag context_slot_kind, |
InitializationFlag init_flag, |
MaybeAssignedFlag maybe_assigned_flag, int slot_index); |
@@ -47,7 +49,8 @@ class ContextSlotCache { |
#ifdef DEBUG |
void ValidateEntry(Handle<Object> data, Handle<String> name, |
- VariableMode mode, InitializationFlag init_flag, |
+ VariableMode mode, ContextSlotKindFlag context_slot_kind, |
+ InitializationFlag init_flag, |
MaybeAssignedFlag maybe_assigned_flag, int slot_index); |
#endif |
@@ -58,16 +61,20 @@ class ContextSlotCache { |
}; |
struct Value { |
- Value(VariableMode mode, InitializationFlag init_flag, |
- MaybeAssignedFlag maybe_assigned_flag, int index) { |
+ Value(VariableMode mode, ContextSlotKindFlag context_slot_kind, |
+ InitializationFlag init_flag, MaybeAssignedFlag maybe_assigned_flag, |
+ int index) { |
DCHECK(ModeField::is_valid(mode)); |
+ DCHECK(ContextSlotKindField::is_valid(context_slot_kind)); |
DCHECK(InitField::is_valid(init_flag)); |
DCHECK(MaybeAssignedField::is_valid(maybe_assigned_flag)); |
DCHECK(IndexField::is_valid(index)); |
value_ = ModeField::encode(mode) | IndexField::encode(index) | |
+ ContextSlotKindField::encode(context_slot_kind) | |
InitField::encode(init_flag) | |
MaybeAssignedField::encode(maybe_assigned_flag); |
DCHECK(mode == this->mode()); |
+ DCHECK(context_slot_kind == this->context_slot_kind()); |
DCHECK(init_flag == this->initialization_flag()); |
DCHECK(maybe_assigned_flag == this->maybe_assigned_flag()); |
DCHECK(index == this->index()); |
@@ -87,6 +94,10 @@ class ContextSlotCache { |
return MaybeAssignedField::decode(value_); |
} |
+ ContextSlotKindFlag context_slot_kind() { |
+ return ContextSlotKindField::decode(value_); |
+ } |
+ |
int index() { return IndexField::decode(value_); } |
// Bit fields in value_ (type, shift, size). Must be public so the |
@@ -94,7 +105,8 @@ class ContextSlotCache { |
class ModeField : public BitField<VariableMode, 0, 4> {}; |
class InitField : public BitField<InitializationFlag, 4, 1> {}; |
class MaybeAssignedField : public BitField<MaybeAssignedFlag, 5, 1> {}; |
- class IndexField : public BitField<int, 6, 32 - 6> {}; |
+ class ContextSlotKindField : public BitField<ContextSlotKindFlag, 6, 1> {}; |
+ class IndexField : public BitField<int, 7, 32 - 7> {}; |
private: |
uint32_t value_; |