| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index a1c8a90f0ef26e661b22bc555f1dcc3f989d944f..6cd0484ba53387d27438ce3b01b251b45d150e71 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -660,7 +660,7 @@ void JSObject::SetNormalizedProperty(Handle<JSObject> object,
|
| Handle<String>::cast(name));
|
| }
|
|
|
| - int entry = property_dictionary->FindEntry(*name);
|
| + int entry = property_dictionary->FindEntry(name);
|
| if (entry == NameDictionary::kNotFound) {
|
| Handle<Object> store_value = value;
|
| if (object->IsGlobalObject()) {
|
| @@ -705,7 +705,7 @@ Handle<Object> JSObject::DeleteNormalizedProperty(Handle<JSObject> object,
|
| ASSERT(!object->HasFastProperties());
|
| Isolate* isolate = object->GetIsolate();
|
| Handle<NameDictionary> dictionary(object->property_dictionary());
|
| - int entry = dictionary->FindEntry(*name);
|
| + int entry = dictionary->FindEntry(name);
|
| if (entry != NameDictionary::kNotFound) {
|
| // If we have a global object set the cell to the hole.
|
| if (object->IsGlobalObject()) {
|
| @@ -728,7 +728,7 @@ Handle<Object> JSObject::DeleteNormalizedProperty(Handle<JSObject> object,
|
| Handle<Object> deleted(dictionary->DeleteProperty(entry, mode), isolate);
|
| if (*deleted == isolate->heap()->true_value()) {
|
| Handle<NameDictionary> new_properties =
|
| - NameDictionary::Shrink(dictionary, *name);
|
| + NameDictionary::Shrink(dictionary, name);
|
| object->set_properties(*new_properties);
|
| }
|
| return deleted;
|
| @@ -1924,7 +1924,7 @@ void JSObject::AddSlowProperty(Handle<JSObject> object,
|
| Handle<NameDictionary> dict(object->property_dictionary());
|
| if (object->IsGlobalObject()) {
|
| // In case name is an orphaned property reuse the cell.
|
| - int entry = dict->FindEntry(*name);
|
| + int entry = dict->FindEntry(name);
|
| if (entry != NameDictionary::kNotFound) {
|
| Handle<PropertyCell> cell(PropertyCell::cast(dict->ValueAt(entry)));
|
| PropertyCell::SetValueInferType(cell, value);
|
| @@ -2054,7 +2054,7 @@ static void ReplaceSlowProperty(Handle<JSObject> object,
|
| Handle<Object> value,
|
| PropertyAttributes attributes) {
|
| NameDictionary* dictionary = object->property_dictionary();
|
| - int old_index = dictionary->FindEntry(*name);
|
| + int old_index = dictionary->FindEntry(name);
|
| int new_enumeration_index = 0; // 0 means "Use the next available index."
|
| if (old_index != -1) {
|
| // All calls to ReplaceSlowProperty have had all transitions removed.
|
| @@ -14627,8 +14627,17 @@ Handle<Derived> HashTable<Derived, Shape, Key>::New(
|
| }
|
|
|
|
|
| -// Find entry for key otherwise return kNotFound.
|
| +// TODO(ishell): Remove this when all the callers are handlified.
|
| int NameDictionary::FindEntry(Name* key) {
|
| + DisallowHeapAllocation no_allocation;
|
| + Isolate* isolate = key->GetIsolate();
|
| + HandleScope scope(isolate);
|
| + return FindEntry(handle(key, isolate));
|
| +}
|
| +
|
| +
|
| +// Find entry for key otherwise return kNotFound.
|
| +int NameDictionary::FindEntry(Handle<Name> key) {
|
| if (!key->IsUniqueName()) {
|
| return DerivedHashTable::FindEntry(key);
|
| }
|
| @@ -14651,16 +14660,16 @@ int NameDictionary::FindEntry(Name* key) {
|
| int index = EntryToIndex(entry);
|
| Object* element = get(index);
|
| if (element->IsUndefined()) break; // Empty entry.
|
| - if (key == element) return entry;
|
| + if (*key == element) return entry;
|
| if (!element->IsUniqueName() &&
|
| !element->IsTheHole() &&
|
| - Name::cast(element)->Equals(key)) {
|
| + Name::cast(element)->Equals(*key)) {
|
| // Replace a key that is a non-internalized string by the equivalent
|
| // internalized string for faster further lookups.
|
| - set(index, key);
|
| + set(index, *key);
|
| return entry;
|
| }
|
| - ASSERT(element->IsTheHole() || !Name::cast(element)->Equals(key));
|
| + ASSERT(element->IsTheHole() || !Name::cast(element)->Equals(*key));
|
| entry = NextProbe(entry, count++, capacity);
|
| }
|
| return kNotFound;
|
| @@ -14877,7 +14886,7 @@ template class HashTable<ObjectHashTable, ObjectHashTableShape, Object*>;
|
|
|
| template class HashTable<WeakHashTable, WeakHashTableShape<2>, Object*>;
|
|
|
| -template class Dictionary<NameDictionary, NameDictionaryShape, Name*>;
|
| +template class Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >;
|
|
|
| template class Dictionary<SeededNumberDictionary,
|
| SeededNumberDictionaryShape,
|
| @@ -14895,11 +14904,12 @@ template MaybeObject*
|
| Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
|
| Allocate(Heap* heap, int at_least_space_for, PretenureFlag pretenure);
|
|
|
| -template MaybeObject* Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +template MaybeObject*
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| Allocate(Heap* heap, int n, PretenureFlag pretenure);
|
|
|
| template Handle<NameDictionary>
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| New(Isolate* isolate, int n, PretenureFlag pretenure);
|
|
|
| template Handle<SeededNumberDictionary>
|
| @@ -14919,8 +14929,8 @@ Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
|
| SlowReverseLookup(Object* value);
|
|
|
| template Object*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::SlowReverseLookup(
|
| - Object*);
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| + SlowReverseLookup(Object* value);
|
|
|
| template void
|
| Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| @@ -14932,12 +14942,12 @@ Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| uint32_t>::SortMode);
|
|
|
| template Object*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::DeleteProperty(
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::DeleteProperty(
|
| int, JSObject::DeleteMode);
|
|
|
| template Handle<Object>
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::DeleteProperty(
|
| - Handle<Dictionary<NameDictionary, NameDictionaryShape, Name*> >,
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::DeleteProperty(
|
| + Handle<Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> > >,
|
| int,
|
| JSObject::DeleteMode);
|
|
|
| @@ -14955,34 +14965,35 @@ Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| JSObject::DeleteMode);
|
|
|
| template Handle<NameDictionary>
|
| -HashTable<NameDictionary, NameDictionaryShape, Name*>::
|
| +HashTable<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| New(Isolate*, int, MinimumCapacity, PretenureFlag);
|
|
|
| template Handle<NameDictionary>
|
| -HashTable<NameDictionary, NameDictionaryShape, Name*>::
|
| - Shrink(Handle<NameDictionary>, Name* n);
|
| +HashTable<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| + Shrink(Handle<NameDictionary>, Handle<Name>);
|
|
|
| template Handle<SeededNumberDictionary>
|
| HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| Shrink(Handle<SeededNumberDictionary>, uint32_t);
|
|
|
| -template void Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +template void Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| CopyKeysTo(
|
| FixedArray*,
|
| int,
|
| PropertyAttributes,
|
| - Dictionary<NameDictionary, NameDictionaryShape, Name*>::SortMode);
|
| + Dictionary<
|
| + NameDictionary, NameDictionaryShape, Handle<Name> >::SortMode);
|
|
|
| template int
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| NumberOfElementsFilterAttributes(PropertyAttributes);
|
|
|
| template MaybeObject*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::Add(
|
| - Name*, Object*, PropertyDetails);
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::Add(
|
| + Handle<Name>, Object*, PropertyDetails);
|
|
|
| template MaybeObject*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| GenerateNewEnumerationIndices();
|
|
|
| template int
|
| @@ -15006,8 +15017,8 @@ Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
|
| EnsureCapacity(int, uint32_t);
|
|
|
| template MaybeObject*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| - EnsureCapacity(int, Name*);
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| + EnsureCapacity(int, Handle<Name>);
|
|
|
| template MaybeObject*
|
| Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| @@ -15018,15 +15029,15 @@ Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
|
| AddEntry(uint32_t, Object*, PropertyDetails, uint32_t);
|
|
|
| template MaybeObject*
|
| -Dictionary<NameDictionary, NameDictionaryShape, Name*>::AddEntry(
|
| - Name*, Object*, PropertyDetails, uint32_t);
|
| +Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::AddEntry(
|
| + Handle<Name>, Object*, PropertyDetails, uint32_t);
|
|
|
| template
|
| int Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
| NumberOfEnumElements();
|
|
|
| template
|
| -int Dictionary<NameDictionary, NameDictionaryShape, Name*>::
|
| +int Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
| NumberOfEnumElements();
|
|
|
| template
|
| @@ -15039,7 +15050,7 @@ Handle<NameDictionary> NameDictionary::AddNameEntry(Handle<NameDictionary> dict,
|
| Handle<Object> value,
|
| PropertyDetails details) {
|
| CALL_HEAP_FUNCTION(dict->GetIsolate(),
|
| - dict->Add(*name, *value, details),
|
| + dict->Add(name, *value, details),
|
| NameDictionary);
|
| }
|
|
|
| @@ -15477,7 +15488,7 @@ Handle<PropertyCell> JSGlobalObject::EnsurePropertyCell(
|
| Handle<JSGlobalObject> global,
|
| Handle<Name> name) {
|
| ASSERT(!global->HasFastProperties());
|
| - int entry = global->property_dictionary()->FindEntry(*name);
|
| + int entry = global->property_dictionary()->FindEntry(name);
|
| if (entry == NameDictionary::kNotFound) {
|
| Isolate* isolate = global->GetIsolate();
|
| Handle<PropertyCell> cell = isolate->factory()->NewPropertyCell(
|
|
|