Chromium Code Reviews| Index: src/objects.h |
| diff --git a/src/objects.h b/src/objects.h |
| index 33b031bbc8b6829e3d4db624c4bbc50819261ab0..ba546ef18f580ea3437c8522559b1e2995e46ad6 100644 |
| --- a/src/objects.h |
| +++ b/src/objects.h |
| @@ -60,11 +60,13 @@ |
| // - JSArray |
| // - JSArrayBuffer |
| // - JSArrayBufferView |
| -// - JSTypedArray |
| -// - JSDataView |
| +// - JSTypedArray |
| +// - JSDataView |
| // - JSSet |
| // - JSMap |
| -// - JSWeakMap |
| +// - WeakCollection |
|
rossberg
2013/07/19 09:55:49
Just one nit: this should be named JSWeakCollectio
|
| +// - JSWeakMap |
| +// - JSWeakSet |
| // - JSRegExp |
| // - JSFunction |
| // - JSGeneratorObject |
| @@ -415,6 +417,7 @@ const int kStubMinorKeyBits = kBitsPerInt - kSmiTagSize - kStubMajorKeyBits; |
| V(JS_DATA_VIEW_TYPE) \ |
| V(JS_PROXY_TYPE) \ |
| V(JS_WEAK_MAP_TYPE) \ |
| + V(JS_WEAK_SET_TYPE) \ |
| V(JS_REGEXP_TYPE) \ |
| \ |
| V(JS_FUNCTION_TYPE) \ |
| @@ -754,6 +757,7 @@ enum InstanceType { |
| JS_SET_TYPE, |
| JS_MAP_TYPE, |
| JS_WEAK_MAP_TYPE, |
| + JS_WEAK_SET_TYPE, |
| JS_REGEXP_TYPE, |
| @@ -1003,7 +1007,9 @@ class MaybeObject BASE_EMBEDDED { |
| V(JSFunctionProxy) \ |
| V(JSSet) \ |
| V(JSMap) \ |
| + V(WeakCollection) \ |
| V(JSWeakMap) \ |
| + V(JSWeakSet) \ |
| V(JSRegExp) \ |
| V(HashTable) \ |
| V(Dictionary) \ |
| @@ -8873,8 +8879,8 @@ class JSMap: public JSObject { |
| }; |
| -// The JSWeakMap describes EcmaScript Harmony weak maps |
| -class JSWeakMap: public JSObject { |
| +// Base class for both JSWeakMap and JSWeakSet |
| +class WeakCollection: public JSObject { |
| public: |
| // [table]: the backing hash table mapping keys to values. |
| DECL_ACCESSORS(table, Object) |
| @@ -8882,6 +8888,18 @@ class JSWeakMap: public JSObject { |
| // [next]: linked list of encountered weak maps during GC. |
| DECL_ACCESSORS(next, Object) |
| + static const int kTableOffset = JSObject::kHeaderSize; |
| + static const int kNextOffset = kTableOffset + kPointerSize; |
| + static const int kSize = kNextOffset + kPointerSize; |
| + |
| + private: |
| + DISALLOW_IMPLICIT_CONSTRUCTORS(WeakCollection); |
| +}; |
| + |
| + |
| +// The JSWeakMap describes EcmaScript Harmony weak maps |
| +class JSWeakMap: public WeakCollection { |
| + public: |
| // Casting. |
| static inline JSWeakMap* cast(Object* obj); |
| @@ -8889,15 +8907,27 @@ class JSWeakMap: public JSObject { |
| DECLARE_PRINTER(JSWeakMap) |
| DECLARE_VERIFIER(JSWeakMap) |
| - static const int kTableOffset = JSObject::kHeaderSize; |
| - static const int kNextOffset = kTableOffset + kPointerSize; |
| - static const int kSize = kNextOffset + kPointerSize; |
| - |
| private: |
| DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakMap); |
| }; |
| +// The JSWeakSet describes EcmaScript Harmony weak sets |
| +class JSWeakSet: public WeakCollection { |
| + public: |
| + |
| + // Casting. |
| + static inline JSWeakSet* cast(Object* obj); |
| + |
| + // Dispatched behavior. |
| + DECLARE_PRINTER(JSWeakSet) |
| + DECLARE_VERIFIER(JSWeakSet) |
| + |
| + private: |
| + DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakSet); |
| +}; |
| + |
| + |
| class JSArrayBuffer: public JSObject { |
| public: |
| // [backing_store]: backing memory for this array |