Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index 696be7ce67d24b53e19ec8dae959fb8ecf5a6922..466a564fc13bd00c3a0ea4f66e91038d0e0a5c11 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -16246,29 +16246,30 @@ Object* WeakHashTable::Lookup(Object* key) { |
| } |
| -MaybeObject* WeakHashTable::Put(Object* key, Object* value) { |
| - ASSERT(IsKey(key)); |
| - int entry = FindEntry(key); |
| +Handle<WeakHashTable> WeakHashTable::Put(Handle<WeakHashTable> table, |
| + Handle<Object> key, |
| + Handle<Object> value) { |
| + ASSERT(table->IsKey(*key)); |
| + int entry = table->FindEntry(*key); |
| // Key is already in table, just overwrite value. |
| if (entry != kNotFound) { |
| - set(EntryToValueIndex(entry), value); |
| - return this; |
| + table->set(EntryToValueIndex(entry), *value); |
| + return table; |
| } |
| // Check whether the hash table should be extended. |
| - Object* obj; |
| - { MaybeObject* maybe_obj = EnsureCapacity(1, key, TENURED); |
| - if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
| - } |
| - WeakHashTable* table = WeakHashTable::cast(obj); |
| - table->AddEntry(table->FindInsertionEntry(Hash(key)), key, value); |
| + table = EnsureCapacity(table, 1, *key, TENURED); |
| + |
| + table->AddEntry(table->FindInsertionEntry(table->Hash(*key)), key, value); |
| return table; |
| } |
| -void WeakHashTable::AddEntry(int entry, Object* key, Object* value) { |
| - set(EntryToIndex(entry), key); |
| - set(EntryToValueIndex(entry), value); |
| +void WeakHashTable::AddEntry(int entry, |
| + Handle<Object> key, |
| + Handle<Object> value) { |
|
Yang
2014/04/25 07:32:27
This method cannot allocate, right? Otherwise the
Igor Sheludko
2014/04/25 08:10:34
Done.
|
| + set(EntryToIndex(entry), *key); |
| + set(EntryToValueIndex(entry), *value); |
| ElementAdded(); |
| } |