| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index c54df59d97ececfd3e8ef05a6388624004350395..a89ea0f5693e7ddc4193d45257e0b6d171d1845c 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -31,6 +31,7 @@
|
| #include "allocation.h"
|
| #include "builtins.h"
|
| #include "list.h"
|
| +#include "property-details.h"
|
| #include "smart-array-pointer.h"
|
| #include "unicode-inl.h"
|
| #if V8_TARGET_ARCH_ARM
|
| @@ -124,18 +125,6 @@
|
| // HeapObject: [32 bit direct pointer] (4 byte aligned) | 01
|
| // Failure: [30 bit signed int] 11
|
|
|
| -// Ecma-262 3rd 8.6.1
|
| -enum PropertyAttributes {
|
| - NONE = v8::None,
|
| - READ_ONLY = v8::ReadOnly,
|
| - DONT_ENUM = v8::DontEnum,
|
| - DONT_DELETE = v8::DontDelete,
|
| - ABSENT = 16 // Used in runtime to indicate a property is absent.
|
| - // ABSENT can never be stored in or returned from a descriptor's attributes
|
| - // bitfield. It is only used as a return value meaning the attributes of
|
| - // a non-existent property.
|
| -};
|
| -
|
| namespace v8 {
|
| namespace internal {
|
|
|
| @@ -178,70 +167,6 @@ static const int kElementsKindCount =
|
|
|
| void PrintElementsKind(FILE* out, ElementsKind kind);
|
|
|
| -// PropertyDetails captures type and attributes for a property.
|
| -// They are used both in property dictionaries and instance descriptors.
|
| -class PropertyDetails BASE_EMBEDDED {
|
| - public:
|
| - PropertyDetails(PropertyAttributes attributes,
|
| - PropertyType type,
|
| - int index = 0) {
|
| - ASSERT(TypeField::is_valid(type));
|
| - ASSERT(AttributesField::is_valid(attributes));
|
| - ASSERT(StorageField::is_valid(index));
|
| -
|
| - value_ = TypeField::encode(type)
|
| - | AttributesField::encode(attributes)
|
| - | StorageField::encode(index);
|
| -
|
| - ASSERT(type == this->type());
|
| - ASSERT(attributes == this->attributes());
|
| - ASSERT(index == this->index());
|
| - }
|
| -
|
| - // Conversion for storing details as Object*.
|
| - explicit inline PropertyDetails(Smi* smi);
|
| - inline Smi* AsSmi();
|
| -
|
| - PropertyType type() { return TypeField::decode(value_); }
|
| -
|
| - bool IsTransition() {
|
| - PropertyType t = type();
|
| - ASSERT(t != INTERCEPTOR);
|
| - return IsTransitionType(t);
|
| - }
|
| -
|
| - bool IsProperty() {
|
| - return type() < FIRST_PHANTOM_PROPERTY_TYPE;
|
| - }
|
| -
|
| - PropertyAttributes attributes() { return AttributesField::decode(value_); }
|
| -
|
| - int index() { return StorageField::decode(value_); }
|
| -
|
| - inline PropertyDetails AsDeleted();
|
| -
|
| - static bool IsValidIndex(int index) {
|
| - return StorageField::is_valid(index);
|
| - }
|
| -
|
| - bool IsReadOnly() { return (attributes() & READ_ONLY) != 0; }
|
| - bool IsDontDelete() { return (attributes() & DONT_DELETE) != 0; }
|
| - bool IsDontEnum() { return (attributes() & DONT_ENUM) != 0; }
|
| - bool IsDeleted() { return DeletedField::decode(value_) != 0;}
|
| -
|
| - // Bit fields in value_ (type, shift, size). Must be public so the
|
| - // constants can be embedded in generated code.
|
| - class TypeField: public BitField<PropertyType, 0, 4> {};
|
| - class AttributesField: public BitField<PropertyAttributes, 4, 3> {};
|
| - class DeletedField: public BitField<uint32_t, 7, 1> {};
|
| - class StorageField: public BitField<uint32_t, 8, 32-8> {};
|
| -
|
| - static const int kInitialIndex = 1;
|
| -
|
| - private:
|
| - uint32_t value_;
|
| -};
|
| -
|
|
|
| // Setter that skips the write barrier if mode is SKIP_WRITE_BARRIER.
|
| enum WriteBarrierMode { SKIP_WRITE_BARRIER, UPDATE_WRITE_BARRIER };
|
|
|