| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 9edbdc9623475e24b2cfbc622a8f12a40c9eccde..7f2c1242b3601d0f6f984320e3143dd0402f583a 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -1269,8 +1269,8 @@ void JSObject::PrintInstanceMigration(FILE* file,
|
| if (!o_r.Equals(n_r)) {
|
| String::cast(o->GetKey(i))->PrintOn(file);
|
| PrintF(file, ":%s->%s ", o_r.Mnemonic(), n_r.Mnemonic());
|
| - } else if (o->GetDetails(i).type() == CONSTANT &&
|
| - n->GetDetails(i).type() == FIELD) {
|
| + } else if (o->GetDetails(i).type() == DATA_CONSTANT &&
|
| + n->GetDetails(i).type() == DATA_FIELD) {
|
| Name* name = o->GetKey(i);
|
| if (name->IsString()) {
|
| String::cast(name)->PrintOn(file);
|
| @@ -1648,7 +1648,8 @@ MaybeHandle<Map> Map::CopyWithField(Handle<Map> map,
|
| type = HeapType::Any(isolate);
|
| }
|
|
|
| - FieldDescriptor new_field_desc(name, index, type, attributes, representation);
|
| + DataFieldDescriptor new_field_desc(name, index, type, attributes,
|
| + representation);
|
| Handle<Map> new_map = Map::CopyAddDescriptor(map, &new_field_desc, flag);
|
| int unused_property_fields = new_map->unused_property_fields() - 1;
|
| if (unused_property_fields < 0) {
|
| @@ -1670,7 +1671,7 @@ MaybeHandle<Map> Map::CopyWithConstant(Handle<Map> map,
|
| }
|
|
|
| // Allocate new instance descriptors with (name, constant) added.
|
| - ConstantDescriptor new_constant_desc(name, constant, attributes);
|
| + DataConstantDescriptor new_constant_desc(name, constant, attributes);
|
| return Map::CopyAddDescriptor(map, &new_constant_desc, flag);
|
| }
|
|
|
| @@ -1691,7 +1692,7 @@ void JSObject::AddSlowProperty(Handle<JSObject> object,
|
| // Assign an enumeration index to the property and update
|
| // SetNextEnumerationIndex.
|
| int index = dict->NextEnumerationIndex();
|
| - PropertyDetails details(attributes, FIELD, index);
|
| + PropertyDetails details(attributes, DATA_FIELD, index);
|
| dict->SetNextEnumerationIndex(index + 1);
|
| dict->SetEntry(entry, name, cell, details);
|
| return;
|
| @@ -1700,7 +1701,7 @@ void JSObject::AddSlowProperty(Handle<JSObject> object,
|
| PropertyCell::SetValueInferType(cell, value);
|
| value = cell;
|
| }
|
| - PropertyDetails details(attributes, FIELD, 0);
|
| + PropertyDetails details(attributes, DATA_FIELD, 0);
|
| Handle<NameDictionary> result =
|
| NameDictionary::Add(dict, name, value, details);
|
| if (*dict != *result) object->set_properties(*result);
|
| @@ -1895,7 +1896,7 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
| } else {
|
| value = isolate->factory()->uninitialized_value();
|
| }
|
| - DCHECK(details.type() == FIELD);
|
| + DCHECK(details.type() == DATA_FIELD);
|
| int target_index = details.field_index() - inobject;
|
| DCHECK(target_index >= 0); // Must be a backing store index.
|
| new_storage->set(target_index, *value);
|
| @@ -1921,18 +1922,18 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
|
|
| for (int i = 0; i < old_nof; i++) {
|
| PropertyDetails details = new_descriptors->GetDetails(i);
|
| - if (details.type() != FIELD) continue;
|
| + if (details.type() != DATA_FIELD) continue;
|
| PropertyDetails old_details = old_descriptors->GetDetails(i);
|
| - if (old_details.type() == CALLBACKS) {
|
| + if (old_details.type() == ACCESSOR_CONSTANT) {
|
| DCHECK(details.representation().IsTagged());
|
| continue;
|
| }
|
| Representation old_representation = old_details.representation();
|
| Representation representation = details.representation();
|
| - DCHECK(old_details.type() == CONSTANT ||
|
| - old_details.type() == FIELD);
|
| + DCHECK(old_details.type() == DATA_CONSTANT ||
|
| + old_details.type() == DATA_FIELD);
|
| Handle<Object> value;
|
| - if (old_details.type() == CONSTANT) {
|
| + if (old_details.type() == DATA_CONSTANT) {
|
| value = handle(old_descriptors->GetValue(i), isolate);
|
| DCHECK(!old_representation.IsDouble() && !representation.IsDouble());
|
| } else {
|
| @@ -1963,7 +1964,7 @@ void JSObject::MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map) {
|
|
|
| for (int i = old_nof; i < new_nof; i++) {
|
| PropertyDetails details = new_descriptors->GetDetails(i);
|
| - if (details.type() != FIELD) continue;
|
| + if (details.type() != DATA_FIELD) continue;
|
| Handle<Object> value;
|
| if (details.representation().IsDouble()) {
|
| value = isolate->factory()->NewHeapNumber(0, MUTABLE);
|
| @@ -2026,7 +2027,7 @@ int Map::NumberOfFields() {
|
| DescriptorArray* descriptors = instance_descriptors();
|
| int result = 0;
|
| for (int i = 0; i < NumberOfOwnDescriptors(); i++) {
|
| - if (descriptors->GetDetails(i).type() == FIELD) result++;
|
| + if (descriptors->GetDetails(i).type() == DATA_FIELD) result++;
|
| }
|
| return result;
|
| }
|
| @@ -2045,7 +2046,7 @@ Handle<Map> Map::CopyGeneralizeAllRepresentations(Handle<Map> map,
|
|
|
| for (int i = 0; i < number_of_own_descriptors; i++) {
|
| descriptors->SetRepresentation(i, Representation::Tagged());
|
| - if (descriptors->GetDetails(i).type() == FIELD) {
|
| + if (descriptors->GetDetails(i).type() == DATA_FIELD) {
|
| descriptors->SetValue(i, HeapType::Any());
|
| }
|
| }
|
| @@ -2058,14 +2059,14 @@ Handle<Map> Map::CopyGeneralizeAllRepresentations(Handle<Map> map,
|
|
|
| // Unless the instance is being migrated, ensure that modify_index is a field.
|
| PropertyDetails details = descriptors->GetDetails(modify_index);
|
| - if (store_mode == FORCE_IN_OBJECT &&
|
| - (details.type() != FIELD || details.attributes() != attributes)) {
|
| - int field_index = details.type() == FIELD ? details.field_index()
|
| - : new_map->NumberOfFields();
|
| - FieldDescriptor d(handle(descriptors->GetKey(modify_index), isolate),
|
| - field_index, attributes, Representation::Tagged());
|
| + if (store_mode == FORCE_FIELD &&
|
| + (details.type() != DATA_FIELD || details.attributes() != attributes)) {
|
| + int field_index = details.type() == DATA_FIELD ? details.field_index()
|
| + : new_map->NumberOfFields();
|
| + DataFieldDescriptor d(handle(descriptors->GetKey(modify_index), isolate),
|
| + field_index, attributes, Representation::Tagged());
|
| descriptors->Replace(modify_index, &d);
|
| - if (details.type() != FIELD) {
|
| + if (details.type() != DATA_FIELD) {
|
| int unused_property_fields = new_map->unused_property_fields() - 1;
|
| if (unused_property_fields < 0) {
|
| unused_property_fields += JSObject::kFieldsAdded;
|
| @@ -2077,13 +2078,14 @@ Handle<Map> Map::CopyGeneralizeAllRepresentations(Handle<Map> map,
|
| }
|
|
|
| if (FLAG_trace_generalization) {
|
| - HeapType* field_type = (details.type() == FIELD)
|
| - ? map->instance_descriptors()->GetFieldType(modify_index)
|
| - : NULL;
|
| + HeapType* field_type =
|
| + (details.type() == DATA_FIELD)
|
| + ? map->instance_descriptors()->GetFieldType(modify_index)
|
| + : NULL;
|
| map->PrintGeneralization(
|
| stdout, reason, modify_index, new_map->NumberOfOwnDescriptors(),
|
| new_map->NumberOfOwnDescriptors(),
|
| - details.type() == CONSTANT && store_mode == FORCE_IN_OBJECT,
|
| + details.type() == DATA_CONSTANT && store_mode == FORCE_FIELD,
|
| details.representation(), Representation::Tagged(), field_type,
|
| HeapType::Any());
|
| }
|
| @@ -2191,7 +2193,7 @@ Map* Map::FindLastMatchMap(int verbatim,
|
| if (details.type() != next_details.type()) break;
|
| if (details.attributes() != next_details.attributes()) break;
|
| if (!details.representation().Equals(next_details.representation())) break;
|
| - if (next_details.type() == FIELD) {
|
| + if (next_details.type() == DATA_FIELD) {
|
| if (!descriptors->GetFieldType(i)->NowIs(
|
| next_descriptors->GetFieldType(i))) break;
|
| } else {
|
| @@ -2206,7 +2208,7 @@ Map* Map::FindLastMatchMap(int verbatim,
|
|
|
| Map* Map::FindFieldOwner(int descriptor) {
|
| DisallowHeapAllocation no_allocation;
|
| - DCHECK_EQ(FIELD, instance_descriptors()->GetDetails(descriptor).type());
|
| + DCHECK_EQ(DATA_FIELD, instance_descriptors()->GetDetails(descriptor).type());
|
| Map* result = this;
|
| while (true) {
|
| Object* back = result->GetBackPointer();
|
| @@ -2224,7 +2226,7 @@ void Map::UpdateFieldType(int descriptor, Handle<Name> name,
|
| Handle<HeapType> new_type) {
|
| DisallowHeapAllocation no_allocation;
|
| PropertyDetails details = instance_descriptors()->GetDetails(descriptor);
|
| - if (details.type() != FIELD) return;
|
| + if (details.type() != DATA_FIELD) return;
|
| if (HasTransitionArray()) {
|
| TransitionArray* transitions = this->transitions();
|
| for (int i = 0; i < transitions->number_of_transitions(); ++i) {
|
| @@ -2238,8 +2240,8 @@ void Map::UpdateFieldType(int descriptor, Handle<Name> name,
|
|
|
| // Skip if already updated the shared descriptor.
|
| if (instance_descriptors()->GetFieldType(descriptor) == *new_type) return;
|
| - FieldDescriptor d(name, instance_descriptors()->GetFieldIndex(descriptor),
|
| - new_type, details.attributes(), new_representation);
|
| + DataFieldDescriptor d(name, instance_descriptors()->GetFieldIndex(descriptor),
|
| + new_type, details.attributes(), new_representation);
|
| instance_descriptors()->Replace(descriptor, &d);
|
| }
|
|
|
| @@ -2351,7 +2353,7 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| // Doubles, however, would require a box allocation.
|
| if (old_representation.IsNone() && !new_representation.IsNone() &&
|
| !new_representation.IsDouble()) {
|
| - DCHECK(old_details.type() == FIELD);
|
| + DCHECK(old_details.type() == DATA_FIELD);
|
| if (FLAG_trace_generalization) {
|
| old_map->PrintGeneralization(
|
| stdout, "uninitialized field",
|
| @@ -2379,8 +2381,8 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| int root_nof = root_map->NumberOfOwnDescriptors();
|
| if (modify_index < root_nof) {
|
| PropertyDetails old_details = old_descriptors->GetDetails(modify_index);
|
| - if ((old_details.type() != FIELD && store_mode == FORCE_IN_OBJECT) ||
|
| - (old_details.type() == FIELD &&
|
| + if ((old_details.type() != DATA_FIELD && store_mode == FORCE_FIELD) ||
|
| + (old_details.type() == DATA_FIELD &&
|
| (!new_field_type->NowIs(old_descriptors->GetFieldType(modify_index)) ||
|
| !new_representation.fits_into(old_details.representation())))) {
|
| return CopyGeneralizeAllRepresentations(old_map, modify_index, store_mode,
|
| @@ -2404,7 +2406,7 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| PropertyType old_type = old_details.type();
|
| PropertyType tmp_type = tmp_details.type();
|
| DCHECK_EQ(old_details.attributes(), tmp_details.attributes());
|
| - if ((tmp_type == CALLBACKS || old_type == CALLBACKS) &&
|
| + if ((tmp_type == ACCESSOR_CONSTANT || old_type == ACCESSOR_CONSTANT) &&
|
| (tmp_type != old_type ||
|
| tmp_descriptors->GetValue(i) != old_descriptors->GetValue(i))) {
|
| return CopyGeneralizeAllRepresentations(old_map, modify_index, store_mode,
|
| @@ -2417,19 +2419,20 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| modify_index == i)) {
|
| break;
|
| }
|
| - if (tmp_type == FIELD) {
|
| + if (tmp_type == DATA_FIELD) {
|
| // Generalize the field type as necessary.
|
| - Handle<HeapType> old_field_type = (old_type == FIELD)
|
| - ? handle(old_descriptors->GetFieldType(i), isolate)
|
| - : old_descriptors->GetValue(i)->OptimalType(
|
| - isolate, tmp_representation);
|
| + Handle<HeapType> old_field_type =
|
| + (old_type == DATA_FIELD)
|
| + ? handle(old_descriptors->GetFieldType(i), isolate)
|
| + : old_descriptors->GetValue(i)
|
| + ->OptimalType(isolate, tmp_representation);
|
| if (modify_index == i) {
|
| old_field_type = GeneralizeFieldType(
|
| new_field_type, old_field_type, isolate);
|
| }
|
| GeneralizeFieldType(tmp_map, i, tmp_representation, old_field_type);
|
| - } else if (tmp_type == CONSTANT) {
|
| - if (old_type != CONSTANT ||
|
| + } else if (tmp_type == DATA_CONSTANT) {
|
| + if (old_type != DATA_CONSTANT ||
|
| old_descriptors->GetConstant(i) != tmp_descriptors->GetConstant(i)) {
|
| break;
|
| }
|
| @@ -2445,14 +2448,14 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| target_map->instance_descriptors(), isolate);
|
| int target_nof = target_map->NumberOfOwnDescriptors();
|
| if (target_nof == old_nof &&
|
| - (store_mode != FORCE_IN_OBJECT ||
|
| - target_descriptors->GetDetails(modify_index).type() == FIELD)) {
|
| + (store_mode != FORCE_FIELD ||
|
| + target_descriptors->GetDetails(modify_index).type() == DATA_FIELD)) {
|
| DCHECK(modify_index < target_nof);
|
| DCHECK(new_representation.fits_into(
|
| target_descriptors->GetDetails(modify_index).representation()));
|
| - DCHECK(target_descriptors->GetDetails(modify_index).type() != FIELD ||
|
| - new_field_type->NowIs(
|
| - target_descriptors->GetFieldType(modify_index)));
|
| + DCHECK(
|
| + target_descriptors->GetDetails(modify_index).type() != DATA_FIELD ||
|
| + new_field_type->NowIs(target_descriptors->GetFieldType(modify_index)));
|
| return target_map;
|
| }
|
|
|
| @@ -2470,7 +2473,8 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| // Check if target map is compatible.
|
| PropertyDetails tmp_details = tmp_descriptors->GetDetails(i);
|
| DCHECK_EQ(old_details.attributes(), tmp_details.attributes());
|
| - if ((tmp_details.type() == CALLBACKS || old_details.type() == CALLBACKS) &&
|
| + if ((tmp_details.type() == ACCESSOR_CONSTANT ||
|
| + old_details.type() == ACCESSOR_CONSTANT) &&
|
| (tmp_details.type() != old_details.type() ||
|
| tmp_descriptors->GetValue(i) != old_descriptors->GetValue(i))) {
|
| return CopyGeneralizeAllRepresentations(old_map, modify_index, store_mode,
|
| @@ -2498,7 +2502,7 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| int current_offset = 0;
|
| for (int i = 0; i < root_nof; ++i) {
|
| PropertyDetails old_details = old_descriptors->GetDetails(i);
|
| - if (old_details.type() == FIELD) {
|
| + if (old_details.type() == DATA_FIELD) {
|
| current_offset += old_details.field_width_in_words();
|
| }
|
| Descriptor d(handle(old_descriptors->GetKey(i), isolate),
|
| @@ -2520,30 +2524,33 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| new_representation.generalize(target_details.representation()));
|
| }
|
| DCHECK_EQ(old_details.attributes(), target_details.attributes());
|
| - if (old_details.type() == FIELD || target_details.type() == FIELD ||
|
| - (modify_index == i && store_mode == FORCE_IN_OBJECT) ||
|
| + if (old_details.type() == DATA_FIELD ||
|
| + target_details.type() == DATA_FIELD ||
|
| + (modify_index == i && store_mode == FORCE_FIELD) ||
|
| (target_descriptors->GetValue(i) != old_descriptors->GetValue(i))) {
|
| - Handle<HeapType> old_field_type = (old_details.type() == FIELD)
|
| - ? handle(old_descriptors->GetFieldType(i), isolate)
|
| - : old_descriptors->GetValue(i)->OptimalType(
|
| - isolate, target_details.representation());
|
| - Handle<HeapType> target_field_type = (target_details.type() == FIELD)
|
| - ? handle(target_descriptors->GetFieldType(i), isolate)
|
| - : target_descriptors->GetValue(i)->OptimalType(
|
| - isolate, target_details.representation());
|
| + Handle<HeapType> old_field_type =
|
| + (old_details.type() == DATA_FIELD)
|
| + ? handle(old_descriptors->GetFieldType(i), isolate)
|
| + : old_descriptors->GetValue(i)
|
| + ->OptimalType(isolate, target_details.representation());
|
| + Handle<HeapType> target_field_type =
|
| + (target_details.type() == DATA_FIELD)
|
| + ? handle(target_descriptors->GetFieldType(i), isolate)
|
| + : target_descriptors->GetValue(i)
|
| + ->OptimalType(isolate, target_details.representation());
|
| target_field_type = GeneralizeFieldType(
|
| target_field_type, old_field_type, isolate);
|
| if (modify_index == i) {
|
| target_field_type = GeneralizeFieldType(
|
| target_field_type, new_field_type, isolate);
|
| }
|
| - FieldDescriptor d(target_key, current_offset, target_field_type,
|
| - target_details.attributes(),
|
| - target_details.representation());
|
| + DataFieldDescriptor d(target_key, current_offset, target_field_type,
|
| + target_details.attributes(),
|
| + target_details.representation());
|
| current_offset += d.GetDetails().field_width_in_words();
|
| new_descriptors->Set(i, &d);
|
| } else {
|
| - DCHECK_NE(FIELD, target_details.type());
|
| + DCHECK_NE(DATA_FIELD, target_details.type());
|
| Descriptor d(target_key,
|
| handle(target_descriptors->GetValue(i), isolate),
|
| target_details);
|
| @@ -2559,21 +2566,23 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| old_details = old_details.CopyWithRepresentation(
|
| new_representation.generalize(old_details.representation()));
|
| }
|
| - if (old_details.type() == FIELD) {
|
| + if (old_details.type() == DATA_FIELD) {
|
| Handle<HeapType> old_field_type(
|
| old_descriptors->GetFieldType(i), isolate);
|
| if (modify_index == i) {
|
| old_field_type = GeneralizeFieldType(
|
| old_field_type, new_field_type, isolate);
|
| }
|
| - FieldDescriptor d(old_key, current_offset, old_field_type,
|
| - old_details.attributes(), old_details.representation());
|
| + DataFieldDescriptor d(old_key, current_offset, old_field_type,
|
| + old_details.attributes(),
|
| + old_details.representation());
|
| current_offset += d.GetDetails().field_width_in_words();
|
| new_descriptors->Set(i, &d);
|
| } else {
|
| - DCHECK(old_details.type() == CONSTANT || old_details.type() == CALLBACKS);
|
| - if (modify_index == i && store_mode == FORCE_IN_OBJECT) {
|
| - FieldDescriptor d(
|
| + DCHECK(old_details.type() == DATA_CONSTANT ||
|
| + old_details.type() == ACCESSOR_CONSTANT);
|
| + if (modify_index == i && store_mode == FORCE_FIELD) {
|
| + DataFieldDescriptor d(
|
| old_key, current_offset,
|
| GeneralizeFieldType(old_descriptors->GetValue(i)->OptimalType(
|
| isolate, old_details.representation()),
|
| @@ -2582,7 +2591,7 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| current_offset += d.GetDetails().field_width_in_words();
|
| new_descriptors->Set(i, &d);
|
| } else {
|
| - DCHECK_NE(FIELD, old_details.type());
|
| + DCHECK_NE(DATA_FIELD, old_details.type());
|
| Descriptor d(old_key,
|
| handle(old_descriptors->GetValue(i), isolate),
|
| old_details);
|
| @@ -2593,8 +2602,8 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
|
|
| new_descriptors->Sort();
|
|
|
| - DCHECK(store_mode != FORCE_IN_OBJECT ||
|
| - new_descriptors->GetDetails(modify_index).type() == FIELD);
|
| + DCHECK(store_mode != FORCE_FIELD ||
|
| + new_descriptors->GetDetails(modify_index).type() == DATA_FIELD);
|
|
|
| Handle<Map> split_map(root_map->FindLastMatchMap(
|
| root_nof, old_nof, *new_descriptors), isolate);
|
| @@ -2620,17 +2629,21 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| if (FLAG_trace_generalization) {
|
| PropertyDetails old_details = old_descriptors->GetDetails(modify_index);
|
| PropertyDetails new_details = new_descriptors->GetDetails(modify_index);
|
| - Handle<HeapType> old_field_type = (old_details.type() == FIELD)
|
| - ? handle(old_descriptors->GetFieldType(modify_index), isolate)
|
| - : HeapType::Constant(handle(old_descriptors->GetValue(modify_index),
|
| - isolate), isolate);
|
| - Handle<HeapType> new_field_type = (new_details.type() == FIELD)
|
| - ? handle(new_descriptors->GetFieldType(modify_index), isolate)
|
| - : HeapType::Constant(handle(new_descriptors->GetValue(modify_index),
|
| - isolate), isolate);
|
| + Handle<HeapType> old_field_type =
|
| + (old_details.type() == DATA_FIELD)
|
| + ? handle(old_descriptors->GetFieldType(modify_index), isolate)
|
| + : HeapType::Constant(
|
| + handle(old_descriptors->GetValue(modify_index), isolate),
|
| + isolate);
|
| + Handle<HeapType> new_field_type =
|
| + (new_details.type() == DATA_FIELD)
|
| + ? handle(new_descriptors->GetFieldType(modify_index), isolate)
|
| + : HeapType::Constant(
|
| + handle(new_descriptors->GetValue(modify_index), isolate),
|
| + isolate);
|
| old_map->PrintGeneralization(
|
| stdout, "", modify_index, split_nof, old_nof,
|
| - old_details.type() == CONSTANT && store_mode == FORCE_IN_OBJECT,
|
| + old_details.type() == DATA_CONSTANT && store_mode == FORCE_FIELD,
|
| old_details.representation(), new_details.representation(),
|
| *old_field_type, *new_field_type);
|
| }
|
| @@ -2646,15 +2659,15 @@ Handle<Map> Map::GeneralizeRepresentation(Handle<Map> old_map,
|
| }
|
|
|
|
|
| -// Generalize the representation of all FIELD descriptors.
|
| +// Generalize the representation of all DATA_FIELD descriptors.
|
| Handle<Map> Map::GeneralizeAllFieldRepresentations(
|
| Handle<Map> map) {
|
| Handle<DescriptorArray> descriptors(map->instance_descriptors());
|
| for (int i = 0; i < map->NumberOfOwnDescriptors(); ++i) {
|
| - if (descriptors->GetDetails(i).type() == FIELD) {
|
| + if (descriptors->GetDetails(i).type() == DATA_FIELD) {
|
| map = GeneralizeRepresentation(map, i, Representation::Tagged(),
|
| HeapType::Any(map->GetIsolate()),
|
| - FORCE_IN_OBJECT);
|
| + FORCE_FIELD);
|
| }
|
| }
|
| return map;
|
| @@ -2718,14 +2731,14 @@ MaybeHandle<Map> Map::TryUpdateInternal(Handle<Map> old_map) {
|
| Object* new_value = new_descriptors->GetValue(i);
|
| Object* old_value = old_descriptors->GetValue(i);
|
| switch (new_details.type()) {
|
| - case FIELD: {
|
| + case DATA_FIELD: {
|
| PropertyType old_type = old_details.type();
|
| - if (old_type == FIELD) {
|
| + if (old_type == DATA_FIELD) {
|
| if (!HeapType::cast(old_value)->NowIs(HeapType::cast(new_value))) {
|
| return MaybeHandle<Map>();
|
| }
|
| } else {
|
| - DCHECK(old_type == CONSTANT);
|
| + DCHECK(old_type == DATA_CONSTANT);
|
| if (!HeapType::cast(new_value)->NowContains(old_value)) {
|
| return MaybeHandle<Map>();
|
| }
|
| @@ -2736,9 +2749,9 @@ MaybeHandle<Map> Map::TryUpdateInternal(Handle<Map> old_map) {
|
| DCHECK(HeapType::Any()->Is(HeapType::cast(new_value)));
|
| break;
|
|
|
| - case CONSTANT:
|
| - case CALLBACKS:
|
| - if (old_details.location() == IN_OBJECT || old_value != new_value) {
|
| + case DATA_CONSTANT:
|
| + case ACCESSOR_CONSTANT:
|
| + if (old_details.location() == FIELD || old_value != new_value) {
|
| return MaybeHandle<Map>();
|
| }
|
| break;
|
| @@ -3036,7 +3049,7 @@ MaybeHandle<Object> JSObject::SetElementWithCallbackSetterInPrototypes(
|
| int entry = dictionary->FindEntry(index);
|
| if (entry != SeededNumberDictionary::kNotFound) {
|
| PropertyDetails details = dictionary->DetailsAt(entry);
|
| - if (details.type() == CALLBACKS) {
|
| + if (details.type() == ACCESSOR_CONSTANT) {
|
| *found = true;
|
| Handle<Object> structure(dictionary->ValueAt(entry), isolate);
|
| return SetElementWithCallback(object, structure, index, value, js_proto,
|
| @@ -3143,7 +3156,7 @@ struct DescriptorArrayAppender {
|
| int valid_descriptors,
|
| Handle<DescriptorArray> array) {
|
| DisallowHeapAllocation no_gc;
|
| - CallbacksDescriptor desc(key, entry, entry->property_attributes());
|
| + AccessorConstantDescriptor desc(key, entry, entry->property_attributes());
|
| array->Append(&desc);
|
| }
|
| };
|
| @@ -3773,7 +3786,7 @@ void JSObject::WriteToField(int descriptor, Object* value) {
|
| DescriptorArray* desc = map()->instance_descriptors();
|
| PropertyDetails details = desc->GetDetails(descriptor);
|
|
|
| - DCHECK(details.type() == FIELD);
|
| + DCHECK(details.type() == DATA_FIELD);
|
|
|
| FieldIndex index = FieldIndex::ForDescriptor(map(), descriptor);
|
| if (details.representation().IsDouble()) {
|
| @@ -4211,13 +4224,13 @@ void JSObject::MigrateFastToSlow(Handle<JSObject> object,
|
| PropertyDetails details = descs->GetDetails(i);
|
| Handle<Name> key(descs->GetKey(i));
|
| switch (details.type()) {
|
| - case CONSTANT: {
|
| + case DATA_CONSTANT: {
|
| Handle<Object> value(descs->GetConstant(i), isolate);
|
| - PropertyDetails d(details.attributes(), FIELD, i + 1);
|
| + PropertyDetails d(details.attributes(), DATA_FIELD, i + 1);
|
| dictionary = NameDictionary::Add(dictionary, key, value, d);
|
| break;
|
| }
|
| - case FIELD: {
|
| + case DATA_FIELD: {
|
| FieldIndex index = FieldIndex::ForDescriptor(*map, i);
|
| Handle<Object> value;
|
| if (object->IsUnboxedDoubleField(index)) {
|
| @@ -4231,20 +4244,20 @@ void JSObject::MigrateFastToSlow(Handle<JSObject> object,
|
| value = isolate->factory()->NewHeapNumber(old->value());
|
| }
|
| }
|
| - PropertyDetails d(details.attributes(), FIELD, i + 1);
|
| + PropertyDetails d(details.attributes(), DATA_FIELD, i + 1);
|
| dictionary = NameDictionary::Add(dictionary, key, value, d);
|
| break;
|
| }
|
| case ACCESSOR_FIELD: {
|
| FieldIndex index = FieldIndex::ForDescriptor(*map, i);
|
| Handle<Object> value(object->RawFastPropertyAt(index), isolate);
|
| - PropertyDetails d(details.attributes(), CALLBACKS, i + 1);
|
| + PropertyDetails d(details.attributes(), ACCESSOR_CONSTANT, i + 1);
|
| dictionary = NameDictionary::Add(dictionary, key, value, d);
|
| break;
|
| }
|
| - case CALLBACKS: {
|
| + case ACCESSOR_CONSTANT: {
|
| Handle<Object> value(descs->GetCallbacksObject(i), isolate);
|
| - PropertyDetails d(details.attributes(), CALLBACKS, i + 1);
|
| + PropertyDetails d(details.attributes(), ACCESSOR_CONSTANT, i + 1);
|
| dictionary = NameDictionary::Add(dictionary, key, value, d);
|
| break;
|
| }
|
| @@ -4328,7 +4341,7 @@ void JSObject::MigrateSlowToFast(Handle<JSObject> object,
|
|
|
| Object* value = dictionary->ValueAt(index);
|
| PropertyType type = dictionary->DetailsAt(index).type();
|
| - if (type == FIELD && !value->IsJSFunction()) {
|
| + if (type == DATA_FIELD && !value->IsJSFunction()) {
|
| number_of_fields += 1;
|
| }
|
| }
|
| @@ -4397,9 +4410,10 @@ void JSObject::MigrateSlowToFast(Handle<JSObject> object,
|
| PropertyType type = details.type();
|
|
|
| if (value->IsJSFunction()) {
|
| - ConstantDescriptor d(key, handle(value, isolate), details.attributes());
|
| + DataConstantDescriptor d(key, handle(value, isolate),
|
| + details.attributes());
|
| descriptors->Set(enumeration_index - 1, &d);
|
| - } else if (type == FIELD) {
|
| + } else if (type == DATA_FIELD) {
|
| if (current_offset < inobject_props) {
|
| object->InObjectPropertyAtPut(current_offset, value,
|
| UPDATE_WRITE_BARRIER);
|
| @@ -4407,13 +4421,14 @@ void JSObject::MigrateSlowToFast(Handle<JSObject> object,
|
| int offset = current_offset - inobject_props;
|
| fields->set(offset, value);
|
| }
|
| - FieldDescriptor d(key, current_offset, details.attributes(),
|
| - // TODO(verwaest): value->OptimalRepresentation();
|
| - Representation::Tagged());
|
| + DataFieldDescriptor d(key, current_offset, details.attributes(),
|
| + // TODO(verwaest): value->OptimalRepresentation();
|
| + Representation::Tagged());
|
| current_offset += d.GetDetails().field_width_in_words();
|
| descriptors->Set(enumeration_index - 1, &d);
|
| - } else if (type == CALLBACKS) {
|
| - CallbacksDescriptor d(key, handle(value, isolate), details.attributes());
|
| + } else if (type == ACCESSOR_CONSTANT) {
|
| + AccessorConstantDescriptor d(key, handle(value, isolate),
|
| + details.attributes());
|
| descriptors->Set(enumeration_index - 1, &d);
|
| } else {
|
| UNREACHABLE();
|
| @@ -4475,7 +4490,7 @@ static Handle<SeededNumberDictionary> CopyFastElementsToDictionary(
|
| value = handle(Handle<FixedArray>::cast(array)->get(i), isolate);
|
| }
|
| if (!value->IsTheHole()) {
|
| - PropertyDetails details(NONE, FIELD, 0);
|
| + PropertyDetails details(NONE, DATA_FIELD, 0);
|
| dictionary =
|
| SeededNumberDictionary::AddNumberEntry(dictionary, i, value, details);
|
| }
|
| @@ -4744,7 +4759,7 @@ Object* JSObject::GetHiddenPropertiesHashTable() {
|
| int sorted_index = descriptors->GetSortedKeyIndex(0);
|
| if (descriptors->GetKey(sorted_index) == GetHeap()->hidden_string() &&
|
| sorted_index < map()->NumberOfOwnDescriptors()) {
|
| - DCHECK(descriptors->GetType(sorted_index) == FIELD);
|
| + DCHECK(descriptors->GetType(sorted_index) == DATA_FIELD);
|
| DCHECK(descriptors->GetDetails(sorted_index).representation().
|
| IsCompatibleForLoad(Representation::Tagged()));
|
| FieldIndex index = FieldIndex::ForDescriptor(this->map(),
|
| @@ -5285,7 +5300,7 @@ static void ApplyAttributesToDictionary(Dictionary* dictionary,
|
| PropertyDetails details = dictionary->DetailsAt(i);
|
| int attrs = attributes;
|
| // READ_ONLY is an invalid attribute for JS setters/getters.
|
| - if ((attributes & READ_ONLY) && details.type() == CALLBACKS) {
|
| + if ((attributes & READ_ONLY) && details.type() == ACCESSOR_CONSTANT) {
|
| Object* v = dictionary->ValueAt(i);
|
| if (v->IsPropertyCell()) v = PropertyCell::cast(v)->value();
|
| if (v->IsAccessorPair()) attrs &= ~READ_ONLY;
|
| @@ -5525,7 +5540,7 @@ MaybeHandle<JSObject> JSObjectWalkVisitor<ContextObject>::StructureWalk(
|
| int limit = copy->map()->NumberOfOwnDescriptors();
|
| for (int i = 0; i < limit; i++) {
|
| PropertyDetails details = descriptors->GetDetails(i);
|
| - if (details.type() != FIELD) continue;
|
| + if (details.type() != DATA_FIELD) continue;
|
| FieldIndex index = FieldIndex::ForDescriptor(copy->map(), i);
|
| if (object->IsUnboxedDoubleField(index)) {
|
| if (copying) {
|
| @@ -5750,7 +5765,7 @@ int Map::NextFreePropertyIndex() {
|
| DescriptorArray* descs = instance_descriptors();
|
| for (int i = 0; i < number_of_own_descriptors; i++) {
|
| PropertyDetails details = descs->GetDetails(i);
|
| - if (details.type() == FIELD) {
|
| + if (details.type() == DATA_FIELD) {
|
| int candidate = details.field_index() + details.field_width_in_words();
|
| if (candidate > free_index) free_index = candidate;
|
| }
|
| @@ -5841,7 +5856,7 @@ static Handle<FixedArray> GetEnumPropertyKeys(Handle<JSObject> object,
|
| if (!(details.IsDontEnum() || key->IsSymbol())) {
|
| storage->set(index, key);
|
| if (!indices.is_null()) {
|
| - if (details.type() != FIELD) {
|
| + if (details.type() != DATA_FIELD) {
|
| indices = Handle<FixedArray>();
|
| } else {
|
| FieldIndex field_index = FieldIndex::ForDescriptor(*map, i);
|
| @@ -6004,12 +6019,11 @@ static bool UpdateGetterSetterInDictionary(
|
| if (entry != SeededNumberDictionary::kNotFound) {
|
| Object* result = dictionary->ValueAt(entry);
|
| PropertyDetails details = dictionary->DetailsAt(entry);
|
| - if (details.type() == CALLBACKS && result->IsAccessorPair()) {
|
| + if (details.type() == ACCESSOR_CONSTANT && result->IsAccessorPair()) {
|
| DCHECK(details.IsConfigurable());
|
| if (details.attributes() != attributes) {
|
| dictionary->DetailsAtPut(
|
| - entry,
|
| - PropertyDetails(attributes, CALLBACKS, index));
|
| + entry, PropertyDetails(attributes, ACCESSOR_CONSTANT, index));
|
| }
|
| AccessorPair::cast(result)->SetComponents(getter, setter);
|
| return true;
|
| @@ -6111,14 +6125,14 @@ void JSObject::SetElementCallback(Handle<JSObject> object,
|
| Handle<Object> structure,
|
| PropertyAttributes attributes) {
|
| Heap* heap = object->GetHeap();
|
| - PropertyDetails details = PropertyDetails(attributes, CALLBACKS, 0);
|
| + PropertyDetails details = PropertyDetails(attributes, ACCESSOR_CONSTANT, 0);
|
|
|
| // Normalize elements to make this operation simple.
|
| bool had_dictionary_elements = object->HasDictionaryElements();
|
| Handle<SeededNumberDictionary> dictionary = NormalizeElements(object);
|
| DCHECK(object->HasDictionaryElements() ||
|
| object->HasDictionaryArgumentsElements());
|
| - // Update the dictionary with the new CALLBACKS property.
|
| + // Update the dictionary with the new ACCESSOR_CONSTANT property.
|
| dictionary = SeededNumberDictionary::Set(dictionary, index, structure,
|
| details);
|
| dictionary->set_requires_slow_elements();
|
| @@ -6176,8 +6190,8 @@ void JSObject::SetPropertyCallback(Handle<JSObject> object,
|
| Deoptimizer::DeoptimizeGlobalObject(*object);
|
| }
|
|
|
| - // Update the dictionary with the new CALLBACKS property.
|
| - PropertyDetails details = PropertyDetails(attributes, CALLBACKS, 0);
|
| + // Update the dictionary with the new ACCESSOR_CONSTANT property.
|
| + PropertyDetails details = PropertyDetails(attributes, ACCESSOR_CONSTANT, 0);
|
| SetNormalizedProperty(object, name, structure, details);
|
|
|
| ReoptimizeIfPrototype(object);
|
| @@ -6391,7 +6405,7 @@ MaybeHandle<Object> JSObject::GetAccessor(Handle<JSObject> object,
|
| int entry = dictionary->FindEntry(index);
|
| if (entry != SeededNumberDictionary::kNotFound) {
|
| Object* element = dictionary->ValueAt(entry);
|
| - if (dictionary->DetailsAt(entry).type() == CALLBACKS &&
|
| + if (dictionary->DetailsAt(entry).type() == ACCESSOR_CONSTANT &&
|
| element->IsAccessorPair()) {
|
| return handle(AccessorPair::cast(element)->GetComponent(component),
|
| isolate);
|
| @@ -6442,7 +6456,7 @@ Object* JSObject::SlowReverseLookup(Object* value) {
|
| DescriptorArray* descs = map()->instance_descriptors();
|
| bool value_is_number = value->IsNumber();
|
| for (int i = 0; i < number_of_own_descriptors; i++) {
|
| - if (descs->GetType(i) == FIELD) {
|
| + if (descs->GetType(i) == DATA_FIELD) {
|
| FieldIndex field_index = FieldIndex::ForDescriptor(map(), i);
|
| if (IsUnboxedDoubleField(field_index)) {
|
| if (value_is_number) {
|
| @@ -6462,7 +6476,7 @@ Object* JSObject::SlowReverseLookup(Object* value) {
|
| return descs->GetKey(i);
|
| }
|
| }
|
| - } else if (descs->GetType(i) == CONSTANT) {
|
| + } else if (descs->GetType(i) == DATA_CONSTANT) {
|
| if (descs->GetConstant(i) == value) {
|
| return descs->GetKey(i);
|
| }
|
| @@ -6707,7 +6721,7 @@ Handle<Map> Map::CopyReplaceDescriptors(
|
| int length = descriptors->number_of_descriptors();
|
| for (int i = 0; i < length; i++) {
|
| descriptors->SetRepresentation(i, Representation::Tagged());
|
| - if (descriptors->GetDetails(i).type() == FIELD) {
|
| + if (descriptors->GetDetails(i).type() == DATA_FIELD) {
|
| descriptors->SetValue(i, HeapType::Any());
|
| }
|
| }
|
| @@ -6746,7 +6760,7 @@ Handle<Map> Map::CopyInstallDescriptors(
|
|
|
| int unused_property_fields = map->unused_property_fields();
|
| PropertyDetails details = descriptors->GetDetails(new_descriptor);
|
| - if (details.type() == FIELD) {
|
| + if (details.type() == DATA_FIELD) {
|
| unused_property_fields = map->unused_property_fields() - 1;
|
| if (unused_property_fields < 0) {
|
| unused_property_fields += JSObject::kFieldsAdded;
|
| @@ -6910,17 +6924,17 @@ Handle<Map> Map::CopyForPreventExtensions(Handle<Map> map,
|
| bool DescriptorArray::CanHoldValue(int descriptor, Object* value) {
|
| PropertyDetails details = GetDetails(descriptor);
|
| switch (details.type()) {
|
| - case FIELD:
|
| + case DATA_FIELD:
|
| return value->FitsRepresentation(details.representation()) &&
|
| GetFieldType(descriptor)->NowContains(value);
|
|
|
| - case CONSTANT:
|
| + case DATA_CONSTANT:
|
| DCHECK(GetConstant(descriptor) != value ||
|
| value->FitsRepresentation(details.representation()));
|
| return GetConstant(descriptor) == value;
|
|
|
| case ACCESSOR_FIELD:
|
| - case CALLBACKS:
|
| + case ACCESSOR_CONSTANT:
|
| return false;
|
| }
|
|
|
| @@ -6946,7 +6960,7 @@ Handle<Map> Map::PrepareForDataProperty(Handle<Map> map, int descriptor,
|
| Handle<HeapType> type = value->OptimalType(isolate, representation);
|
|
|
| return GeneralizeRepresentation(map, descriptor, representation, type,
|
| - FORCE_IN_OBJECT);
|
| + FORCE_FIELD);
|
| }
|
|
|
|
|
| @@ -7010,9 +7024,8 @@ Handle<Map> Map::ReconfigureDataProperty(Handle<Map> map, int descriptor,
|
|
|
| // For now, give up on transitioning and just create a unique map.
|
| // TODO(verwaest/ishell): Cache transitions with different attributes.
|
| - return CopyGeneralizeAllRepresentations(map, descriptor, FORCE_IN_OBJECT,
|
| - attributes,
|
| - "GenAll_AttributesMismatch");
|
| + return CopyGeneralizeAllRepresentations(
|
| + map, descriptor, FORCE_FIELD, attributes, "GenAll_AttributesMismatch");
|
| }
|
|
|
|
|
| @@ -7069,7 +7082,7 @@ Handle<Map> Map::TransitionToAccessorProperty(Handle<Map> map,
|
| return Map::Normalize(map, mode, "AccessorsOverwritingNonLast");
|
| }
|
| PropertyDetails old_details = old_descriptors->GetDetails(descriptor);
|
| - if (old_details.type() != CALLBACKS) {
|
| + if (old_details.type() != ACCESSOR_CONSTANT) {
|
| return Map::Normalize(map, mode, "AccessorsOverwritingNonAccessors");
|
| }
|
|
|
| @@ -7099,7 +7112,7 @@ Handle<Map> Map::TransitionToAccessorProperty(Handle<Map> map,
|
|
|
| pair->set(component, *accessor);
|
| TransitionFlag flag = INSERT_TRANSITION;
|
| - CallbacksDescriptor new_desc(name, pair, attributes);
|
| + AccessorConstantDescriptor new_desc(name, pair, attributes);
|
| return Map::CopyInsertDescriptor(map, &new_desc, flag);
|
| }
|
|
|
| @@ -7183,7 +7196,7 @@ Handle<DescriptorArray> DescriptorArray::CopyUpToAddAttributes(
|
| if (!key->IsSymbol() || !Symbol::cast(key)->is_private()) {
|
| int mask = DONT_DELETE | DONT_ENUM;
|
| // READ_ONLY is an invalid attribute for JS setters/getters.
|
| - if (details.type() != CALLBACKS || !value->IsAccessorPair()) {
|
| + if (details.type() != ACCESSOR_CONSTANT || !value->IsAccessorPair()) {
|
| mask |= READ_ONLY;
|
| }
|
| details = details.CopyAddAttributes(
|
| @@ -9653,7 +9666,7 @@ void JSObject::OptimizeAsPrototype(Handle<JSObject> object,
|
| if (object->IsGlobalObject()) return;
|
| if (object->IsJSGlobalProxy()) return;
|
| if (mode == FAST_PROTOTYPE && !object->map()->is_prototype_map()) {
|
| - // First normalize to ensure all JSFunctions are CONSTANT.
|
| + // First normalize to ensure all JSFunctions are DATA_CONSTANT.
|
| JSObject::NormalizeProperties(object, KEEP_INOBJECT_PROPERTIES, 0,
|
| "NormalizeAsPrototype");
|
| }
|
| @@ -12432,7 +12445,7 @@ MaybeHandle<Object> JSObject::SetDictionaryElement(
|
| if (entry != SeededNumberDictionary::kNotFound) {
|
| Handle<Object> element(dictionary->ValueAt(entry), isolate);
|
| PropertyDetails details = dictionary->DetailsAt(entry);
|
| - if (details.type() == CALLBACKS && set_mode == SET_PROPERTY) {
|
| + if (details.type() == ACCESSOR_CONSTANT && set_mode == SET_PROPERTY) {
|
| return SetElementWithCallback(object, element, index, value, object,
|
| strict_mode);
|
| } else {
|
| @@ -12442,7 +12455,7 @@ MaybeHandle<Object> JSObject::SetDictionaryElement(
|
| // value is being defined we skip attribute checks completely.
|
| if (set_mode == DEFINE_PROPERTY) {
|
| details =
|
| - PropertyDetails(attributes, FIELD, details.dictionary_index());
|
| + PropertyDetails(attributes, DATA_FIELD, details.dictionary_index());
|
| dictionary->DetailsAtPut(entry, details);
|
| } else if (details.IsReadOnly() && !element->IsTheHole()) {
|
| if (strict_mode == SLOPPY) {
|
| @@ -12493,7 +12506,7 @@ MaybeHandle<Object> JSObject::SetDictionaryElement(
|
| }
|
| }
|
|
|
| - PropertyDetails details(attributes, FIELD, 0);
|
| + PropertyDetails details(attributes, DATA_FIELD, 0);
|
| Handle<SeededNumberDictionary> new_dictionary =
|
| SeededNumberDictionary::AddNumberEntry(dictionary, index, value,
|
| details);
|
| @@ -14586,7 +14599,7 @@ Handle<Object> JSObject::PrepareSlowElementsForSort(
|
| HandleScope scope(isolate);
|
| Handle<Object> value(dict->ValueAt(i), isolate);
|
| PropertyDetails details = dict->DetailsAt(i);
|
| - if (details.type() == CALLBACKS || details.IsReadOnly()) {
|
| + if (details.type() == ACCESSOR_CONSTANT || details.IsReadOnly()) {
|
| // Bail out and do the sorting of undefineds and array holes in JS.
|
| // Also bail out if the element is not supposed to be moved.
|
| return bailout;
|
| @@ -14620,7 +14633,7 @@ Handle<Object> JSObject::PrepareSlowElementsForSort(
|
| }
|
|
|
| uint32_t result = pos;
|
| - PropertyDetails no_details(NONE, FIELD, 0);
|
| + PropertyDetails no_details(NONE, DATA_FIELD, 0);
|
| while (undefs > 0) {
|
| if (pos > static_cast<uint32_t>(Smi::kMaxValue)) {
|
| // Adding an entry with the key beyond smi-range requires
|
| @@ -15006,7 +15019,7 @@ Handle<PropertyCell> JSGlobalObject::EnsurePropertyCell(
|
| Isolate* isolate = global->GetIsolate();
|
| Handle<PropertyCell> cell = isolate->factory()->NewPropertyCell(
|
| isolate->factory()->the_hole_value());
|
| - PropertyDetails details(NONE, FIELD, 0);
|
| + PropertyDetails details(NONE, DATA_FIELD, 0);
|
| details = details.AsDeleted();
|
| Handle<NameDictionary> dictionary = NameDictionary::Add(
|
| handle(global->property_dictionary()), name, cell, details);
|
| @@ -15486,7 +15499,7 @@ Handle<Derived> Dictionary<Derived, Shape, Key>::AtPut(
|
| #ifdef DEBUG
|
| USE(Shape::AsHandle(dictionary->GetIsolate(), key));
|
| #endif
|
| - PropertyDetails details(NONE, FIELD, 0);
|
| + PropertyDetails details(NONE, DATA_FIELD, 0);
|
|
|
| AddEntry(dictionary, key, value, details, dictionary->Hash(key));
|
| return dictionary;
|
| @@ -15574,7 +15587,7 @@ Handle<UnseededNumberDictionary> UnseededNumberDictionary::AddNumberEntry(
|
| uint32_t key,
|
| Handle<Object> value) {
|
| SLOW_DCHECK(dictionary->FindEntry(key) == kNotFound);
|
| - return Add(dictionary, key, value, PropertyDetails(NONE, FIELD, 0));
|
| + return Add(dictionary, key, value, PropertyDetails(NONE, DATA_FIELD, 0));
|
| }
|
|
|
|
|
| @@ -15662,7 +15675,7 @@ bool Dictionary<Derived, Shape, Key>::HasComplexElements() {
|
| if (DerivedHashTable::IsKey(k) && !FilterKey(k, NONE)) {
|
| PropertyDetails details = DetailsAt(i);
|
| if (details.IsDeleted()) continue;
|
| - if (details.type() == CALLBACKS) return true;
|
| + if (details.type() == ACCESSOR_CONSTANT) return true;
|
| PropertyAttributes attr = details.attributes();
|
| if (attr & (READ_ONLY | DONT_DELETE | DONT_ENUM)) return true;
|
| }
|
|
|