Index: src/property-details.h |
diff --git a/src/property-details.h b/src/property-details.h |
index 3bb1f3368e9efdda6cdef3a6b95e9b003a5e4254..6d0f1479d1e0da38cd59a9263458e97217749a24 100644 |
--- a/src/property-details.h |
+++ b/src/property-details.h |
@@ -169,10 +169,12 @@ class PropertyDetails BASE_EMBEDDED { |
PropertyDetails(PropertyAttributes attributes, |
PropertyType type, |
- Representation representation) { |
+ Representation representation, |
+ int field_index = 0) { |
value_ = TypeField::encode(type) |
| AttributesField::encode(attributes) |
- | RepresentationField::encode(EncodeRepresentation(representation)); |
+ | RepresentationField::encode(EncodeRepresentation(representation)) |
+ | FieldIndexField::encode(field_index); |
} |
int pointer() { return DescriptorPointer::decode(value_); } |
@@ -214,6 +216,10 @@ class PropertyDetails BASE_EMBEDDED { |
return DecodeRepresentation(RepresentationField::decode(value_)); |
} |
+ int field_index() { |
+ return FieldIndexField::decode(value_); |
+ } |
+ |
inline PropertyDetails AsDeleted(); |
static bool IsValidIndex(int index) { |
@@ -229,10 +235,15 @@ class PropertyDetails BASE_EMBEDDED { |
// constants can be embedded in generated code. |
class TypeField: public BitField<PropertyType, 0, 3> {}; |
class AttributesField: public BitField<PropertyAttributes, 3, 3> {}; |
+ |
+ // Bit fields for normalized objects. |
class DeletedField: public BitField<uint32_t, 6, 1> {}; |
class DictionaryStorageField: public BitField<uint32_t, 7, 24> {}; |
- class DescriptorPointer: public BitField<uint32_t, 7, 11> {}; |
- class RepresentationField: public BitField<uint32_t, 18, 3> {}; |
+ |
+ // Bit fields for fast objects. |
+ class DescriptorPointer: public BitField<uint32_t, 6, 11> {}; |
+ class RepresentationField: public BitField<uint32_t, 17, 3> {}; |
+ class FieldIndexField: public BitField<uint32_t, 20, 11> {}; |
static const int kInitialIndex = 1; |