diff options
Diffstat (limited to 'deps/v8/src/property-details.h')
-rw-r--r-- | deps/v8/src/property-details.h | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/deps/v8/src/property-details.h b/deps/v8/src/property-details.h index 1e953001eb..9fefb45afc 100644 --- a/deps/v8/src/property-details.h +++ b/deps/v8/src/property-details.h @@ -154,16 +154,13 @@ class Representation { int size() const { DCHECK(!IsNone()); - if (IsInteger8() || IsUInteger8()) { - return sizeof(uint8_t); - } - if (IsInteger16() || IsUInteger16()) { - return sizeof(uint16_t); - } - if (IsInteger32()) { - return sizeof(uint32_t); - } - return kPointerSize; + if (IsInteger8() || IsUInteger8()) return kUInt8Size; + if (IsInteger16() || IsUInteger16()) return kUInt16Size; + if (IsInteger32()) return kInt32Size; + if (IsDouble()) return kDoubleSize; + if (IsExternal()) return kSystemPointerSize; + DCHECK(IsTagged() || IsSmi() || IsHeapObject()); + return kTaggedSize; } Kind kind() const { return static_cast<Kind>(kind_); } @@ -287,9 +284,9 @@ class PropertyDetails { return PropertyDetails(value_, new_attributes); } - // Conversion for storing details as Object*. - explicit inline PropertyDetails(Smi* smi); - inline Smi* AsSmi() const; + // Conversion for storing details as Object. + explicit inline PropertyDetails(Smi smi); + inline Smi AsSmi() const; static uint8_t EncodeRepresentation(Representation representation) { return representation.kind(); @@ -307,6 +304,11 @@ class PropertyDetails { return AttributesField::decode(value_); } + bool HasKindAndAttributes(PropertyKind kind, PropertyAttributes attributes) { + return (value_ & (KindField::kMask | AttributesField::kMask)) == + (KindField::encode(kind) | AttributesField::encode(attributes)); + } + int dictionary_index() const { return DictionaryStorageField::decode(value_); } |