aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/property-details.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/property-details.h')
-rw-r--r--deps/v8/src/property-details.h28
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_);
}