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_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/assert-scope.h" | 10 #include "src/assert-scope.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 // - JSProxy | 73 // - JSProxy |
74 // - FixedArrayBase | 74 // - FixedArrayBase |
75 // - ByteArray | 75 // - ByteArray |
76 // - BytecodeArray | 76 // - BytecodeArray |
77 // - FixedArray | 77 // - FixedArray |
78 // - DescriptorArray | 78 // - DescriptorArray |
79 // - LiteralsArray | 79 // - LiteralsArray |
80 // - HashTable | 80 // - HashTable |
81 // - Dictionary | 81 // - Dictionary |
82 // - StringTable | 82 // - StringTable |
| 83 // - StringSet |
83 // - CompilationCacheTable | 84 // - CompilationCacheTable |
84 // - CodeCacheHashTable | 85 // - CodeCacheHashTable |
85 // - MapCache | 86 // - MapCache |
86 // - OrderedHashTable | 87 // - OrderedHashTable |
87 // - OrderedHashSet | 88 // - OrderedHashSet |
88 // - OrderedHashMap | 89 // - OrderedHashMap |
89 // - Context | 90 // - Context |
90 // - TypeFeedbackMetadata | 91 // - TypeFeedbackMetadata |
91 // - TypeFeedbackVector | 92 // - TypeFeedbackVector |
92 // - ScopeInfo | 93 // - ScopeInfo |
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
969 V(JSMap) \ | 970 V(JSMap) \ |
970 V(JSSetIterator) \ | 971 V(JSSetIterator) \ |
971 V(JSMapIterator) \ | 972 V(JSMapIterator) \ |
972 V(JSWeakCollection) \ | 973 V(JSWeakCollection) \ |
973 V(JSWeakMap) \ | 974 V(JSWeakMap) \ |
974 V(JSWeakSet) \ | 975 V(JSWeakSet) \ |
975 V(JSRegExp) \ | 976 V(JSRegExp) \ |
976 V(HashTable) \ | 977 V(HashTable) \ |
977 V(Dictionary) \ | 978 V(Dictionary) \ |
978 V(StringTable) \ | 979 V(StringTable) \ |
| 980 V(StringSet) \ |
979 V(NormalizedMapCache) \ | 981 V(NormalizedMapCache) \ |
980 V(CompilationCacheTable) \ | 982 V(CompilationCacheTable) \ |
981 V(CodeCacheHashTable) \ | 983 V(CodeCacheHashTable) \ |
982 V(PolymorphicCodeCacheHashTable) \ | 984 V(PolymorphicCodeCacheHashTable) \ |
983 V(MapCache) \ | 985 V(MapCache) \ |
984 V(JSGlobalObject) \ | 986 V(JSGlobalObject) \ |
985 V(JSGlobalProxy) \ | 987 V(JSGlobalProxy) \ |
986 V(Undetectable) \ | 988 V(Undetectable) \ |
987 V(AccessCheckNeeded) \ | 989 V(AccessCheckNeeded) \ |
988 V(Callable) \ | 990 V(Callable) \ |
(...skipping 2436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3425 | 3427 |
3426 DECLARE_CAST(StringTable) | 3428 DECLARE_CAST(StringTable) |
3427 | 3429 |
3428 private: | 3430 private: |
3429 template <bool seq_one_byte> | 3431 template <bool seq_one_byte> |
3430 friend class JsonParser; | 3432 friend class JsonParser; |
3431 | 3433 |
3432 DISALLOW_IMPLICIT_CONSTRUCTORS(StringTable); | 3434 DISALLOW_IMPLICIT_CONSTRUCTORS(StringTable); |
3433 }; | 3435 }; |
3434 | 3436 |
| 3437 class StringSetShape : public BaseShape<String*> { |
| 3438 public: |
| 3439 static inline bool IsMatch(String* key, Object* value); |
| 3440 static inline uint32_t Hash(String* key); |
| 3441 static inline uint32_t HashForObject(String* key, Object* object); |
| 3442 |
| 3443 static const int kPrefixSize = 0; |
| 3444 static const int kEntrySize = 1; |
| 3445 }; |
| 3446 |
| 3447 class StringSet : public HashTable<StringSet, StringSetShape, String*> { |
| 3448 public: |
| 3449 static Handle<StringSet> New(Isolate* isolate); |
| 3450 static Handle<StringSet> Add(Handle<StringSet> blacklist, |
| 3451 Handle<String> name); |
| 3452 bool Has(Handle<String> name); |
| 3453 |
| 3454 DECLARE_CAST(StringSet) |
| 3455 }; |
3435 | 3456 |
3436 template <typename Derived, typename Shape, typename Key> | 3457 template <typename Derived, typename Shape, typename Key> |
3437 class Dictionary: public HashTable<Derived, Shape, Key> { | 3458 class Dictionary: public HashTable<Derived, Shape, Key> { |
3438 typedef HashTable<Derived, Shape, Key> DerivedHashTable; | 3459 typedef HashTable<Derived, Shape, Key> DerivedHashTable; |
3439 | 3460 |
3440 public: | 3461 public: |
3441 // Returns the value at entry. | 3462 // Returns the value at entry. |
3442 Object* ValueAt(int entry) { | 3463 Object* ValueAt(int entry) { |
3443 return this->get(Derived::EntryToIndex(entry) + 1); | 3464 return this->get(Derived::EntryToIndex(entry) + 1); |
3444 } | 3465 } |
(...skipping 7453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10898 } | 10919 } |
10899 return value; | 10920 return value; |
10900 } | 10921 } |
10901 }; | 10922 }; |
10902 | 10923 |
10903 | 10924 |
10904 } // NOLINT, false-positive due to second-order macros. | 10925 } // NOLINT, false-positive due to second-order macros. |
10905 } // NOLINT, false-positive due to second-order macros. | 10926 } // NOLINT, false-positive due to second-order macros. |
10906 | 10927 |
10907 #endif // V8_OBJECTS_H_ | 10928 #endif // V8_OBJECTS_H_ |
OLD | NEW |