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

Side by Side Diff: src/objects.cc

Issue 260313003: OrderedHashTable::FindEntry() handlified. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/objects.h ('k') | src/runtime.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "v8.h" 5 #include "v8.h"
6 6
7 #include "accessors.h" 7 #include "accessors.h"
8 #include "allocation-site-scopes.h" 8 #include "allocation-site-scopes.h"
9 #include "api.h" 9 #include "api.h"
10 #include "arguments.h" 10 #include "arguments.h"
(...skipping 16283 matching lines...) Expand 10 before | Expand all | Expand 10 after
16294 object = Iterator::cast(object)->next_iterator()) { 16294 object = Iterator::cast(object)->next_iterator()) {
16295 Iterator::cast(object)->TableCompacted(); 16295 Iterator::cast(object)->TableCompacted();
16296 Iterator::cast(object)->set_table(*new_table); 16296 Iterator::cast(object)->set_table(*new_table);
16297 } 16297 }
16298 16298
16299 return new_table; 16299 return new_table;
16300 } 16300 }
16301 16301
16302 16302
16303 template<class Derived, class Iterator, int entrysize> 16303 template<class Derived, class Iterator, int entrysize>
16304 int OrderedHashTable<Derived, Iterator, entrysize>::FindEntry(Object* key) { 16304 int OrderedHashTable<Derived, Iterator, entrysize>::FindEntry(
16305 Handle<Object> key) {
16306 DisallowHeapAllocation no_gc;
16305 ASSERT(!key->IsTheHole()); 16307 ASSERT(!key->IsTheHole());
16306 Object* hash = key->GetHash(); 16308 Object* hash = key->GetHash();
16307 if (hash->IsUndefined()) return kNotFound; 16309 if (hash->IsUndefined()) return kNotFound;
16308 for (int entry = HashToEntry(Smi::cast(hash)->value()); 16310 for (int entry = HashToEntry(Smi::cast(hash)->value());
16309 entry != kNotFound; 16311 entry != kNotFound;
16310 entry = ChainAt(entry)) { 16312 entry = ChainAt(entry)) {
16311 Object* candidate = KeyAt(entry); 16313 Object* candidate = KeyAt(entry);
16312 if (candidate->SameValue(key)) 16314 if (candidate->SameValue(*key))
16313 return entry; 16315 return entry;
16314 } 16316 }
16315 return kNotFound; 16317 return kNotFound;
16316 } 16318 }
16317 16319
16318 16320
16319 template<class Derived, class Iterator, int entrysize> 16321 template<class Derived, class Iterator, int entrysize>
16320 int OrderedHashTable<Derived, Iterator, entrysize>::AddEntry(int hash) { 16322 int OrderedHashTable<Derived, Iterator, entrysize>::AddEntry(int hash) {
16321 int entry = UsedCapacity(); 16323 int entry = UsedCapacity();
16322 int bucket = HashToBucket(hash); 16324 int bucket = HashToBucket(hash);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
16357 16359
16358 template Handle<OrderedHashSet> 16360 template Handle<OrderedHashSet>
16359 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::Shrink( 16361 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::Shrink(
16360 Handle<OrderedHashSet> table); 16362 Handle<OrderedHashSet> table);
16361 16363
16362 template Handle<OrderedHashSet> 16364 template Handle<OrderedHashSet>
16363 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::Clear( 16365 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::Clear(
16364 Handle<OrderedHashSet> table); 16366 Handle<OrderedHashSet> table);
16365 16367
16366 template int 16368 template int
16367 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::FindEntry(Object* key); 16369 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::FindEntry(
16370 Handle<Object> key);
16368 16371
16369 template int 16372 template int
16370 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::AddEntry(int hash); 16373 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::AddEntry(int hash);
16371 16374
16372 template void 16375 template void
16373 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::RemoveEntry(int entry); 16376 OrderedHashTable<OrderedHashSet, JSSetIterator, 1>::RemoveEntry(int entry);
16374 16377
16375 16378
16376 template Handle<OrderedHashMap> 16379 template Handle<OrderedHashMap>
16377 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Allocate( 16380 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Allocate(
16378 Isolate* isolate, int capacity, PretenureFlag pretenure); 16381 Isolate* isolate, int capacity, PretenureFlag pretenure);
16379 16382
16380 template Handle<OrderedHashMap> 16383 template Handle<OrderedHashMap>
16381 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::EnsureGrowable( 16384 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::EnsureGrowable(
16382 Handle<OrderedHashMap> table); 16385 Handle<OrderedHashMap> table);
16383 16386
16384 template Handle<OrderedHashMap> 16387 template Handle<OrderedHashMap>
16385 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Shrink( 16388 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Shrink(
16386 Handle<OrderedHashMap> table); 16389 Handle<OrderedHashMap> table);
16387 16390
16388 template Handle<OrderedHashMap> 16391 template Handle<OrderedHashMap>
16389 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Clear( 16392 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::Clear(
16390 Handle<OrderedHashMap> table); 16393 Handle<OrderedHashMap> table);
16391 16394
16392 template int 16395 template int
16393 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::FindEntry(Object* key); 16396 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::FindEntry(
16397 Handle<Object> key);
16394 16398
16395 template int 16399 template int
16396 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::AddEntry(int hash); 16400 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::AddEntry(int hash);
16397 16401
16398 template void 16402 template void
16399 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::RemoveEntry(int entry); 16403 OrderedHashTable<OrderedHashMap, JSMapIterator, 2>::RemoveEntry(int entry);
16400 16404
16401 16405
16402 bool OrderedHashSet::Contains(Object* key) { 16406 bool OrderedHashSet::Contains(Handle<Object> key) {
16403 return FindEntry(key) != kNotFound; 16407 return FindEntry(key) != kNotFound;
16404 } 16408 }
16405 16409
16406 16410
16407 Handle<OrderedHashSet> OrderedHashSet::Add(Handle<OrderedHashSet> table, 16411 Handle<OrderedHashSet> OrderedHashSet::Add(Handle<OrderedHashSet> table,
16408 Handle<Object> key) { 16412 Handle<Object> key) {
16409 if (table->FindEntry(*key) != kNotFound) return table; 16413 if (table->FindEntry(key) != kNotFound) return table;
16410 16414
16411 table = EnsureGrowable(table); 16415 table = EnsureGrowable(table);
16412 16416
16413 Handle<Object> hash = GetOrCreateHash(key, table->GetIsolate()); 16417 Handle<Object> hash = GetOrCreateHash(key, table->GetIsolate());
16414 int index = table->AddEntry(Smi::cast(*hash)->value()); 16418 int index = table->AddEntry(Smi::cast(*hash)->value());
16415 table->set(index, *key); 16419 table->set(index, *key);
16416 return table; 16420 return table;
16417 } 16421 }
16418 16422
16419 16423
16420 Handle<OrderedHashSet> OrderedHashSet::Remove(Handle<OrderedHashSet> table, 16424 Handle<OrderedHashSet> OrderedHashSet::Remove(Handle<OrderedHashSet> table,
16421 Handle<Object> key) { 16425 Handle<Object> key) {
16422 int entry = table->FindEntry(*key); 16426 int entry = table->FindEntry(key);
16423 if (entry == kNotFound) return table; 16427 if (entry == kNotFound) return table;
16424 table->RemoveEntry(entry); 16428 table->RemoveEntry(entry);
16425 return Shrink(table); 16429 return Shrink(table);
16426 } 16430 }
16427 16431
16428 16432
16429 Object* OrderedHashMap::Lookup(Handle<Object> key) { 16433 Object* OrderedHashMap::Lookup(Handle<Object> key) {
16430 DisallowHeapAllocation no_gc; 16434 DisallowHeapAllocation no_gc;
16431 int entry = FindEntry(*key); 16435 int entry = FindEntry(key);
16432 if (entry == kNotFound) return GetHeap()->the_hole_value(); 16436 if (entry == kNotFound) return GetHeap()->the_hole_value();
16433 return ValueAt(entry); 16437 return ValueAt(entry);
16434 } 16438 }
16435 16439
16436 16440
16437 Handle<OrderedHashMap> OrderedHashMap::Put(Handle<OrderedHashMap> table, 16441 Handle<OrderedHashMap> OrderedHashMap::Put(Handle<OrderedHashMap> table,
16438 Handle<Object> key, 16442 Handle<Object> key,
16439 Handle<Object> value) { 16443 Handle<Object> value) {
16440 int entry = table->FindEntry(*key); 16444 int entry = table->FindEntry(key);
16441 16445
16442 if (value->IsTheHole()) { 16446 if (value->IsTheHole()) {
16443 if (entry == kNotFound) return table; 16447 if (entry == kNotFound) return table;
16444 table->RemoveEntry(entry); 16448 table->RemoveEntry(entry);
16445 return Shrink(table); 16449 return Shrink(table);
16446 } 16450 }
16447 16451
16448 if (entry != kNotFound) { 16452 if (entry != kNotFound) {
16449 table->set(table->EntryToIndex(entry) + kValueOffset, *value); 16453 table->set(table->EntryToIndex(entry) + kValueOffset, *value);
16450 return table; 16454 return table;
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after
17259 #define ERROR_MESSAGES_TEXTS(C, T) T, 17263 #define ERROR_MESSAGES_TEXTS(C, T) T,
17260 static const char* error_messages_[] = { 17264 static const char* error_messages_[] = {
17261 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 17265 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
17262 }; 17266 };
17263 #undef ERROR_MESSAGES_TEXTS 17267 #undef ERROR_MESSAGES_TEXTS
17264 return error_messages_[reason]; 17268 return error_messages_[reason];
17265 } 17269 }
17266 17270
17267 17271
17268 } } // namespace v8::internal 17272 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698