| Index: src/objects.h
|
| diff --git a/src/objects.h b/src/objects.h
|
| index 43671a677ae769eed05ce29a506df03a7b958c1c..cd646851a7373535f5487dbd6265879eb65eae55 100644
|
| --- a/src/objects.h
|
| +++ b/src/objects.h
|
| @@ -888,121 +888,122 @@ template <class C> inline bool Is(Object* obj);
|
| V(Primitive) \
|
| V(Number)
|
|
|
| -#define HEAP_OBJECT_TYPE_LIST(V) \
|
| - V(HeapNumber) \
|
| - V(MutableHeapNumber) \
|
| - V(Simd128Value) \
|
| - V(Float32x4) \
|
| - V(Int32x4) \
|
| - V(Uint32x4) \
|
| - V(Bool32x4) \
|
| - V(Int16x8) \
|
| - V(Uint16x8) \
|
| - V(Bool16x8) \
|
| - V(Int8x16) \
|
| - V(Uint8x16) \
|
| - V(Bool8x16) \
|
| - V(Name) \
|
| - V(UniqueName) \
|
| - V(String) \
|
| - V(SeqString) \
|
| - V(ExternalString) \
|
| - V(ConsString) \
|
| - V(SlicedString) \
|
| - V(ExternalTwoByteString) \
|
| - V(ExternalOneByteString) \
|
| - V(SeqTwoByteString) \
|
| - V(SeqOneByteString) \
|
| - V(InternalizedString) \
|
| - V(Symbol) \
|
| - \
|
| - V(FixedTypedArrayBase) \
|
| - V(FixedUint8Array) \
|
| - V(FixedInt8Array) \
|
| - V(FixedUint16Array) \
|
| - V(FixedInt16Array) \
|
| - V(FixedUint32Array) \
|
| - V(FixedInt32Array) \
|
| - V(FixedFloat32Array) \
|
| - V(FixedFloat64Array) \
|
| - V(FixedUint8ClampedArray) \
|
| - V(ByteArray) \
|
| - V(BytecodeArray) \
|
| - V(FreeSpace) \
|
| - V(JSReceiver) \
|
| - V(JSObject) \
|
| - V(JSContextExtensionObject) \
|
| - V(JSGeneratorObject) \
|
| - V(JSModule) \
|
| - V(Map) \
|
| - V(DescriptorArray) \
|
| - V(TransitionArray) \
|
| - V(LiteralsArray) \
|
| - V(TypeFeedbackMetadata) \
|
| - V(TypeFeedbackVector) \
|
| - V(DeoptimizationInputData) \
|
| - V(DeoptimizationOutputData) \
|
| - V(DependentCode) \
|
| - V(HandlerTable) \
|
| - V(FixedArray) \
|
| - V(FixedDoubleArray) \
|
| - V(WeakFixedArray) \
|
| - V(ArrayList) \
|
| - V(Context) \
|
| - V(ScriptContextTable) \
|
| - V(NativeContext) \
|
| - V(ScopeInfo) \
|
| - V(JSBoundFunction) \
|
| - V(JSFunction) \
|
| - V(Code) \
|
| - V(AbstractCode) \
|
| - V(Oddball) \
|
| - V(SharedFunctionInfo) \
|
| - V(JSValue) \
|
| - V(JSDate) \
|
| - V(JSMessageObject) \
|
| - V(StringWrapper) \
|
| - V(Foreign) \
|
| - V(Boolean) \
|
| - V(JSArray) \
|
| - V(JSArrayBuffer) \
|
| - V(JSArrayBufferView) \
|
| - V(JSTypedArray) \
|
| - V(JSDataView) \
|
| - V(JSProxy) \
|
| - V(JSSet) \
|
| - V(JSMap) \
|
| - V(JSSetIterator) \
|
| - V(JSMapIterator) \
|
| - V(JSWeakCollection) \
|
| - V(JSWeakMap) \
|
| - V(JSWeakSet) \
|
| - V(JSRegExp) \
|
| - V(HashTable) \
|
| - V(Dictionary) \
|
| - V(StringTable) \
|
| - V(StringSet) \
|
| - V(NormalizedMapCache) \
|
| - V(CompilationCacheTable) \
|
| - V(CodeCacheHashTable) \
|
| - V(MapCache) \
|
| - V(JSGlobalObject) \
|
| - V(JSGlobalProxy) \
|
| - V(Undetectable) \
|
| - V(AccessCheckNeeded) \
|
| - V(Callable) \
|
| - V(Function) \
|
| - V(Constructor) \
|
| - V(TemplateInfo) \
|
| - V(Filler) \
|
| - V(FixedArrayBase) \
|
| - V(External) \
|
| - V(Struct) \
|
| - V(Cell) \
|
| - V(PropertyCell) \
|
| - V(WeakCell) \
|
| - V(ObjectHashTable) \
|
| - V(WeakHashTable) \
|
| +#define HEAP_OBJECT_TYPE_LIST(V) \
|
| + V(HeapNumber) \
|
| + V(MutableHeapNumber) \
|
| + V(Simd128Value) \
|
| + V(Float32x4) \
|
| + V(Int32x4) \
|
| + V(Uint32x4) \
|
| + V(Bool32x4) \
|
| + V(Int16x8) \
|
| + V(Uint16x8) \
|
| + V(Bool16x8) \
|
| + V(Int8x16) \
|
| + V(Uint8x16) \
|
| + V(Bool8x16) \
|
| + V(Name) \
|
| + V(UniqueName) \
|
| + V(String) \
|
| + V(SeqString) \
|
| + V(ExternalString) \
|
| + V(ConsString) \
|
| + V(SlicedString) \
|
| + V(ExternalTwoByteString) \
|
| + V(ExternalOneByteString) \
|
| + V(SeqTwoByteString) \
|
| + V(SeqOneByteString) \
|
| + V(InternalizedString) \
|
| + V(Symbol) \
|
| + \
|
| + V(FixedTypedArrayBase) \
|
| + V(FixedUint8Array) \
|
| + V(FixedInt8Array) \
|
| + V(FixedUint16Array) \
|
| + V(FixedInt16Array) \
|
| + V(FixedUint32Array) \
|
| + V(FixedInt32Array) \
|
| + V(FixedFloat32Array) \
|
| + V(FixedFloat64Array) \
|
| + V(FixedUint8ClampedArray) \
|
| + V(ByteArray) \
|
| + V(BytecodeArray) \
|
| + V(FreeSpace) \
|
| + V(JSReceiver) \
|
| + V(JSObject) \
|
| + V(JSContextExtensionObject) \
|
| + V(JSGeneratorObject) \
|
| + V(JSModule) \
|
| + V(Map) \
|
| + V(DescriptorArray) \
|
| + V(TransitionArray) \
|
| + V(LiteralsArray) \
|
| + V(TypeFeedbackMetadata) \
|
| + V(TypeFeedbackVector) \
|
| + V(DeoptimizationInputData) \
|
| + V(DeoptimizationOutputData) \
|
| + V(DependentCode) \
|
| + V(HandlerTable) \
|
| + V(FixedArray) \
|
| + V(FixedDoubleArray) \
|
| + V(WeakFixedArray) \
|
| + V(ArrayList) \
|
| + V(Context) \
|
| + V(ScriptContextTable) \
|
| + V(NativeContext) \
|
| + V(ScopeInfo) \
|
| + V(JSBoundFunction) \
|
| + V(JSFunction) \
|
| + V(Code) \
|
| + V(AbstractCode) \
|
| + V(Oddball) \
|
| + V(SharedFunctionInfo) \
|
| + V(JSValue) \
|
| + V(JSDate) \
|
| + V(JSMessageObject) \
|
| + V(StringWrapper) \
|
| + V(Foreign) \
|
| + V(Boolean) \
|
| + V(JSArray) \
|
| + V(JSArrayBuffer) \
|
| + V(JSArrayBufferView) \
|
| + V(JSTypedArray) \
|
| + V(JSDataView) \
|
| + V(JSProxy) \
|
| + V(JSSet) \
|
| + V(JSMap) \
|
| + V(JSSetIterator) \
|
| + V(JSMapIterator) \
|
| + V(JSWeakCollection) \
|
| + V(JSWeakMap) \
|
| + V(JSWeakSet) \
|
| + V(JSRegExp) \
|
| + V(HashTable) \
|
| + V(Dictionary) \
|
| + V(StringTable) \
|
| + V(StringSet) \
|
| + V(NormalizedMapCache) \
|
| + V(CompilationCacheTable) \
|
| + V(CodeCacheHashTable) \
|
| + V(MapCache) \
|
| + V(JSGlobalObject) \
|
| + V(JSGlobalProxy) \
|
| + V(Undetectable) \
|
| + V(AccessCheckNeeded) \
|
| + V(Callable) \
|
| + V(Function) \
|
| + V(Constructor) \
|
| + V(TemplateInfo) \
|
| + V(Filler) \
|
| + V(FixedArrayBase) \
|
| + V(External) \
|
| + V(Struct) \
|
| + V(Cell) \
|
| + V(PropertyCell) \
|
| + V(WeakCell) \
|
| + V(ObjectHashTable) \
|
| + V(ObjectHashSet) \
|
| + V(WeakHashTable) \
|
| V(OrderedHashTable)
|
|
|
| #define ODDBALL_LIST(V) \
|
| @@ -3233,6 +3234,8 @@ class HashTable : public HashTableBase {
|
| inline int FindEntry(Key key);
|
| inline int FindEntry(Isolate* isolate, Key key, int32_t hash);
|
| int FindEntry(Isolate* isolate, Key key);
|
| + inline bool Has(Isolate* isolate, Key key);
|
| + inline bool Has(Key key);
|
|
|
| // Rehashes the table in-place.
|
| void Rehash(Key key);
|
| @@ -3457,11 +3460,13 @@ class Dictionary: public HashTable<Derived, Shape, Key> {
|
|
|
| // Collect the keys into the given KeyAccumulator, in ascending chronological
|
| // order of property creation.
|
| - static void CollectKeysTo(Handle<Dictionary<Derived, Shape, Key> > dictionary,
|
| - KeyAccumulator* keys, PropertyFilter filter);
|
| + static void CollectKeysTo(Handle<Dictionary<Derived, Shape, Key>> dictionary,
|
| + KeyAccumulator* keys);
|
|
|
| // Copies enumerable keys to preallocated fixed array.
|
| - void CopyEnumKeysTo(FixedArray* storage);
|
| + static void CopyEnumKeysTo(Handle<Dictionary<Derived, Shape, Key>> dictionary,
|
| + Handle<FixedArray> storage, KeyCollectionMode mode,
|
| + KeyAccumulator* accumulator);
|
|
|
| // Accessors for next enumeration index.
|
| void SetNextEnumerationIndex(int index) {
|
| @@ -3793,6 +3798,23 @@ class ObjectHashTable: public HashTable<ObjectHashTable,
|
| }
|
| };
|
|
|
| +class ObjectHashSetShape : public ObjectHashTableShape {
|
| + public:
|
| + static const int kPrefixSize = 0;
|
| + static const int kEntrySize = 1;
|
| +};
|
| +
|
| +class ObjectHashSet
|
| + : public HashTable<ObjectHashSet, ObjectHashSetShape, Handle<Object>> {
|
| + public:
|
| + static Handle<ObjectHashSet> Add(Handle<ObjectHashSet> set,
|
| + Handle<Object> key);
|
| +
|
| + inline bool Has(Isolate* isolate, Handle<Object> key, int32_t hash);
|
| + inline bool Has(Isolate* isolate, Handle<Object> key);
|
| +
|
| + DECLARE_CAST(ObjectHashSet)
|
| +};
|
|
|
| // OrderedHashTable is a HashTable with Object keys that preserves
|
| // insertion order. There are Map and Set interfaces (OrderedHashMap
|
|
|