| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 3840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3851 void Rehash(Derived* new_table, Key key); | 3851 void Rehash(Derived* new_table, Key key); |
| 3852 | 3852 |
| 3853 // Attempt to shrink hash table after removal of key. | 3853 // Attempt to shrink hash table after removal of key. |
| 3854 static Handle<Derived> Shrink(Handle<Derived> table, Key key); | 3854 static Handle<Derived> Shrink(Handle<Derived> table, Key key); |
| 3855 | 3855 |
| 3856 // Ensure enough space for n additional elements. | 3856 // Ensure enough space for n additional elements. |
| 3857 MUST_USE_RESULT MaybeObject* EnsureCapacity( | 3857 MUST_USE_RESULT MaybeObject* EnsureCapacity( |
| 3858 int n, | 3858 int n, |
| 3859 Key key, | 3859 Key key, |
| 3860 PretenureFlag pretenure = NOT_TENURED); | 3860 PretenureFlag pretenure = NOT_TENURED); |
| 3861 static Handle<Derived> EnsureCapacity( |
| 3862 Handle<Derived> table, |
| 3863 int n, |
| 3864 Key key, |
| 3865 PretenureFlag pretenure = NOT_TENURED); |
| 3861 }; | 3866 }; |
| 3862 | 3867 |
| 3863 | 3868 |
| 3864 // HashTableKey is an abstract superclass for virtual key behavior. | 3869 // HashTableKey is an abstract superclass for virtual key behavior. |
| 3865 class HashTableKey { | 3870 class HashTableKey { |
| 3866 public: | 3871 public: |
| 3867 // Returns whether the other object matches this key. | 3872 // Returns whether the other object matches this key. |
| 3868 virtual bool IsMatch(Object* other) = 0; | 3873 virtual bool IsMatch(Object* other) = 0; |
| 3869 // Returns the hash value for this key. | 3874 // Returns the hash value for this key. |
| 3870 virtual uint32_t Hash() = 0; | 3875 virtual uint32_t Hash() = 0; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3957 | 3962 |
| 3958 | 3963 |
| 3959 // MapCache. | 3964 // MapCache. |
| 3960 // | 3965 // |
| 3961 // Maps keys that are a fixed array of unique names to a map. | 3966 // Maps keys that are a fixed array of unique names to a map. |
| 3962 // Used for canonicalize maps for object literals. | 3967 // Used for canonicalize maps for object literals. |
| 3963 class MapCache: public HashTable<MapCache, MapCacheShape, HashTableKey*> { | 3968 class MapCache: public HashTable<MapCache, MapCacheShape, HashTableKey*> { |
| 3964 public: | 3969 public: |
| 3965 // Find cached value for a name key, otherwise return null. | 3970 // Find cached value for a name key, otherwise return null. |
| 3966 Object* Lookup(FixedArray* key); | 3971 Object* Lookup(FixedArray* key); |
| 3967 MUST_USE_RESULT MaybeObject* Put(FixedArray* key, Map* value); | 3972 static Handle<MapCache> Put( |
| 3973 Handle<MapCache> map_cache, Handle<FixedArray> key, Handle<Map> value); |
| 3968 static inline MapCache* cast(Object* obj); | 3974 static inline MapCache* cast(Object* obj); |
| 3969 | 3975 |
| 3970 private: | 3976 private: |
| 3971 DISALLOW_IMPLICIT_CONSTRUCTORS(MapCache); | 3977 DISALLOW_IMPLICIT_CONSTRUCTORS(MapCache); |
| 3972 }; | 3978 }; |
| 3973 | 3979 |
| 3974 | 3980 |
| 3975 template <typename Derived, typename Shape, typename Key> | 3981 template <typename Derived, typename Shape, typename Key> |
| 3976 class Dictionary: public HashTable<Derived, Shape, Key> { | 3982 class Dictionary: public HashTable<Derived, Shape, Key> { |
| 3977 protected: | 3983 protected: |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4056 | 4062 |
| 4057 // Creates a new dictionary. | 4063 // Creates a new dictionary. |
| 4058 static Handle<Derived> New( | 4064 static Handle<Derived> New( |
| 4059 Isolate* isolate, | 4065 Isolate* isolate, |
| 4060 int at_least_space_for, | 4066 int at_least_space_for, |
| 4061 PretenureFlag pretenure = NOT_TENURED); | 4067 PretenureFlag pretenure = NOT_TENURED); |
| 4062 | 4068 |
| 4063 // Ensure enough space for n additional elements. | 4069 // Ensure enough space for n additional elements. |
| 4064 MUST_USE_RESULT MaybeObject* EnsureCapacity(int n, Key key); | 4070 MUST_USE_RESULT MaybeObject* EnsureCapacity(int n, Key key); |
| 4065 | 4071 |
| 4072 static Handle<Derived> EnsureCapacity(Handle<Derived> obj, int n, Key key); |
| 4073 |
| 4066 #ifdef OBJECT_PRINT | 4074 #ifdef OBJECT_PRINT |
| 4067 void Print(FILE* out = stdout); | 4075 void Print(FILE* out = stdout); |
| 4068 #endif | 4076 #endif |
| 4069 // Returns the key (slow). | 4077 // Returns the key (slow). |
| 4070 Object* SlowReverseLookup(Object* value); | 4078 Object* SlowReverseLookup(Object* value); |
| 4071 | 4079 |
| 4072 // Sets the entry to (key, value) pair. | 4080 // Sets the entry to (key, value) pair. |
| 4073 inline void SetEntry(int entry, | 4081 inline void SetEntry(int entry, |
| 4074 Object* key, | 4082 Object* key, |
| 4075 Object* value); | 4083 Object* value); |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4266 class ObjectHashTable: public HashTable<ObjectHashTable, | 4274 class ObjectHashTable: public HashTable<ObjectHashTable, |
| 4267 ObjectHashTableShape, | 4275 ObjectHashTableShape, |
| 4268 Object*> { | 4276 Object*> { |
| 4269 typedef HashTable<ObjectHashTable, ObjectHashTableShape, Object*> HashTable_; | 4277 typedef HashTable<ObjectHashTable, ObjectHashTableShape, Object*> HashTable_; |
| 4270 public: | 4278 public: |
| 4271 static inline ObjectHashTable* cast(Object* obj) { | 4279 static inline ObjectHashTable* cast(Object* obj) { |
| 4272 ASSERT(obj->IsHashTable()); | 4280 ASSERT(obj->IsHashTable()); |
| 4273 return reinterpret_cast<ObjectHashTable*>(obj); | 4281 return reinterpret_cast<ObjectHashTable*>(obj); |
| 4274 } | 4282 } |
| 4275 | 4283 |
| 4276 static Handle<ObjectHashTable> EnsureCapacity( | |
| 4277 Handle<ObjectHashTable> table, | |
| 4278 int n, | |
| 4279 Handle<Object> key, | |
| 4280 PretenureFlag pretenure = NOT_TENURED); | |
| 4281 | |
| 4282 // Attempt to shrink hash table after removal of key. | 4284 // Attempt to shrink hash table after removal of key. |
| 4283 static inline Handle<ObjectHashTable> Shrink(Handle<ObjectHashTable> table, | 4285 static inline Handle<ObjectHashTable> Shrink(Handle<ObjectHashTable> table, |
| 4284 Handle<Object> key); | 4286 Handle<Object> key); |
| 4285 | 4287 |
| 4286 // Looks up the value associated with the given key. The hole value is | 4288 // Looks up the value associated with the given key. The hole value is |
| 4287 // returned in case the key is not present. | 4289 // returned in case the key is not present. |
| 4288 Object* Lookup(Object* key); | 4290 Object* Lookup(Object* key); |
| 4289 | 4291 |
| 4290 // Adds (or overwrites) the value associated with the given key. Mapping a | 4292 // Adds (or overwrites) the value associated with the given key. Mapping a |
| 4291 // key to the hole value causes removal of the whole entry. | 4293 // key to the hole value causes removal of the whole entry. |
| (...skipping 3986 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8278 static Handle<CompilationCacheTable> Put( | 8280 static Handle<CompilationCacheTable> Put( |
| 8279 Handle<CompilationCacheTable> cache, Handle<String> src, | 8281 Handle<CompilationCacheTable> cache, Handle<String> src, |
| 8280 Handle<Context> context, Handle<Object> value); | 8282 Handle<Context> context, Handle<Object> value); |
| 8281 static Handle<CompilationCacheTable> PutEval( | 8283 static Handle<CompilationCacheTable> PutEval( |
| 8282 Handle<CompilationCacheTable> cache, Handle<String> src, | 8284 Handle<CompilationCacheTable> cache, Handle<String> src, |
| 8283 Handle<Context> context, Handle<SharedFunctionInfo> value, | 8285 Handle<Context> context, Handle<SharedFunctionInfo> value, |
| 8284 int scope_position); | 8286 int scope_position); |
| 8285 static Handle<CompilationCacheTable> PutRegExp( | 8287 static Handle<CompilationCacheTable> PutRegExp( |
| 8286 Handle<CompilationCacheTable> cache, Handle<String> src, | 8288 Handle<CompilationCacheTable> cache, Handle<String> src, |
| 8287 JSRegExp::Flags flags, Handle<FixedArray> value); | 8289 JSRegExp::Flags flags, Handle<FixedArray> value); |
| 8288 static Handle<CompilationCacheTable> EnsureCapacityFor( | |
| 8289 Handle<CompilationCacheTable> cache, int n, HashTableKey* key); | |
| 8290 void Remove(Object* value); | 8290 void Remove(Object* value); |
| 8291 | 8291 |
| 8292 static inline CompilationCacheTable* cast(Object* obj); | 8292 static inline CompilationCacheTable* cast(Object* obj); |
| 8293 | 8293 |
| 8294 private: | 8294 private: |
| 8295 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); | 8295 DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheTable); |
| 8296 }; | 8296 }; |
| 8297 | 8297 |
| 8298 | 8298 |
| 8299 class CodeCache: public Struct { | 8299 class CodeCache: public Struct { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8383 | 8383 |
| 8384 int GetIndex(Name* name, Code::Flags flags); | 8384 int GetIndex(Name* name, Code::Flags flags); |
| 8385 void RemoveByIndex(int index); | 8385 void RemoveByIndex(int index); |
| 8386 | 8386 |
| 8387 static inline CodeCacheHashTable* cast(Object* obj); | 8387 static inline CodeCacheHashTable* cast(Object* obj); |
| 8388 | 8388 |
| 8389 // Initial size of the fixed array backing the hash table. | 8389 // Initial size of the fixed array backing the hash table. |
| 8390 static const int kInitialSize = 64; | 8390 static const int kInitialSize = 64; |
| 8391 | 8391 |
| 8392 private: | 8392 private: |
| 8393 MUST_USE_RESULT MaybeObject* Put(Name* name, Code* code); | |
| 8394 | |
| 8395 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCacheHashTable); | 8393 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCacheHashTable); |
| 8396 }; | 8394 }; |
| 8397 | 8395 |
| 8398 | 8396 |
| 8399 class PolymorphicCodeCache: public Struct { | 8397 class PolymorphicCodeCache: public Struct { |
| 8400 public: | 8398 public: |
| 8401 DECL_ACCESSORS(cache, Object) | 8399 DECL_ACCESSORS(cache, Object) |
| 8402 | 8400 |
| 8403 static void Update(Handle<PolymorphicCodeCache> cache, | 8401 static void Update(Handle<PolymorphicCodeCache> cache, |
| 8404 MapHandleList* maps, | 8402 MapHandleList* maps, |
| (...skipping 2697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11102 } else { | 11100 } else { |
| 11103 value &= ~(1 << bit_position); | 11101 value &= ~(1 << bit_position); |
| 11104 } | 11102 } |
| 11105 return value; | 11103 return value; |
| 11106 } | 11104 } |
| 11107 }; | 11105 }; |
| 11108 | 11106 |
| 11109 } } // namespace v8::internal | 11107 } } // namespace v8::internal |
| 11110 | 11108 |
| 11111 #endif // V8_OBJECTS_H_ | 11109 #endif // V8_OBJECTS_H_ |
| OLD | NEW |