Index: src/objects.cc |
diff --git a/src/objects.cc b/src/objects.cc |
index 3fa1a4098f4b870748e13419feecd42be112f015..31b9aa7689f47b9f5d3d185c9bfd10b0a728e035 100644 |
--- a/src/objects.cc |
+++ b/src/objects.cc |
@@ -657,8 +657,8 @@ MaybeObject* JSObject::SetNormalizedProperty(Name* name, |
ASSERT(enumeration_index > 0); |
} |
- details = PropertyDetails(details.attributes(), details.type(), |
- Representation::None(), enumeration_index); |
+ details = PropertyDetails( |
+ details.attributes(), details.type(), enumeration_index); |
if (IsGlobalObject()) { |
JSGlobalPropertyCell* cell = |
@@ -1775,7 +1775,7 @@ MaybeObject* JSObject::AddFastProperty(Name* name, |
// Allocate new instance descriptors with (name, index) added |
FieldDescriptor new_field( |
- name, index, attributes, value->OptimalRepresentation(), 0); |
+ name, index, attributes, value->OptimalRepresentation()); |
ASSERT(index < map()->inobject_properties() || |
(index - map()->inobject_properties()) < properties()->length() || |
@@ -1814,7 +1814,7 @@ MaybeObject* JSObject::AddConstantFunctionProperty( |
JSFunction* function, |
PropertyAttributes attributes) { |
// Allocate new instance descriptors with (name, function) added |
- ConstantFunctionDescriptor d(name, function, attributes, 0); |
+ ConstantFunctionDescriptor d(name, function, attributes); |
TransitionFlag flag = |
// Do not add transitions to global objects. |
@@ -1850,8 +1850,7 @@ MaybeObject* JSObject::AddSlowProperty(Name* name, |
// Assign an enumeration index to the property and update |
// SetNextEnumerationIndex. |
int index = dict->NextEnumerationIndex(); |
- PropertyDetails details = PropertyDetails( |
- attributes, NORMAL, Representation::None(), index); |
+ PropertyDetails details = PropertyDetails(attributes, NORMAL, index); |
dict->SetNextEnumerationIndex(index + 1); |
dict->SetEntry(entry, name, store_value, details); |
return value; |
@@ -1863,8 +1862,7 @@ MaybeObject* JSObject::AddSlowProperty(Name* name, |
} |
JSGlobalPropertyCell::cast(store_value)->set_value(value); |
} |
- PropertyDetails details = PropertyDetails( |
- attributes, NORMAL, Representation::None()); |
+ PropertyDetails details = PropertyDetails(attributes, NORMAL, 0); |
Object* result; |
{ MaybeObject* maybe_result = dict->Add(name, store_value, details); |
if (!maybe_result->ToObject(&result)) return maybe_result; |
@@ -2005,8 +2003,7 @@ MaybeObject* JSObject::ReplaceSlowProperty(Name* name, |
new_enumeration_index = dictionary->DetailsAt(old_index).dictionary_index(); |
} |
- PropertyDetails new_details( |
- attributes, NORMAL, Representation::None(), new_enumeration_index); |
+ PropertyDetails new_details(attributes, NORMAL, new_enumeration_index); |
return SetNormalizedProperty(name, value, new_details); |
} |
@@ -2073,7 +2070,7 @@ MaybeObject* JSObject::ConvertDescriptorToField(Name* name, |
int index = map()->NextFreePropertyIndex(); |
FieldDescriptor new_field( |
- name, index, attributes, new_value->OptimalRepresentation(), 0); |
+ name, index, attributes, new_value->OptimalRepresentation()); |
// Make a new map for the object. |
Map* new_map; |
@@ -3758,8 +3755,7 @@ MaybeObject* JSObject::SetLocalPropertyIgnoreAttributes( |
MaybeObject* result = *value; |
switch (lookup.type()) { |
case NORMAL: { |
- PropertyDetails details = PropertyDetails( |
- attributes, NORMAL, Representation::None()); |
+ PropertyDetails details = PropertyDetails(attributes, NORMAL, 0); |
result = self->SetNormalizedProperty(*name, *value, details); |
break; |
} |
@@ -4218,10 +4214,8 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
PropertyDetails details = descs->GetDetails(i); |
switch (details.type()) { |
case CONSTANT_FUNCTION: { |
- PropertyDetails d = PropertyDetails(details.attributes(), |
- NORMAL, |
- Representation::None(), |
- details.descriptor_index()); |
+ PropertyDetails d = PropertyDetails( |
+ details.attributes(), NORMAL, i + 1); |
Object* value = descs->GetConstantFunction(i); |
MaybeObject* maybe_dictionary = |
dictionary->Add(descs->GetKey(i), value, d); |
@@ -4229,10 +4223,8 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
break; |
} |
case FIELD: { |
- PropertyDetails d = PropertyDetails(details.attributes(), |
- NORMAL, |
- Representation::None(), |
- details.descriptor_index()); |
+ PropertyDetails d = PropertyDetails( |
+ details.attributes(), NORMAL, i + 1); |
Object* value = FastPropertyAt(descs->GetFieldIndex(i)); |
MaybeObject* maybe_dictionary = |
dictionary->Add(descs->GetKey(i), value, d); |
@@ -4241,10 +4233,8 @@ MaybeObject* JSObject::NormalizeProperties(PropertyNormalizationMode mode, |
} |
case CALLBACKS: { |
Object* value = descs->GetCallbacksObject(i); |
- PropertyDetails d = PropertyDetails(details.attributes(), |
- CALLBACKS, |
- Representation::None(), |
- details.descriptor_index()); |
+ PropertyDetails d = PropertyDetails( |
+ details.attributes(), CALLBACKS, i + 1); |
MaybeObject* maybe_dictionary = |
dictionary->Add(descs->GetKey(i), value, d); |
if (!maybe_dictionary->To(&dictionary)) return maybe_dictionary; |
@@ -4380,8 +4370,7 @@ MaybeObject* JSObject::NormalizeElements() { |
ASSERT(old_map->has_fast_smi_or_object_elements()); |
value = FixedArray::cast(array)->get(i); |
} |
- PropertyDetails details = PropertyDetails( |
- NONE, NORMAL, Representation::None()); |
+ PropertyDetails details = PropertyDetails(NONE, NORMAL, 0); |
if (!value->IsTheHole()) { |
Object* result; |
MaybeObject* maybe_result = |
@@ -5452,8 +5441,7 @@ static bool UpdateGetterSetterInDictionary( |
if (details.attributes() != attributes) { |
dictionary->DetailsAtPut( |
entry, |
- PropertyDetails( |
- attributes, CALLBACKS, Representation::None(), index)); |
+ PropertyDetails(attributes, CALLBACKS, index)); |
} |
AccessorPair::cast(result)->SetComponents(getter, setter); |
return true; |
@@ -5614,8 +5602,7 @@ bool JSObject::CanSetCallback(Name* name) { |
MaybeObject* JSObject::SetElementCallback(uint32_t index, |
Object* structure, |
PropertyAttributes attributes) { |
- PropertyDetails details = PropertyDetails( |
- attributes, CALLBACKS, Representation::None()); |
+ PropertyDetails details = PropertyDetails(attributes, CALLBACKS, 0); |
// Normalize elements to make this operation simple. |
SeededNumberDictionary* dictionary; |
@@ -5673,8 +5660,7 @@ MaybeObject* JSObject::SetPropertyCallback(Name* name, |
} |
// Update the dictionary with the new CALLBACKS property. |
- PropertyDetails details = PropertyDetails( |
- attributes, CALLBACKS, Representation::None()); |
+ PropertyDetails details = PropertyDetails(attributes, CALLBACKS, 0); |
maybe_ok = SetNormalizedProperty(name, structure, details); |
if (maybe_ok->IsFailure()) return maybe_ok; |
@@ -6336,7 +6322,6 @@ MaybeObject* Map::CopyAddDescriptor(Descriptor* descriptor, |
int old_size = NumberOfOwnDescriptors(); |
int new_size = old_size + 1; |
- descriptor->SetEnumerationIndex(new_size); |
if (flag == INSERT_TRANSITION && |
owns_descriptors() && |
@@ -6421,9 +6406,7 @@ MaybeObject* Map::CopyReplaceDescriptor(DescriptorArray* descriptors, |
int new_size = NumberOfOwnDescriptors(); |
ASSERT(0 <= insertion_index && insertion_index < new_size); |
- PropertyDetails details = descriptors->GetDetails(insertion_index); |
- ASSERT_LE(details.descriptor_index(), new_size); |
- descriptor->SetEnumerationIndex(details.descriptor_index()); |
+ ASSERT_LT(insertion_index, new_size); |
DescriptorArray* new_descriptors; |
MaybeObject* maybe_descriptors = DescriptorArray::Allocate(new_size); |
@@ -7319,8 +7302,7 @@ MaybeObject* DescriptorArray::Merge(int verbatim, |
FieldDescriptor d(key, |
current_offset++, |
details.attributes(), |
- representation, |
- descriptor + 1); |
+ representation); |
result->Set(descriptor, &d, witness); |
} else { |
result->CopyFrom(descriptor, other, descriptor, witness); |
@@ -7335,8 +7317,7 @@ MaybeObject* DescriptorArray::Merge(int verbatim, |
FieldDescriptor d(key, |
current_offset++, |
details.attributes(), |
- details.representation(), |
- descriptor + 1); |
+ details.representation()); |
result->Set(descriptor, &d, witness); |
} else { |
result->CopyFrom(descriptor, other, descriptor, witness); |
@@ -11201,8 +11182,8 @@ MaybeObject* JSObject::SetDictionaryElement(uint32_t index, |
// is read-only (a declared const that has not been initialized). If a |
// value is being defined we skip attribute checks completely. |
if (set_mode == DEFINE_PROPERTY) { |
- details = PropertyDetails(attributes, NORMAL, Representation::None(), |
- details.dictionary_index()); |
+ details = PropertyDetails( |
+ attributes, NORMAL, details.dictionary_index()); |
dictionary->DetailsAtPut(entry, details); |
} else if (details.IsReadOnly() && !element->IsTheHole()) { |
if (strict_mode == kNonStrictMode) { |
@@ -11254,8 +11235,7 @@ MaybeObject* JSObject::SetDictionaryElement(uint32_t index, |
} |
} |
FixedArrayBase* new_dictionary; |
- PropertyDetails details = PropertyDetails( |
- attributes, NORMAL, Representation::None()); |
+ PropertyDetails details = PropertyDetails(attributes, NORMAL, 0); |
MaybeObject* maybe = dictionary->AddNumberEntry(index, *value, details); |
if (!maybe->To(&new_dictionary)) return maybe; |
if (*dictionary != SeededNumberDictionary::cast(new_dictionary)) { |
@@ -13249,8 +13229,7 @@ MaybeObject* JSObject::PrepareSlowElementsForSort(uint32_t limit) { |
} |
uint32_t result = pos; |
- PropertyDetails no_details = PropertyDetails( |
- NONE, NORMAL, Representation::None()); |
+ PropertyDetails no_details = PropertyDetails(NONE, NORMAL, 0); |
Heap* heap = GetHeap(); |
while (undefs > 0) { |
if (pos > static_cast<uint32_t>(Smi::kMaxValue)) { |
@@ -13633,7 +13612,7 @@ MaybeObject* GlobalObject::EnsurePropertyCell(Name* name) { |
heap->AllocateJSGlobalPropertyCell(heap->the_hole_value()); |
if (!maybe_cell->ToObject(&cell)) return maybe_cell; |
} |
- PropertyDetails details(NONE, NORMAL, Representation::None()); |
+ PropertyDetails details(NONE, NORMAL, 0); |
details = details.AsDeleted(); |
Object* dictionary; |
{ MaybeObject* maybe_dictionary = |
@@ -14076,8 +14055,7 @@ MaybeObject* Dictionary<Shape, Key>::GenerateNewEnumerationIndices() { |
int enum_index = Smi::cast(enumeration_order->get(pos++))->value(); |
PropertyDetails details = DetailsAt(i); |
PropertyDetails new_details = PropertyDetails( |
- details.attributes(), details.type(), |
- Representation::None(), enum_index); |
+ details.attributes(), details.type(), enum_index); |
DetailsAtPut(i, new_details); |
} |
} |
@@ -14143,8 +14121,7 @@ MaybeObject* Dictionary<Shape, Key>::AtPut(Key key, Object* value) { |
{ MaybeObject* maybe_k = Shape::AsObject(this->GetHeap(), key); |
if (!maybe_k->ToObject(&k)) return maybe_k; |
} |
- PropertyDetails details = PropertyDetails( |
- NONE, NORMAL, Representation::None()); |
+ PropertyDetails details = PropertyDetails(NONE, NORMAL, 0); |
return Dictionary<Shape, Key>::cast(obj)->AddEntry(key, value, details, |
Dictionary<Shape, Key>::Hash(key)); |
@@ -14155,8 +14132,6 @@ template<typename Shape, typename Key> |
MaybeObject* Dictionary<Shape, Key>::Add(Key key, |
Object* value, |
PropertyDetails details) { |
- ASSERT(details.dictionary_index() == details.descriptor_index()); |
- |
// Valdate key is absent. |
SLOW_ASSERT((this->FindEntry(key) == Dictionary<Shape, Key>::kNotFound)); |
// Check whether the dictionary should be extended. |
@@ -14190,8 +14165,7 @@ MaybeObject* Dictionary<Shape, Key>::AddEntry(Key key, |
// Assign an enumeration index to the property and update |
// SetNextEnumerationIndex. |
int index = NextEnumerationIndex(); |
- details = PropertyDetails(details.attributes(), details.type(), |
- Representation::None(), index); |
+ details = PropertyDetails(details.attributes(), details.type(), index); |
SetNextEnumerationIndex(index + 1); |
} |
SetEntry(entry, k, value, details); |
@@ -14233,7 +14207,7 @@ MaybeObject* SeededNumberDictionary::AddNumberEntry(uint32_t key, |
MaybeObject* UnseededNumberDictionary::AddNumberEntry(uint32_t key, |
Object* value) { |
SLOW_ASSERT(this->FindEntry(key) == kNotFound); |
- return Add(key, value, PropertyDetails(NONE, NORMAL, Representation::None())); |
+ return Add(key, value, PropertyDetails(NONE, NORMAL, 0)); |
} |
@@ -14278,7 +14252,6 @@ MaybeObject* SeededNumberDictionary::Set(uint32_t key, |
// Preserve enumeration index. |
details = PropertyDetails(details.attributes(), |
details.type(), |
- Representation::None(), |
DetailsAt(entry).dictionary_index()); |
MaybeObject* maybe_object_key = |
SeededNumberDictionaryShape::AsObject(GetHeap(), key); |
@@ -14531,15 +14504,13 @@ MaybeObject* NameDictionary::TransformPropertiesToFastFor( |
} |
PropertyDetails details = DetailsAt(i); |
- ASSERT(details.descriptor_index() == details.dictionary_index()); |
- int enumeration_index = details.descriptor_index(); |
+ int enumeration_index = details.dictionary_index(); |
PropertyType type = details.type(); |
if (value->IsJSFunction()) { |
ConstantFunctionDescriptor d(key, |
JSFunction::cast(value), |
- details.attributes(), |
- enumeration_index); |
+ details.attributes()); |
descriptors->Set(enumeration_index - 1, &d, witness); |
} else if (type == NORMAL) { |
if (current_offset < inobject_props) { |
@@ -14554,14 +14525,12 @@ MaybeObject* NameDictionary::TransformPropertiesToFastFor( |
current_offset++, |
details.attributes(), |
// TODO(verwaest): value->OptimalRepresentation(); |
- Representation::Tagged(), |
- enumeration_index); |
+ Representation::Tagged()); |
descriptors->Set(enumeration_index - 1, &d, witness); |
} else if (type == CALLBACKS) { |
CallbacksDescriptor d(key, |
value, |
- details.attributes(), |
- enumeration_index); |
+ details.attributes()); |
descriptors->Set(enumeration_index - 1, &d, witness); |
} else { |
UNREACHABLE(); |