28 #ifndef V8_PROPERTY_DETAILS_H_
29 #define V8_PROPERTY_DETAILS_H_
31 #include "../include/v8.h"
80 value_ = TypeField::encode(type)
81 | AttributesField::encode(attributes)
82 | DictionaryStorageField::encode(index);
84 ASSERT(type == this->type());
85 ASSERT(attributes == this->attributes());
86 ASSERT(index == this->dictionary_index());
89 int pointer() {
return DescriptorPointer::decode(value_); }
91 PropertyDetails
set_pointer(
int i) {
return PropertyDetails(value_, i); }
94 explicit inline PropertyDetails(
Smi* smi);
100 return AttributesField::decode(value_);
104 return DictionaryStorageField::decode(value_);
108 return DescriptorStorageField::decode(value_);
111 inline PropertyDetails AsDeleted();
114 return DictionaryStorageField::is_valid(index);
120 bool IsDeleted()
const {
return DeletedField::decode(value_) != 0;}
124 class TypeField:
public BitField<PropertyType, 0, 3> {};
131 static const int kInitialIndex = 1;
134 PropertyDetails(
int value,
int pointer) {
135 value_ = DescriptorPointer::update(value, pointer);
143 #endif // V8_PROPERTY_DETAILS_H_
PropertyDetails set_pointer(int i)
PropertyDetails(PropertyAttributes attributes, PropertyType type, int index=0)
#define ASSERT(condition)
PropertyAttributes attributes() const
static bool IsValidIndex(int index)
bool IsDontDelete() const