[JSC] Puts fixed-sized cells into IsoSubspace more
authorysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Dec 2019 01:57:24 +0000 (01:57 +0000)
committerysuzuki@apple.com <ysuzuki@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 13 Dec 2019 01:57:24 +0000 (01:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=205183

Reviewed by Saam Barati.

This patch puts many of fixed-sized cells into IsoSubspace.

    - Exception
    - JSPropertyNameEnumerator
    - RegExp
    - StructureChain
    - MapBucket
    - JSMapIterator
    - ScopedArgumentsTable
    - SetBucket
    - JSSetIterator
    - JSScriptFetchParameters
    - JSScriptFetcher
    - JSSourceCode
    - JSTemplateObjectDescriptor

* runtime/Exception.h:
* runtime/HashMapImpl.h:
(JSC::HashMapBucket::selectStructure): Deleted.
(JSC::HashMapBucket::info): Deleted.
(JSC::HashMapBucket::createStructure): Deleted.
(JSC::HashMapBucket::create): Deleted.
(JSC::HashMapBucket::createSentinel): Deleted.
(JSC::HashMapBucket::HashMapBucket): Deleted.
(JSC::HashMapBucket::setNext): Deleted.
(JSC::HashMapBucket::setPrev): Deleted.
(JSC::HashMapBucket::setKey): Deleted.
(JSC::HashMapBucket::setValue): Deleted.
(JSC::HashMapBucket::key const): Deleted.
(JSC::HashMapBucket::value const): Deleted.
(JSC::HashMapBucket::next const): Deleted.
(JSC::HashMapBucket::prev const): Deleted.
(JSC::HashMapBucket::deleted const): Deleted.
(JSC::HashMapBucket::makeDeleted): Deleted.
(JSC::HashMapBucket::offsetOfKey): Deleted.
(JSC::HashMapBucket::offsetOfValue): Deleted.
(JSC::HashMapBucket::offsetOfNext): Deleted.
(JSC::HashMapBucket::extractValue): Deleted.
* runtime/JSMapIterator.h:
* runtime/JSPropertyNameEnumerator.h:
* runtime/JSScriptFetchParameters.h:
* runtime/JSScriptFetcher.h:
* runtime/JSSetIterator.h:
* runtime/JSSourceCode.h:
* runtime/JSTemplateObjectDescriptor.h:
* runtime/RegExp.h:
* runtime/ScopedArgumentsTable.h:
* runtime/StructureChain.h:
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@253461 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/runtime/Exception.h
Source/JavaScriptCore/runtime/HashMapImpl.h
Source/JavaScriptCore/runtime/JSMapIterator.h
Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h
Source/JavaScriptCore/runtime/JSScriptFetchParameters.h
Source/JavaScriptCore/runtime/JSScriptFetcher.h
Source/JavaScriptCore/runtime/JSSetIterator.h
Source/JavaScriptCore/runtime/JSSourceCode.h
Source/JavaScriptCore/runtime/JSTemplateObjectDescriptor.h
Source/JavaScriptCore/runtime/RegExp.h
Source/JavaScriptCore/runtime/ScopedArgumentsTable.h
Source/JavaScriptCore/runtime/StructureChain.h
Source/JavaScriptCore/runtime/VM.cpp
Source/JavaScriptCore/runtime/VM.h

index 636bef1..ab70627 100644 (file)
@@ -1,5 +1,64 @@
 2019-12-12  Yusuke Suzuki  <ysuzuki@apple.com>
 
+        [JSC] Puts fixed-sized cells into IsoSubspace more
+        https://bugs.webkit.org/show_bug.cgi?id=205183
+
+        Reviewed by Saam Barati.
+
+        This patch puts many of fixed-sized cells into IsoSubspace.
+
+            - Exception
+            - JSPropertyNameEnumerator
+            - RegExp
+            - StructureChain
+            - MapBucket
+            - JSMapIterator
+            - ScopedArgumentsTable
+            - SetBucket
+            - JSSetIterator
+            - JSScriptFetchParameters
+            - JSScriptFetcher
+            - JSSourceCode
+            - JSTemplateObjectDescriptor
+
+        * runtime/Exception.h:
+        * runtime/HashMapImpl.h:
+        (JSC::HashMapBucket::selectStructure): Deleted.
+        (JSC::HashMapBucket::info): Deleted.
+        (JSC::HashMapBucket::createStructure): Deleted.
+        (JSC::HashMapBucket::create): Deleted.
+        (JSC::HashMapBucket::createSentinel): Deleted.
+        (JSC::HashMapBucket::HashMapBucket): Deleted.
+        (JSC::HashMapBucket::setNext): Deleted.
+        (JSC::HashMapBucket::setPrev): Deleted.
+        (JSC::HashMapBucket::setKey): Deleted.
+        (JSC::HashMapBucket::setValue): Deleted.
+        (JSC::HashMapBucket::key const): Deleted.
+        (JSC::HashMapBucket::value const): Deleted.
+        (JSC::HashMapBucket::next const): Deleted.
+        (JSC::HashMapBucket::prev const): Deleted.
+        (JSC::HashMapBucket::deleted const): Deleted.
+        (JSC::HashMapBucket::makeDeleted): Deleted.
+        (JSC::HashMapBucket::offsetOfKey): Deleted.
+        (JSC::HashMapBucket::offsetOfValue): Deleted.
+        (JSC::HashMapBucket::offsetOfNext): Deleted.
+        (JSC::HashMapBucket::extractValue): Deleted.
+        * runtime/JSMapIterator.h:
+        * runtime/JSPropertyNameEnumerator.h:
+        * runtime/JSScriptFetchParameters.h:
+        * runtime/JSScriptFetcher.h:
+        * runtime/JSSetIterator.h:
+        * runtime/JSSourceCode.h:
+        * runtime/JSTemplateObjectDescriptor.h:
+        * runtime/RegExp.h:
+        * runtime/ScopedArgumentsTable.h:
+        * runtime/StructureChain.h:
+        * runtime/VM.cpp:
+        (JSC::VM::VM):
+        * runtime/VM.h:
+
+2019-12-12  Yusuke Suzuki  <ysuzuki@apple.com>
+
         [JSC] Wasm init-expr should reject mutable globals
         https://bugs.webkit.org/show_bug.cgi?id=205191
 
index c71944c..f803614 100644 (file)
@@ -37,6 +37,12 @@ public:
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
     static constexpr bool needsDestruction = true;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return &vm.exceptionSpace;
+    }
+
     enum StackCaptureAction {
         CaptureStack,
         DoNotCaptureStack
index 4243fe2..d116d64 100644 (file)
@@ -53,8 +53,8 @@ struct HashMapBucketDataKeyValue {
 };
 
 template <typename Data>
-class HashMapBucket : public JSCell {
-    typedef JSCell Base;
+class HashMapBucket final : public JSCell {
+    using Base = JSCell;
 
     template <typename T = Data>
     static typename std::enable_if<std::is_same<T, HashMapBucketDataKey>::value, Structure*>::type selectStructure(VM& vm)
@@ -72,16 +72,21 @@ public:
     static const HashTableType Type = Data::Type;
     static const ClassInfo s_info; // This is never accessed directly, since that would break linkage on some compilers.
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        if constexpr (Type == HashTableType::Key)
+            return vm.setBucketSpace<mode>();
+        else
+            return vm.mapBucketSpace<mode>();
+    }
 
     static const ClassInfo* info()
     {
-        switch (Type) {
-        case HashTableType::Key:
+        if constexpr (Type == HashTableType::Key)
             return getHashMapBucketKeyClassInfo();
-        case HashTableType::KeyValue:
+        else
             return getHashMapBucketKeyValueClassInfo();
-        }
-        RELEASE_ASSERT_NOT_REACHED();
     }
 
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
index 48936a7..fef725d 100644 (file)
@@ -39,6 +39,12 @@ public:
 
     DECLARE_EXPORT_INFO;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.mapIteratorSpace<mode>();
+    }
+
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
     {
         return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
index 5a57477..dae7c4b 100644 (file)
@@ -37,6 +37,12 @@ public:
     using Base = JSCell;
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return &vm.propertyNameEnumeratorSpace;
+    }
+
     static JSPropertyNameEnumerator* create(VM&, Structure*, uint32_t, uint32_t, PropertyNameArray&&);
 
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
index a7b8ce4..0162dbd 100644 (file)
@@ -42,6 +42,12 @@ public:
 
     DECLARE_EXPORT_INFO;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.scriptFetchParametersSpace<mode>();
+    }
+
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
     {
         return Structure::create(vm, globalObject, prototype, TypeInfo(JSScriptFetchParametersType, StructureFlags), info());
index e8f3178..f21273e 100644 (file)
@@ -42,6 +42,12 @@ public:
 
     DECLARE_EXPORT_INFO;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.scriptFetcherSpace<mode>();
+    }
+
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
     {
         return Structure::create(vm, globalObject, prototype, TypeInfo(JSScriptFetcherType, StructureFlags), info());
index 42ed8ec..5d7d94d 100644 (file)
@@ -39,6 +39,12 @@ public:
 
     DECLARE_EXPORT_INFO;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.setIteratorSpace<mode>();
+    }
+
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
     {
         return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
index daa03b1..aa42a7c 100644 (file)
@@ -41,6 +41,12 @@ public:
 
     DECLARE_EXPORT_INFO;
 
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.sourceCodeSpace<mode>();
+    }
+
     static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
     {
         return Structure::create(vm, globalObject, prototype, TypeInfo(JSSourceCodeType, StructureFlags), info());
index 3a66ca2..b8cffb4 100644 (file)
@@ -37,6 +37,11 @@ public:
 
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
     static constexpr bool needsDestruction = true;
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.templateObjectDescriptorSpace<mode>();
+    }
     DECLARE_INFO;
 
     static JSTemplateObjectDescriptor* create(VM&, Ref<TemplateObjectDescriptor>&&, int);
index 622c0dd..7d026bf 100644 (file)
@@ -42,11 +42,17 @@ class RegExp final : public JSCell {
     friend class CachedRegExp;
 
 public:
-    typedef JSCell Base;
+    using Base = JSCell;
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+    static constexpr bool needsDestruction = true;
+
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return &vm.regExpSpace;
+    }
 
     JS_EXPORT_PRIVATE static RegExp* create(VM&, const String& pattern, OptionSet<Yarr::Flags>);
-    static constexpr bool needsDestruction = true;
     static void destroy(JSCell*);
     static size_t estimatedSize(JSCell*, VM&);
     JS_EXPORT_PRIVATE static void dumpToStream(const JSCell*, PrintStream&);
index f21653e..192dbe1 100644 (file)
@@ -42,8 +42,15 @@ class ScopedArgumentsTable final : public JSCell {
     friend class CachedScopedArgumentsTable;
 
 public:
-    typedef JSCell Base;
+    using Base = JSCell;
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+    static constexpr bool needsDestruction = true;
+
+    template<typename CellType, SubspaceAccess mode>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return vm.scopedArgumentsTableSpace<mode>();
+    }
     
 private:
     ScopedArgumentsTable(VM&);
@@ -53,7 +60,6 @@ public:
     static ScopedArgumentsTable* create(VM&);
     static ScopedArgumentsTable* create(VM&, uint32_t length);
     
-    static constexpr bool needsDestruction = true;
     static void destroy(JSCell*);
 
     ScopedArgumentsTable* clone(VM&);
index b848015..b7a60f7 100644 (file)
@@ -43,6 +43,12 @@ public:
     using Base = JSCell;
     static constexpr unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
 
+    template<typename CellType, SubspaceAccess>
+    static IsoSubspace* subspaceFor(VM& vm)
+    {
+        return &vm.structureChainSpace;
+    }
+
     static StructureChain* create(VM&, JSObject*);
     WriteBarrier<Structure>* head() { return m_vector.get(); }
     static void visitChildren(JSCell*, SlotVisitor&);
index e163269..af0aa4e 100644 (file)
 #include "StrictEvalActivation.h"
 #include "StringObject.h"
 #include "StrongInlines.h"
+#include "StructureChain.h"
 #include "StructureInlines.h"
 #include "SymbolObject.h"
 #include "TestRunnerUtils.h"
@@ -357,6 +358,7 @@ VM::VM(VMType vmType, HeapType heapType)
     , customGetterSetterSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), CustomGetterSetter)
     , dateInstanceSpace ISO_SUBSPACE_INIT(heap, dateInstanceHeapCellType.get(), DateInstance)
     , domAttributeGetterSetterSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), DOMAttributeGetterSetter)
+    , exceptionSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), Exception)
     , executableToCodeBlockEdgeSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), ExecutableToCodeBlockEdge) // Hash:0x7b730b20
     , functionSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), JSFunction) // Hash:0x800fca72
     , getterSetterSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), GetterSetter)
@@ -365,13 +367,16 @@ VM::VM(VMType vmType, HeapType heapType)
     , nativeExecutableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), NativeExecutable) // Hash:0x67567f95
     , numberObjectSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), NumberObject)
     , promiseSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), JSPromise)
+    , propertyNameEnumeratorSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), JSPropertyNameEnumerator)
     , propertyTableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), PropertyTable) // Hash:0xc6bc9f12
+    , regExpSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), RegExp)
     , regExpObjectSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), RegExpObject)
     , ropeStringSpace ISO_SUBSPACE_INIT(heap, stringHeapCellType.get(), JSRopeString)
     , scopedArgumentsSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), ScopedArguments)
     , sparseArrayValueMapSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), SparseArrayValueMap)
     , stringSpace ISO_SUBSPACE_INIT(heap, stringHeapCellType.get(), JSString) // Hash:0x90cf758f
     , stringObjectSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), StringObject)
+    , structureChainSpace ISO_SUBSPACE_INIT(heap, cellHeapCellType.get(), StructureChain)
     , structureRareDataSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), StructureRareData) // Hash:0xaca4e62d
     , structureSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), Structure) // Hash:0x1f1bcdca
     , symbolTableSpace ISO_SUBSPACE_INIT(heap, destructibleCellHeapCellType.get(), SymbolTable) // Hash:0xc5215afd
@@ -1405,14 +1410,23 @@ DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(jsModuleRecordSpace, jsModuleRecordHeapC
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int8ArraySpace, cellHeapCellType.get(), JSInt8Array)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int16ArraySpace, cellHeapCellType.get(), JSInt16Array)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int32ArraySpace, cellHeapCellType.get(), JSInt32Array)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapBucketSpace, cellHeapCellType.get(), JSMap::BucketType)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapIteratorSpace, cellHeapCellType.get(), JSMapIterator)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapSpace, cellHeapCellType.get(), JSMap)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(moduleNamespaceObjectSpace, moduleNamespaceObjectHeapCellType.get(), JSModuleNamespaceObject)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(nativeStdFunctionSpace, nativeStdFunctionHeapCellType.get(), JSNativeStdFunction) // Hash:0x70ed61e4
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyObjectSpace, cellHeapCellType.get(), ProxyObject)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyRevokeSpace, cellHeapCellType.get(), ProxyRevoke) // Hash:0xb506a939
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scopedArgumentsTableSpace, destructibleCellHeapCellType.get(), ScopedArgumentsTable)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scriptFetchParametersSpace, destructibleCellHeapCellType.get(), JSScriptFetchParameters)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scriptFetcherSpace, destructibleCellHeapCellType.get(), JSScriptFetcher)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setBucketSpace, cellHeapCellType.get(), JSSet::BucketType)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setIteratorSpace, cellHeapCellType.get(), JSSetIterator)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setSpace, cellHeapCellType.get(), JSSet)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(sourceCodeSpace, destructibleCellHeapCellType.get(), JSSourceCode)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(symbolSpace, destructibleCellHeapCellType.get(), Symbol)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(symbolObjectSpace, cellHeapCellType.get(), SymbolObject)
+DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(templateObjectDescriptorSpace, destructibleCellHeapCellType.get(), JSTemplateObjectDescriptor)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint8ArraySpace, cellHeapCellType.get(), JSUint8Array)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint8ClampedArraySpace, cellHeapCellType.get(), JSUint8ClampedArray)
 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint16ArraySpace, cellHeapCellType.get(), JSUint16Array)
index 999fcb7..af20198 100644 (file)
@@ -444,6 +444,7 @@ public:
     IsoSubspace customGetterSetterSpace;
     IsoSubspace dateInstanceSpace;
     IsoSubspace domAttributeGetterSetterSpace;
+    IsoSubspace exceptionSpace;
     IsoSubspace executableToCodeBlockEdgeSpace;
     IsoSubspace functionSpace;
     IsoSubspace getterSetterSpace;
@@ -452,13 +453,16 @@ public:
     IsoSubspace nativeExecutableSpace;
     IsoSubspace numberObjectSpace;
     IsoSubspace promiseSpace;
+    IsoSubspace propertyNameEnumeratorSpace;
     IsoSubspace propertyTableSpace;
+    IsoSubspace regExpSpace;
     IsoSubspace regExpObjectSpace;
     IsoSubspace ropeStringSpace;
     IsoSubspace scopedArgumentsSpace;
     IsoSubspace sparseArrayValueMapSpace;
     IsoSubspace stringSpace;
     IsoSubspace stringObjectSpace;
+    IsoSubspace structureChainSpace;
     IsoSubspace structureRareDataSpace;
     IsoSubspace structureSpace;
     IsoSubspace symbolTableSpace;
@@ -507,14 +511,23 @@ public:
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int16ArraySpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int32ArraySpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jsModuleRecordSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapBucketSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapIteratorSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(moduleNamespaceObjectSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(nativeStdFunctionSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyObjectSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyRevokeSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scopedArgumentsTableSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetchParametersSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetcherSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setBucketSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setIteratorSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(sourceCodeSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolObjectSpace)
+    DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(templateObjectDescriptorSpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ArraySpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ClampedArraySpace)
     DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint16ArraySpace)