Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(522)

Unified Diff: src/objects.cc

Issue 2633553002: [runtime] Cleanup DescriptorArray interface, remove more PropertyType usages. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/objects.h ('k') | src/objects-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 75913925ab6e86b6dc7a3a0109d51d27f4048b71..aef8146f92e406c169e06a32c8143c497a4718ca 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -3738,11 +3738,10 @@ void MigrateFastToSlow(Handle<JSObject> object, Handle<Map> new_map,
for (int i = 0; i < real_size; i++) {
PropertyDetails details = descs->GetDetails(i);
Handle<Name> key(descs->GetKey(i));
- // TODO(ishell): Simplify the below code.
+ Handle<Object> value;
if (details.location() == kField) {
FieldIndex index = FieldIndex::ForDescriptor(*map, i);
if (details.kind() == kData) {
- Handle<Object> value;
if (object->IsUnboxedDoubleField(index)) {
double old_value = object->RawFastDoublePropertyAt(index);
value = isolate->factory()->NewHeapNumber(old_value);
@@ -3754,34 +3753,19 @@ void MigrateFastToSlow(Handle<JSObject> object, Handle<Map> new_map,
value = isolate->factory()->NewHeapNumber(old->value());
}
}
- PropertyDetails d(kData, details.attributes(), i + 1,
- PropertyCellType::kNoCell);
- dictionary = NameDictionary::Add(dictionary, key, value, d);
-
} else {
DCHECK_EQ(kAccessor, details.kind());
- Handle<Object> value(object->RawFastPropertyAt(index), isolate);
- PropertyDetails d(kAccessor, details.attributes(), i + 1,
- PropertyCellType::kNoCell);
- dictionary = NameDictionary::Add(dictionary, key, value, d);
+ value = handle(object->RawFastPropertyAt(index), isolate);
}
} else {
DCHECK_EQ(kDescriptor, details.location());
- if (details.kind() == kData) {
- Handle<Object> value(descs->GetConstant(i), isolate);
- PropertyDetails d(kData, details.attributes(), i + 1,
- PropertyCellType::kNoCell);
- dictionary = NameDictionary::Add(dictionary, key, value, d);
-
- } else {
- DCHECK_EQ(kAccessor, details.kind());
- Handle<Object> value(descs->GetCallbacksObject(i), isolate);
- PropertyDetails d(kAccessor, details.attributes(), i + 1,
- PropertyCellType::kNoCell);
- dictionary = NameDictionary::Add(dictionary, key, value, d);
- }
+ value = handle(descs->GetValue(i), isolate);
}
+ DCHECK(!value.is_null());
+ PropertyDetails d(details.kind(), details.attributes(), i + 1,
+ PropertyCellType::kNoCell);
+ dictionary = NameDictionary::Add(dictionary, key, value, d);
}
// Copy the next enumeration index from instance descriptor.
@@ -8520,7 +8504,7 @@ Object* JSObject::SlowReverseLookup(Object* value) {
} else {
DCHECK_EQ(kDescriptor, details.location());
if (details.kind() == kData) {
- if (descs->GetConstant(i) == value) {
+ if (descs->GetValue(i) == value) {
return descs->GetKey(i);
}
}
@@ -9136,9 +9120,9 @@ bool CanHoldValue(DescriptorArray* descriptors, int descriptor, Object* value) {
} else {
DCHECK_EQ(kDescriptor, details.location());
if (details.kind() == kData) {
- DCHECK(descriptors->GetConstant(descriptor) != value ||
+ DCHECK(descriptors->GetValue(descriptor) != value ||
value->FitsRepresentation(details.representation()));
- return descriptors->GetConstant(descriptor) == value;
+ return descriptors->GetValue(descriptor) == value;
} else {
DCHECK_EQ(kAccessor, details.kind());
return false;
@@ -9445,9 +9429,7 @@ Handle<DescriptorArray> DescriptorArray::CopyUpToAddAttributes(
details = details.CopyAddAttributes(
static_cast<PropertyAttributes>(attributes & mask));
}
- Descriptor inner_desc(
- handle(key), handle(value, desc->GetIsolate()), details);
- descriptors->SetDescriptor(i, &inner_desc);
+ descriptors->Set(i, key, value, details);
}
} else {
for (int i = 0; i < size; ++i) {
@@ -10110,17 +10092,11 @@ void DescriptorArray::SetEnumCache(Handle<DescriptorArray> descriptors,
}
}
-
void DescriptorArray::CopyFrom(int index, DescriptorArray* src) {
- Object* value = src->GetValue(index);
PropertyDetails details = src->GetDetails(index);
- Descriptor desc(handle(src->GetKey(index)),
- handle(value, src->GetIsolate()),
- details);
- SetDescriptor(index, &desc);
+ Set(index, src->GetKey(index), src->GetValue(index), details);
}
-
void DescriptorArray::Sort() {
// In-place heap sort.
int len = number_of_descriptors();
« no previous file with comments | « src/objects.h ('k') | src/objects-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698