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

Side by Side Diff: src/objects.cc

Issue 256743008: OrderedHashMap::Lookup() and ObjectHashTable::Lookup() handlified. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebasing 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 5169 matching lines...) Expand 10 before | Expand all | Expand 10 after
5180 if (*key == GetHeap()->identity_hash_string()) { 5180 if (*key == GetHeap()->identity_hash_string()) {
5181 return inline_value; 5181 return inline_value;
5182 } else { 5182 } else {
5183 return GetHeap()->the_hole_value(); 5183 return GetHeap()->the_hole_value();
5184 } 5184 }
5185 } 5185 }
5186 5186
5187 if (inline_value->IsUndefined()) return GetHeap()->the_hole_value(); 5187 if (inline_value->IsUndefined()) return GetHeap()->the_hole_value();
5188 5188
5189 ObjectHashTable* hashtable = ObjectHashTable::cast(inline_value); 5189 ObjectHashTable* hashtable = ObjectHashTable::cast(inline_value);
5190 Object* entry = hashtable->Lookup(*key); 5190 Object* entry = hashtable->Lookup(key);
5191 return entry; 5191 return entry;
5192 } 5192 }
5193 5193
5194 5194
5195 Handle<Object> JSObject::SetHiddenProperty(Handle<JSObject> object, 5195 Handle<Object> JSObject::SetHiddenProperty(Handle<JSObject> object,
5196 Handle<Name> key, 5196 Handle<Name> key,
5197 Handle<Object> value) { 5197 Handle<Object> value) {
5198 Isolate* isolate = object->GetIsolate(); 5198 Isolate* isolate = object->GetIsolate();
5199 5199
5200 ASSERT(key->IsUniqueName()); 5200 ASSERT(key->IsUniqueName());
(...skipping 10828 matching lines...) Expand 10 before | Expand all | Expand 10 after
16029 e = PropertyCell::cast(e)->value(); 16029 e = PropertyCell::cast(e)->value();
16030 } 16030 }
16031 if (e == value) return k; 16031 if (e == value) return k;
16032 } 16032 }
16033 } 16033 }
16034 Heap* heap = Dictionary::GetHeap(); 16034 Heap* heap = Dictionary::GetHeap();
16035 return heap->undefined_value(); 16035 return heap->undefined_value();
16036 } 16036 }
16037 16037
16038 16038
16039 Object* ObjectHashTable::Lookup(Object* key) { 16039 Object* ObjectHashTable::Lookup(Handle<Object> key) {
16040 ASSERT(IsKey(key)); 16040 DisallowHeapAllocation no_gc;
16041 ASSERT(IsKey(*key));
16041 16042
16042 // If the object does not have an identity hash, it was never used as a key. 16043 // If the object does not have an identity hash, it was never used as a key.
16043 Object* hash = key->GetHash(); 16044 Object* hash = key->GetHash();
16044 if (hash->IsUndefined()) { 16045 if (hash->IsUndefined()) {
16045 return GetHeap()->the_hole_value(); 16046 return GetHeap()->the_hole_value();
16046 } 16047 }
16047 int entry = FindEntry(key); 16048 int entry = FindEntry(key);
16048 if (entry == kNotFound) return GetHeap()->the_hole_value(); 16049 if (entry == kNotFound) return GetHeap()->the_hole_value();
16049 return get(EntryToIndex(entry) + 1); 16050 return get(EntryToIndex(entry) + 1);
16050 } 16051 }
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
16404 16405
16405 Handle<OrderedHashSet> OrderedHashSet::Remove(Handle<OrderedHashSet> table, 16406 Handle<OrderedHashSet> OrderedHashSet::Remove(Handle<OrderedHashSet> table,
16406 Handle<Object> key) { 16407 Handle<Object> key) {
16407 int entry = table->FindEntry(*key); 16408 int entry = table->FindEntry(*key);
16408 if (entry == kNotFound) return table; 16409 if (entry == kNotFound) return table;
16409 table->RemoveEntry(entry); 16410 table->RemoveEntry(entry);
16410 return Shrink(table); 16411 return Shrink(table);
16411 } 16412 }
16412 16413
16413 16414
16414 Object* OrderedHashMap::Lookup(Object* key) { 16415 Object* OrderedHashMap::Lookup(Handle<Object> key) {
16415 int entry = FindEntry(key); 16416 DisallowHeapAllocation no_gc;
16417 int entry = FindEntry(*key);
16416 if (entry == kNotFound) return GetHeap()->the_hole_value(); 16418 if (entry == kNotFound) return GetHeap()->the_hole_value();
16417 return ValueAt(entry); 16419 return ValueAt(entry);
16418 } 16420 }
16419 16421
16420 16422
16421 Handle<OrderedHashMap> OrderedHashMap::Put(Handle<OrderedHashMap> table, 16423 Handle<OrderedHashMap> OrderedHashMap::Put(Handle<OrderedHashMap> table,
16422 Handle<Object> key, 16424 Handle<Object> key,
16423 Handle<Object> value) { 16425 Handle<Object> value) {
16424 int entry = table->FindEntry(*key); 16426 int entry = table->FindEntry(*key);
16425 16427
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
17243 #define ERROR_MESSAGES_TEXTS(C, T) T, 17245 #define ERROR_MESSAGES_TEXTS(C, T) T,
17244 static const char* error_messages_[] = { 17246 static const char* error_messages_[] = {
17245 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 17247 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
17246 }; 17248 };
17247 #undef ERROR_MESSAGES_TEXTS 17249 #undef ERROR_MESSAGES_TEXTS
17248 return error_messages_[reason]; 17250 return error_messages_[reason];
17249 } 17251 }
17250 17252
17251 17253
17252 } } // namespace v8::internal 17254 } } // 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