// A copy of this is in mirror-debugger.js.
enum PropertyType {
// Only in slow mode.
- NORMAL = 0,
+ NORMAL = 0,
// Only in fast mode.
- FIELD = 1,
- CONSTANT = 2,
- CALLBACKS = 3,
- // Only in lookup results, not in descriptors.
- HANDLER = 4,
- INTERCEPTOR = 5,
- // Only used as a marker in LookupResult.
- NONEXISTENT = 6
+ FIELD = 1,
+ CONSTANT = 2,
+ CALLBACKS = 3
};
kSmi,
kInteger32,
kDouble,
- kFloat32x4,
- kFloat64x2,
- kInt32x4,
kHeapObject,
kTagged,
kExternal,
static Representation Smi() { return Representation(kSmi); }
static Representation Integer32() { return Representation(kInteger32); }
static Representation Double() { return Representation(kDouble); }
- static Representation Float32x4() { return Representation(kFloat32x4); }
- static Representation Float64x2() { return Representation(kFloat64x2); }
- static Representation Int32x4() { return Representation(kInt32x4); }
static Representation HeapObject() { return Representation(kHeapObject); }
static Representation External() { return Representation(kExternal); }
if (IsHeapObject()) return other.IsNone();
if (kind_ == kUInteger8 && other.kind_ == kInteger8) return false;
if (kind_ == kUInteger16 && other.kind_ == kInteger16) return false;
- if (IsSIMD128() && other.IsSIMD128()) return false;
return kind_ > other.kind_;
}
bool IsInteger32() const { return kind_ == kInteger32; }
bool IsSmiOrInteger32() const { return IsSmi() || IsInteger32(); }
bool IsDouble() const { return kind_ == kDouble; }
- bool IsFloat32x4() const { return kind_ == kFloat32x4; }
- bool IsFloat64x2() const { return kind_ == kFloat64x2; }
- bool IsInt32x4() const { return kind_ == kInt32x4; }
- bool IsSIMD128() const {
- return IsFloat32x4() || IsFloat64x2() || IsInt32x4();
- }
bool IsHeapObject() const { return kind_ == kHeapObject; }
bool IsExternal() const { return kind_ == kExternal; }
bool IsSpecialization() const {
}
bool IsReadOnly() const { return (attributes() & READ_ONLY) != 0; }
- bool IsDontDelete() const { return (attributes() & DONT_DELETE) != 0; }
+ bool IsConfigurable() const { return (attributes() & DONT_DELETE) == 0; }
bool IsDontEnum() const { return (attributes() & DONT_ENUM) != 0; }
bool IsDeleted() const { 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, 3> {};
- class AttributesField: public BitField<PropertyAttributes, 3, 3> {};
+ class TypeField : public BitField<PropertyType, 0, 2> {};
+ class AttributesField : public BitField<PropertyAttributes, 2, 3> {};
// Bit fields for normalized objects.
- class DeletedField: public BitField<uint32_t, 6, 1> {};
- class DictionaryStorageField: public BitField<uint32_t, 7, 24> {};
+ class DeletedField : public BitField<uint32_t, 5, 1> {};
+ class DictionaryStorageField : public BitField<uint32_t, 6, 24> {};
// Bit fields for fast objects.
- class RepresentationField: public BitField<uint32_t, 6, 4> {};
- class DescriptorPointer: public BitField<uint32_t, 10,
- kDescriptorIndexBitCount> {}; // NOLINT
- class FieldIndexField: public BitField<uint32_t,
- 10 + kDescriptorIndexBitCount,
- kDescriptorIndexBitCount> {}; // NOLINT
+ class RepresentationField : public BitField<uint32_t, 5, 4> {};
+ class DescriptorPointer
+ : public BitField<uint32_t, 9, kDescriptorIndexBitCount> {}; // NOLINT
+ class FieldIndexField
+ : public BitField<uint32_t, 9 + kDescriptorIndexBitCount,
+ kDescriptorIndexBitCount> {}; // NOLINT
// All bits for fast objects must fix in a smi.
- STATIC_ASSERT(10 + kDescriptorIndexBitCount + kDescriptorIndexBitCount <= 31);
+ STATIC_ASSERT(9 + kDescriptorIndexBitCount + kDescriptorIndexBitCount <= 31);
static const int kInitialIndex = 1;