summaryrefslogtreecommitdiff
path: root/deps/v8/src/objects/descriptor-array-inl.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/objects/descriptor-array-inl.h')
-rw-r--r--deps/v8/src/objects/descriptor-array-inl.h91
1 files changed, 48 insertions, 43 deletions
diff --git a/deps/v8/src/objects/descriptor-array-inl.h b/deps/v8/src/objects/descriptor-array-inl.h
index e2805d795a..5ea14c1e60 100644
--- a/deps/v8/src/objects/descriptor-array-inl.h
+++ b/deps/v8/src/objects/descriptor-array-inl.h
@@ -58,33 +58,35 @@ void DescriptorArray::CopyEnumCacheFrom(DescriptorArray array) {
set_enum_cache(array.enum_cache());
}
-int DescriptorArray::Search(Name name, int valid_descriptors) {
+InternalIndex DescriptorArray::Search(Name name, int valid_descriptors) {
DCHECK(name.IsUniqueName());
- return internal::Search<VALID_ENTRIES>(this, name, valid_descriptors,
- nullptr);
+ return InternalIndex(
+ internal::Search<VALID_ENTRIES>(this, name, valid_descriptors, nullptr));
}
-int DescriptorArray::Search(Name name, Map map) {
+InternalIndex DescriptorArray::Search(Name name, Map map) {
DCHECK(name.IsUniqueName());
int number_of_own_descriptors = map.NumberOfOwnDescriptors();
- if (number_of_own_descriptors == 0) return kNotFound;
+ if (number_of_own_descriptors == 0) return InternalIndex::NotFound();
return Search(name, number_of_own_descriptors);
}
-int DescriptorArray::SearchWithCache(Isolate* isolate, Name name, Map map) {
+InternalIndex DescriptorArray::SearchWithCache(Isolate* isolate, Name name,
+ Map map) {
DCHECK(name.IsUniqueName());
int number_of_own_descriptors = map.NumberOfOwnDescriptors();
- if (number_of_own_descriptors == 0) return kNotFound;
+ if (number_of_own_descriptors == 0) return InternalIndex::NotFound();
DescriptorLookupCache* cache = isolate->descriptor_lookup_cache();
int number = cache->Lookup(map, name);
if (number == DescriptorLookupCache::kAbsent) {
- number = Search(name, number_of_own_descriptors);
+ InternalIndex result = Search(name, number_of_own_descriptors);
+ number = result.is_found() ? result.as_int() : DescriptorArray::kNotFound;
cache->Update(map, name, number);
}
-
- return number;
+ if (number == DescriptorArray::kNotFound) return InternalIndex::NotFound();
+ return InternalIndex(number);
}
ObjectSlot DescriptorArray::GetFirstPointerSlot() {
@@ -102,26 +104,27 @@ ObjectSlot DescriptorArray::GetDescriptorSlot(int descriptor) {
return RawField(OffsetOfDescriptorAt(descriptor));
}
-Name DescriptorArray::GetKey(int descriptor_number) const {
+Name DescriptorArray::GetKey(InternalIndex descriptor_number) const {
Isolate* isolate = GetIsolateForPtrCompr(*this);
return GetKey(isolate, descriptor_number);
}
-Name DescriptorArray::GetKey(Isolate* isolate, int descriptor_number) const {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+Name DescriptorArray::GetKey(Isolate* isolate,
+ InternalIndex descriptor_number) const {
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
return Name::cast(EntryKeyField::Relaxed_Load(isolate, *this, entry_offset));
}
-void DescriptorArray::SetKey(int descriptor_number, Name key) {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+void DescriptorArray::SetKey(InternalIndex descriptor_number, Name key) {
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
EntryKeyField::Relaxed_Store(*this, entry_offset, key);
WRITE_BARRIER(*this, entry_offset + kEntryKeyOffset, key);
}
int DescriptorArray::GetSortedKeyIndex(int descriptor_number) {
- return GetDetails(descriptor_number).pointer();
+ return GetDetails(InternalIndex(descriptor_number)).pointer();
}
Name DescriptorArray::GetSortedKey(int descriptor_number) {
@@ -130,81 +133,83 @@ Name DescriptorArray::GetSortedKey(int descriptor_number) {
}
Name DescriptorArray::GetSortedKey(Isolate* isolate, int descriptor_number) {
- return GetKey(isolate, GetSortedKeyIndex(descriptor_number));
+ return GetKey(isolate, InternalIndex(GetSortedKeyIndex(descriptor_number)));
}
void DescriptorArray::SetSortedKey(int descriptor_number, int pointer) {
- PropertyDetails details = GetDetails(descriptor_number);
- SetDetails(descriptor_number, details.set_pointer(pointer));
+ PropertyDetails details = GetDetails(InternalIndex(descriptor_number));
+ SetDetails(InternalIndex(descriptor_number), details.set_pointer(pointer));
}
-Object DescriptorArray::GetStrongValue(int descriptor_number) {
+Object DescriptorArray::GetStrongValue(InternalIndex descriptor_number) {
Isolate* isolate = GetIsolateForPtrCompr(*this);
return GetStrongValue(isolate, descriptor_number);
}
Object DescriptorArray::GetStrongValue(Isolate* isolate,
- int descriptor_number) {
+ InternalIndex descriptor_number) {
return GetValue(isolate, descriptor_number).cast<Object>();
}
-void DescriptorArray::SetValue(int descriptor_number, MaybeObject value) {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+void DescriptorArray::SetValue(InternalIndex descriptor_number,
+ MaybeObject value) {
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
EntryValueField::Relaxed_Store(*this, entry_offset, value);
WEAK_WRITE_BARRIER(*this, entry_offset + kEntryValueOffset, value);
}
-MaybeObject DescriptorArray::GetValue(int descriptor_number) {
+MaybeObject DescriptorArray::GetValue(InternalIndex descriptor_number) {
Isolate* isolate = GetIsolateForPtrCompr(*this);
return GetValue(isolate, descriptor_number);
}
-MaybeObject DescriptorArray::GetValue(Isolate* isolate, int descriptor_number) {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+MaybeObject DescriptorArray::GetValue(Isolate* isolate,
+ InternalIndex descriptor_number) {
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
return EntryValueField::Relaxed_Load(isolate, *this, entry_offset);
}
-PropertyDetails DescriptorArray::GetDetails(int descriptor_number) {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+PropertyDetails DescriptorArray::GetDetails(InternalIndex descriptor_number) {
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
Smi details = EntryDetailsField::Relaxed_Load(*this, entry_offset);
return PropertyDetails(details);
}
-void DescriptorArray::SetDetails(int descriptor_number,
+void DescriptorArray::SetDetails(InternalIndex descriptor_number,
PropertyDetails details) {
- DCHECK_LT(descriptor_number, number_of_descriptors());
- int entry_offset = OffsetOfDescriptorAt(descriptor_number);
+ DCHECK_LT(descriptor_number.as_int(), number_of_descriptors());
+ int entry_offset = OffsetOfDescriptorAt(descriptor_number.as_int());
EntryDetailsField::Relaxed_Store(*this, entry_offset, details.AsSmi());
}
-int DescriptorArray::GetFieldIndex(int descriptor_number) {
+int DescriptorArray::GetFieldIndex(InternalIndex descriptor_number) {
DCHECK_EQ(GetDetails(descriptor_number).location(), kField);
return GetDetails(descriptor_number).field_index();
}
-FieldType DescriptorArray::GetFieldType(int descriptor_number) {
+FieldType DescriptorArray::GetFieldType(InternalIndex descriptor_number) {
Isolate* isolate = GetIsolateForPtrCompr(*this);
return GetFieldType(isolate, descriptor_number);
}
FieldType DescriptorArray::GetFieldType(Isolate* isolate,
- int descriptor_number) {
+ InternalIndex descriptor_number) {
DCHECK_EQ(GetDetails(descriptor_number).location(), kField);
MaybeObject wrapped_type = GetValue(isolate, descriptor_number);
return Map::UnwrapFieldType(wrapped_type);
}
-void DescriptorArray::Set(int descriptor_number, Name key, MaybeObject value,
- PropertyDetails details) {
+void DescriptorArray::Set(InternalIndex descriptor_number, Name key,
+ MaybeObject value, PropertyDetails details) {
SetKey(descriptor_number, key);
SetDetails(descriptor_number, details);
SetValue(descriptor_number, value);
}
-void DescriptorArray::Set(int descriptor_number, Descriptor* desc) {
+void DescriptorArray::Set(InternalIndex descriptor_number, Descriptor* desc) {
Name key = *desc->GetKey();
MaybeObject value = *desc->GetValue();
Set(descriptor_number, key, value, desc->GetDetails());
@@ -215,7 +220,7 @@ void DescriptorArray::Append(Descriptor* desc) {
int descriptor_number = number_of_descriptors();
DCHECK_LE(descriptor_number + 1, number_of_all_descriptors());
set_number_of_descriptors(descriptor_number + 1);
- Set(descriptor_number, desc);
+ Set(InternalIndex(descriptor_number), desc);
uint32_t hash = desc->GetKey()->Hash();