| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef V8_IDENTITY_MAP_H_ | 5 #ifndef V8_IDENTITY_MAP_H_ |
| 6 #define V8_IDENTITY_MAP_H_ | 6 #define V8_IDENTITY_MAP_H_ |
| 7 | 7 |
| 8 #include "src/base/functional.h" |
| 8 #include "src/handles.h" | 9 #include "src/handles.h" |
| 9 | 10 |
| 10 namespace v8 { | 11 namespace v8 { |
| 11 namespace internal { | 12 namespace internal { |
| 12 | 13 |
| 13 // Forward declarations. | 14 // Forward declarations. |
| 14 class Heap; | 15 class Heap; |
| 15 class Zone; | 16 class Zone; |
| 16 | 17 |
| 17 // Base class of identity maps contains shared code for all template | 18 // Base class of identity maps contains shared code for all template |
| (...skipping 23 matching lines...) Expand all Loading... |
| 41 private: | 42 private: |
| 42 // Internal implementation should not be called directly by subclasses. | 43 // Internal implementation should not be called directly by subclasses. |
| 43 int LookupIndex(Object* address); | 44 int LookupIndex(Object* address); |
| 44 int InsertIndex(Object* address); | 45 int InsertIndex(Object* address); |
| 45 void Rehash(); | 46 void Rehash(); |
| 46 void Resize(); | 47 void Resize(); |
| 47 RawEntry Lookup(Object* key); | 48 RawEntry Lookup(Object* key); |
| 48 RawEntry Insert(Object* key); | 49 RawEntry Insert(Object* key); |
| 49 int Hash(Object* address); | 50 int Hash(Object* address); |
| 50 | 51 |
| 52 base::hash<uintptr_t> hasher_; |
| 51 Heap* heap_; | 53 Heap* heap_; |
| 52 Zone* zone_; | 54 Zone* zone_; |
| 53 int gc_counter_; | 55 int gc_counter_; |
| 54 int size_; | 56 int size_; |
| 55 int mask_; | 57 int mask_; |
| 56 Object** keys_; | 58 Object** keys_; |
| 57 void** values_; | 59 void** values_; |
| 58 }; | 60 }; |
| 59 | 61 |
| 60 // Implements an identity map from object addresses to a given value type {V}. | 62 // Implements an identity map from object addresses to a given value type {V}. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 87 void Set(Handle<Object> key, V v) { Set(*key, v); } | 89 void Set(Handle<Object> key, V v) { Set(*key, v); } |
| 88 void Set(Object* key, V v) { *(reinterpret_cast<V*>(GetEntry(key))) = v; } | 90 void Set(Object* key, V v) { *(reinterpret_cast<V*>(GetEntry(key))) = v; } |
| 89 | 91 |
| 90 // Removes all elements from the map. | 92 // Removes all elements from the map. |
| 91 void Clear() { IdentityMapBase::Clear(); } | 93 void Clear() { IdentityMapBase::Clear(); } |
| 92 }; | 94 }; |
| 93 } // namespace internal | 95 } // namespace internal |
| 94 } // namespace v8 | 96 } // namespace v8 |
| 95 | 97 |
| 96 #endif // V8_IDENTITY_MAP_H_ | 98 #endif // V8_IDENTITY_MAP_H_ |
| OLD | NEW |