Changeset 290193 in webkit
- Timestamp:
- Feb 18, 2022, 7:21:11 PM (3 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 2 deleted
- 91 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r290189 r290193 1 2022-02-18 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, reverting r290188. 4 https://bugs.webkit.org/show_bug.cgi?id=236875 5 6 Broke WebKitGTK & WPE build bots 7 8 Reverted changeset: 9 10 "Provide a WebCore subspaceImplFor template to make code more 11 readable." 12 https://bugs.webkit.org/show_bug.cgi?id=236868 13 https://commits.webkit.org/r290188 14 1 15 2022-02-18 Per Arne Vollan <pvollan@apple.com> 2 16 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r290189 r290193 2421 2421 7BDDA31F274FA0210038659E /* GraphicsContextGLCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BDDA31D274F9DA50038659E /* GraphicsContextGLCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2422 2422 7BDDA34C275A01310038659E /* ProcessIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BDDA349275A01300038659E /* ProcessIdentity.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2423 7BE37F8727BBB708007A6CD3 /* VideoFrameCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE37F8627BBB6FF007A6CD3 /* VideoFrameCV.h */; settings = {ATTRIBUTES = (Private, ); }; }; 2423 2424 7BE37F7A27BB86AB007A6CD3 /* GraphicsContextGLCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7BDDA31C274F9DA40038659E /* GraphicsContextGLCocoa.mm */; }; 2424 2425 7BE37F7C27BB86B8007A6CD3 /* ANGLEUtilitiesCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7BCD42DA2705C94900EB2127 /* ANGLEUtilitiesCocoa.cpp */; }; 2425 2426 7BE37F7D27BB86CD007A6CD3 /* ANGLEUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7BCD42D8270599EF00EB2127 /* ANGLEUtilities.cpp */; }; 2426 2427 7BE37F7E27BB86DB007A6CD3 /* GraphicsContextGLCVCocoa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7B10339A2549720000C8C1AC /* GraphicsContextGLCVCocoa.cpp */; }; 2427 7BE37F8727BBB708007A6CD3 /* VideoFrameCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BE37F8627BBB6FF007A6CD3 /* VideoFrameCV.h */; settings = {ATTRIBUTES = (Private, ); }; };2428 2428 7BE7427381FA906FBB4F0F2C /* JSSVGGraphicsElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 950C4C02BED8936F818E2F99 /* JSSVGGraphicsElement.h */; }; 2429 2429 7BFF59F42757726700773D39 /* DisplayConfigurationMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BFF59EF275771E800773D39 /* DisplayConfigurationMonitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 5745 5745 FDF6BAF9134A4C9800822920 /* JSOfflineAudioCompletionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */; }; 5746 5746 FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */; }; 5747 FE0BCF3427C0661000BFB2DB /* ExtendedDOMIsoSubspaces.h in Headers */ = {isa = PBXBuildFile; fileRef = FE0BCF3127C0660F00BFB2DB /* ExtendedDOMIsoSubspaces.h */; };5748 FE0BCF3527C0661000BFB2DB /* ExtendedDOMClientIsoSubspaces.h in Headers */ = {isa = PBXBuildFile; fileRef = FE0BCF3327C0661000BFB2DB /* ExtendedDOMClientIsoSubspaces.h */; };5749 5747 FE0D84E910484348001A179E /* WebEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FE0D84E810484348001A179E /* WebEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5750 5748 FE36FD1516C7826500F887C1 /* ChangeVersionData.h in Headers */ = {isa = PBXBuildFile; fileRef = FE36FD1116C7826400F887C1 /* ChangeVersionData.h */; }; … … 18294 18292 FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferCallback.cpp; sourceTree = "<group>"; }; 18295 18293 FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBufferCallback.h; sourceTree = "<group>"; }; 18296 FE0BCF3127C0660F00BFB2DB /* ExtendedDOMIsoSubspaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtendedDOMIsoSubspaces.h; sourceTree = "<group>"; };18297 FE0BCF3327C0661000BFB2DB /* ExtendedDOMClientIsoSubspaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExtendedDOMClientIsoSubspaces.h; sourceTree = "<group>"; };18298 18294 FE0D84E810484348001A179E /* WebEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebEvent.h; sourceTree = "<group>"; }; 18299 18295 FE0D84EA1048436E001A179E /* WebEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebEvent.mm; sourceTree = "<group>"; }; … … 29341 29337 BC53DA2D1143121E000D817E /* DOMWrapperWorld.h */, 29342 29338 2D293869235F6B6800C7F3B2 /* ExceptionDetails.h */, 29343 FE0BCF3327C0661000BFB2DB /* ExtendedDOMClientIsoSubspaces.h */,29344 FE0BCF3127C0660F00BFB2DB /* ExtendedDOMIsoSubspaces.h */,29345 29339 1432E8480C51493F00B1500F /* GCController.cpp */, 29346 29340 1432E8460C51493800B1500F /* GCController.h */, … … 35189 35183 71025EDE1F99F1EC004A250C /* JSAnimationTimeline.h in Headers */, 35190 35184 A1956F1C2331A6770057E9D2 /* JSApplePayCancelEvent.h in Headers */, 35191 FE0BCF3527C0661000BFB2DB /* ExtendedDOMClientIsoSubspaces.h in Headers */,35192 35185 A1DF5A991F7EC8C00058A477 /* JSApplePayContactField.h in Headers */, 35193 35186 9596B93825DEEF0300ED2CFA /* JSApplePayCouponCodeChangedEvent.h in Headers */, … … 37112 37105 3135910B1E7DDC7300F30630 /* RTCSignalingState.h in Headers */, 37113 37106 078E092A17D14D1C00420AA1 /* RTCStatsReport.h in Headers */, 37114 FE0BCF3427C0661000BFB2DB /* ExtendedDOMIsoSubspaces.h in Headers */,37115 37107 5E2C43681BCEE3770001E2BC /* RTCTrackEvent.h in Headers */, 37116 37108 078E094717D16E1C00420AA1 /* RTCVoidRequest.h in Headers */, -
trunk/Source/WebCore/bindings/js/JSFileSystemDirectoryHandleIterator.cpp
r290188 r290193 27 27 #include "JSFileSystemDirectoryHandleIterator.h" 28 28 29 #include "ExtendedDOMClientIsoSubspaces.h"30 #include "ExtendedDOMIsoSubspaces.h"31 29 #include "JSDOMOperation.h" 32 30 #include "WebCoreJSClientData.h" … … 53 51 { 54 52 JSLockHolder apiLocker(vm); 55 return subspaceForImpl<JSFileSystemDirectoryHandleIterator, UseCustomHeapCellType::No>(vm, 56 [] (auto& spaces) { return spaces.m_clientSubspaceForFileSystemDirectoryHandleIterator.get(); }, 57 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForFileSystemDirectoryHandleIterator = WTFMove(space); }, 58 [] (auto& spaces) { return spaces.m_subspaceForFileSystemDirectoryHandleIterator.get(); }, 59 [] (auto& spaces, auto&& space) { spaces.m_subspaceForFileSystemDirectoryHandleIterator = WTFMove(space); } 60 ); 53 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 54 if (auto* clientSpace = clientData.fileSystemDirectoryHandleIteratorSpace()) 55 return clientSpace; 56 57 auto& heapData = clientData.heapData(); 58 Locker locker { heapData.lock() }; 59 60 IsoSubspace* space = heapData.fileSystemDirectoryHandleIteratorSpace(); 61 if (!space) { 62 Heap& heap = vm.heap; 63 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator> || !JSFileSystemDirectoryHandleIterator::needsDestruction); 64 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator>) 65 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSFileSystemDirectoryHandleIterator); 66 else 67 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSFileSystemDirectoryHandleIterator); 68 heapData.setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<IsoSubspace>(space)); 69 70 IGNORE_WARNINGS_BEGIN("unreachable-code") 71 IGNORE_WARNINGS_BEGIN("tautological-compare") 72 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSFileSystemDirectoryHandleIterator::visitOutputConstraints; 73 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 74 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 75 heapData.outputConstraintSpaces().append(space); 76 IGNORE_WARNINGS_END 77 IGNORE_WARNINGS_END 78 } 79 80 auto* clientSpace = new GCClient::IsoSubspace(*space); 81 clientData.setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<GCClient::IsoSubspace>(clientSpace)); 82 return clientSpace; 61 83 } 62 84 -
trunk/Source/WebCore/bindings/js/WebCoreJSClientData.cpp
r290188 r290193 27 27 #include "WebCoreJSClientData.h" 28 28 29 #include "DOMClientIsoSubspaces.h" 29 30 #include "DOMGCOutputConstraint.h" 30 #include "ExtendedDOMClientIsoSubspaces.h" 31 #include "ExtendedDOMIsoSubspaces.h" 31 #include "DOMIsoSubspaces.h" 32 32 #include "JSAudioWorkletGlobalScope.h" 33 33 #include "JSDOMBinding.h" … … 91 91 , m_windowProxySpace ISO_SUBSPACE_INIT(heap, m_windowProxyHeapCellType, JSWindowProxy) 92 92 , m_idbSerializationSpace ISO_SUBSPACE_INIT(heap, m_heapCellTypeForJSIDBSerializationGlobalObject, JSIDBSerializationGlobalObject) 93 , m_subspaces(makeUnique< ExtendedDOMIsoSubspaces>())93 , m_subspaces(makeUnique<DOMIsoSubspaces>()) 94 94 { 95 95 } … … 123 123 , CLIENT_ISO_SUBSPACE_INIT(m_windowProxySpace) 124 124 , CLIENT_ISO_SUBSPACE_INIT(m_idbSerializationSpace) 125 , m_clientSubspaces(makeUnique< ExtendedDOMClientIsoSubspaces>())125 , m_clientSubspaces(makeUnique<DOMClientIsoSubspaces>()) 126 126 { 127 127 } -
trunk/Source/WebCore/bindings/js/WebCoreJSClientData.h
r290188 r290193 32 32 namespace WebCore { 33 33 34 class ExtendedDOMClientIsoSubspaces;35 class ExtendedDOMIsoSubspaces;34 class DOMClientIsoSubspaces; 35 class DOMIsoSubspaces; 36 36 37 37 class JSHeapData { … … 45 45 46 46 Lock& lock() { return m_lock; } 47 ExtendedDOMIsoSubspaces& subspaces() { return *m_subspaces.get(); }47 DOMIsoSubspaces& subspaces() { return *m_subspaces.get(); } 48 48 49 49 Vector<JSC::IsoSubspace*>& outputConstraintSpaces() { return m_outputConstraintSpaces; } … … 55 55 func(*space); 56 56 } 57 58 JSC::IsoSubspace* fileSystemDirectoryHandleIteratorSpace() { return m_fileSystemDirectoryHandleIteratorSpace.get(); } 59 void setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<JSC::IsoSubspace> space) { m_fileSystemDirectoryHandleIteratorSpace = std::exchange(space, nullptr); } 57 60 58 61 private: … … 91 94 JSC::IsoSubspace m_windowProxySpace; 92 95 JSC::IsoSubspace m_idbSerializationSpace; 96 std::unique_ptr<JSC::IsoSubspace> m_fileSystemDirectoryHandleIteratorSpace; 93 97 94 std::unique_ptr< ExtendedDOMIsoSubspaces> m_subspaces;98 std::unique_ptr<DOMIsoSubspaces> m_subspaces; 95 99 Vector<JSC::IsoSubspace*> m_outputConstraintSpaces; 96 100 }; … … 138 142 JSC::GCClient::IsoSubspace& windowProxySpace() { return m_windowProxySpace; } 139 143 JSC::GCClient::IsoSubspace& idbSerializationSpace() { return m_idbSerializationSpace; } 144 JSC::GCClient::IsoSubspace* fileSystemDirectoryHandleIteratorSpace() { return m_fileSystemDirectoryHandleIteratorSpace.get(); } 145 void setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<JSC::GCClient::IsoSubspace> space) { m_fileSystemDirectoryHandleIteratorSpace = std::exchange(space, nullptr); } 140 146 141 ExtendedDOMClientIsoSubspaces& clientSubspaces() { return *m_clientSubspaces.get(); }147 DOMClientIsoSubspaces& clientSubspaces() { return *m_clientSubspaces.get(); } 142 148 143 149 private: … … 159 165 JSC::GCClient::IsoSubspace m_idbSerializationSpace; 160 166 161 std::unique_ptr<ExtendedDOMClientIsoSubspaces> m_clientSubspaces; 167 std::unique_ptr<JSC::GCClient::IsoSubspace> m_fileSystemDirectoryHandleIteratorSpace; 168 std::unique_ptr<DOMClientIsoSubspaces> m_clientSubspaces; 162 169 }; 163 170 164 165 enum class UseCustomHeapCellType { Yes, No };166 167 template<typename T, UseCustomHeapCellType useCustomHeapCellType, typename GetClient, typename SetClient, typename GetServer, typename SetServer>168 ALWAYS_INLINE JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm, GetClient getClient, SetClient setClient, GetServer getServer, SetServer setServer, JSC::HeapCellType& (*getCustomHeapCellType)(JSHeapData&) = nullptr)169 {170 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);171 auto& clientSubspaces = clientData.clientSubspaces();172 if (auto* clientSpace = getClient(clientSubspaces))173 return clientSpace;174 175 auto& heapData = clientData.heapData();176 Locker locker { heapData.lock() };177 178 auto& subspaces = heapData.subspaces();179 JSC::IsoSubspace* space = getServer(subspaces);180 if (!space) {181 JSC::Heap& heap = vm.heap;182 std::unique_ptr<JSC::IsoSubspace> uniqueSubspace;183 static_assert(useCustomHeapCellType == UseCustomHeapCellType::Yes || std::is_base_of_v<JSC::JSDestructibleObject, T> || !T::needsDestruction);184 if constexpr (useCustomHeapCellType == UseCustomHeapCellType::Yes)185 uniqueSubspace = makeUnique<JSC::IsoSubspace> ISO_SUBSPACE_INIT(heap, getCustomHeapCellType(heapData), T);186 else {187 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, T>)188 uniqueSubspace = makeUnique<JSC::IsoSubspace> ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, T);189 else190 uniqueSubspace = makeUnique<JSC::IsoSubspace> ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, T);191 }192 space = uniqueSubspace.get();193 setServer(subspaces, uniqueSubspace);194 195 IGNORE_WARNINGS_BEGIN("unreachable-code")196 IGNORE_WARNINGS_BEGIN("tautological-compare")197 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = T::visitOutputConstraints;198 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;199 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)200 heapData.outputConstraintSpaces().append(space);201 IGNORE_WARNINGS_END202 IGNORE_WARNINGS_END203 }204 205 auto uniqueClientSubspace = makeUnique<JSC::GCClient::IsoSubspace>(*space);206 auto* clientSpace = uniqueClientSubspace.get();207 setClient(clientSubspaces, uniqueClientSubspace);208 return clientSpace;209 }210 211 171 } // namespace WebCore -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r290188 r290193 4872 4872 GenerateIterableDefinition($interface) if $interface->iterable; 4873 4873 4874 AddToImplIncludes(" ExtendedDOMClientIsoSubspaces.h");4875 AddToImplIncludes(" ExtendedDOMIsoSubspaces.h");4874 AddToImplIncludes("DOMClientIsoSubspaces.h"); 4875 AddToImplIncludes("DOMIsoSubspaces.h"); 4876 4876 AddToImplIncludes("WebCoreJSClientData.h"); 4877 4877 AddToImplIncludes("<JavaScriptCore/JSDestructibleObjectHeapCellType.h>"); … … 4880 4880 push(@implContent, "JSC::GCClient::IsoSubspace* ${className}::subspaceForImpl(JSC::VM& vm)\n"); 4881 4881 push(@implContent, "{\n"); 4882 4883 my $useCustomHeapCell; 4884 my $customHeapCellTypeGetter; 4882 push(@implContent, " auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);\n"); 4883 push(@implContent, " auto& clientSpaces = clientData.clientSubspaces();\n"); 4884 push(@implContent, " if (auto* clientSpace = clientSpaces.m_clientSubspaceFor${interfaceName}.get())\n"); 4885 push(@implContent, " return clientSpace;\n"); 4886 push(@implContent, "\n"); 4887 push(@implContent, " auto& heapData = clientData.heapData();\n"); 4888 push(@implContent, " Locker locker { heapData.lock() };\n"); 4889 push(@implContent, "\n"); 4890 push(@implContent, " auto& spaces = heapData.subspaces();\n"); 4891 push(@implContent, " IsoSubspace* space = spaces.m_subspaceFor${interfaceName}.get();\n"); 4892 push(@implContent, " if (!space) {\n"); 4893 push(@implContent, " Heap& heap = vm.heap;\n"); 4894 4885 4895 if (IsDOMGlobalObject($interface)) { 4886 $useCustomHeapCell = "Yes"; 4887 $customHeapCellTypeGetter = "[] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeFor${className}; }"; 4896 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeFor${className}, ${className});\n"); 4888 4897 } else { 4889 $useCustomHeapCell = "No"; 4890 $customHeapCellTypeGetter = "nullptr"; 4891 } 4892 4893 push(@implContent, " return subspaceForImpl<${className}, UseCustomHeapCellType::$useCustomHeapCell>(vm,\n"); 4894 push(@implContent, " [] (auto& spaces) { return spaces.m_clientSubspaceFor${interfaceName}.get(); },\n"); 4895 push(@implContent, " [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceFor${interfaceName} = WTFMove(space); },\n"); 4896 push(@implContent, " [] (auto& spaces) { return spaces.m_subspaceFor${interfaceName}.get(); },\n"); 4897 push(@implContent, " [] (auto& spaces, auto&& space) { spaces.m_subspaceFor${interfaceName} = WTFMove(space); },\n"); 4898 push(@implContent, " $customHeapCellTypeGetter\n"); 4899 push(@implContent, " );\n"); 4898 push(@implContent, " static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${className}> || !${className}::needsDestruction);\n"); 4899 push(@implContent, " if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${className}>)\n"); 4900 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, ${className});\n"); 4901 push(@implContent, " else\n"); 4902 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, ${className});\n"); 4903 } 4904 push(@implContent, " spaces.m_subspaceFor${interfaceName} = std::unique_ptr<IsoSubspace>(space);\n"); 4905 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"unreachable-code\")\n"); 4906 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"tautological-compare\")\n"); 4907 push(@implContent, " void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${className}::visitOutputConstraints;\n"); 4908 push(@implContent, " void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;\n"); 4909 push(@implContent, " if (myVisitOutputConstraint != jsCellVisitOutputConstraint)\n"); 4910 push(@implContent, " heapData.outputConstraintSpaces().append(space);\n"); 4911 push(@implContent, "IGNORE_WARNINGS_END\n"); 4912 push(@implContent, "IGNORE_WARNINGS_END\n"); 4913 push(@implContent, " }\n"); 4914 push(@implContent, "\n"); 4915 4916 push(@implContent, " clientSpaces.m_clientSubspaceFor${interfaceName} = makeUnique<JSC::GCClient::IsoSubspace>(*space);\n"); 4917 push(@implContent, " return clientSpaces.m_clientSubspaceFor${interfaceName}.get();\n"); 4900 4918 push(@implContent, "}\n\n"); 4901 4919 … … 6785 6803 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 6786 6804 return nullptr; 6787 return subspaceForImpl<${iteratorName}, UseCustomHeapCellType::No>(vm, 6788 [] (auto& spaces) { return spaces.m_clientSubspaceFor${iteratorName}.get(); }, 6789 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceFor${iteratorName} = WTFMove(space); }, 6790 [] (auto& spaces) { return spaces.m_subspaceFor${iteratorName}.get(); }, 6791 [] (auto& spaces, auto&& space) { spaces.m_subspaceFor${iteratorName} = WTFMove(space); } 6792 ); 6805 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 6806 auto& clientSpaces = clientData.clientSubspaces(); 6807 if (auto* clientSpace = clientSpaces.m_clientSubspaceFor${iteratorName}.get()) 6808 return clientSpace; 6809 6810 auto& heapData = clientData.heapData(); 6811 Locker locker { heapData.lock() }; 6812 6813 auto& spaces = heapData.subspaces(); 6814 IsoSubspace* space = spaces.m_subspaceFor${iteratorName}.get(); 6815 if (!space) { 6816 Heap& heap = vm.heap; 6817 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}> || !${iteratorName}::needsDestruction); 6818 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}>) 6819 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, ${iteratorName}); 6820 else 6821 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, ${iteratorName}); 6822 spaces.m_subspaceFor${iteratorName} = std::unique_ptr<IsoSubspace>(space); 6823 IGNORE_WARNINGS_BEGIN(\"unreachable-code\") 6824 IGNORE_WARNINGS_BEGIN(\"tautological-compare\") 6825 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${iteratorName}::visitOutputConstraints; 6826 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 6827 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 6828 heapData.outputConstraintSpaces().append(space); 6829 IGNORE_WARNINGS_END 6830 IGNORE_WARNINGS_END 6831 } 6832 6833 clientSpaces.m_clientSubspaceFor${iteratorName} = makeUnique<JSC::GCClient::IsoSubspace>(*space); 6834 return clientSpaces.m_clientSubspaceFor${iteratorName}.get(); 6793 6835 } 6794 6836 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 367 367 JSC::GCClient::IsoSubspace* JSDOMWindow::subspaceForImpl(JSC::VM& vm) 368 368 { 369 return subspaceForImpl<JSDOMWindow, UseCustomHeapCellType::Yes>(vm, 370 [] (auto& spaces) { return spaces.m_clientSubspaceForDOMWindow.get(); }, 371 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForDOMWindow = WTFMove(space); }, 372 [] (auto& spaces) { return spaces.m_subspaceForDOMWindow.get(); }, 373 [] (auto& spaces, auto&& space) { spaces.m_subspaceForDOMWindow = WTFMove(space); }, 374 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSDOMWindow; } 375 ); 369 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 370 auto& clientSpaces = clientData.clientSubspaces(); 371 if (auto* clientSpace = clientSpaces.m_clientSubspaceForDOMWindow.get()) 372 return clientSpace; 373 374 auto& heapData = clientData.heapData(); 375 Locker locker { heapData.lock() }; 376 377 auto& spaces = heapData.subspaces(); 378 IsoSubspace* space = spaces.m_subspaceForDOMWindow.get(); 379 if (!space) { 380 Heap& heap = vm.heap; 381 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSDOMWindow, JSDOMWindow); 382 spaces.m_subspaceForDOMWindow = std::unique_ptr<IsoSubspace>(space); 383 IGNORE_WARNINGS_BEGIN("unreachable-code") 384 IGNORE_WARNINGS_BEGIN("tautological-compare") 385 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDOMWindow::visitOutputConstraints; 386 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 387 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 388 heapData.outputConstraintSpaces().append(space); 389 IGNORE_WARNINGS_END 390 IGNORE_WARNINGS_END 391 } 392 393 clientSpaces.m_clientSubspaceForDOMWindow = makeUnique<JSC::GCClient::IsoSubspace>(*space); 394 return clientSpaces.m_clientSubspaceForDOMWindow.get(); 376 395 } 377 396 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DedicatedWorkerGlobalScope.h" 26 #include "ExtendedDOMClientIsoSubspaces.h"27 #include "ExtendedDOMIsoSubspaces.h"28 28 #include "JSDOMAttribute.h" 29 29 #include "JSDOMBinding.h" … … 168 168 JSC::GCClient::IsoSubspace* JSDedicatedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 169 169 { 170 return subspaceForImpl<JSDedicatedWorkerGlobalScope, UseCustomHeapCellType::Yes>(vm, 171 [] (auto& spaces) { return spaces.m_clientSubspaceForDedicatedWorkerGlobalScope.get(); }, 172 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForDedicatedWorkerGlobalScope = WTFMove(space); }, 173 [] (auto& spaces) { return spaces.m_subspaceForDedicatedWorkerGlobalScope.get(); }, 174 [] (auto& spaces, auto&& space) { spaces.m_subspaceForDedicatedWorkerGlobalScope = WTFMove(space); }, 175 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSDedicatedWorkerGlobalScope; } 176 ); 170 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 171 auto& clientSpaces = clientData.clientSubspaces(); 172 if (auto* clientSpace = clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope.get()) 173 return clientSpace; 174 175 auto& heapData = clientData.heapData(); 176 Locker locker { heapData.lock() }; 177 178 auto& spaces = heapData.subspaces(); 179 IsoSubspace* space = spaces.m_subspaceForDedicatedWorkerGlobalScope.get(); 180 if (!space) { 181 Heap& heap = vm.heap; 182 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSDedicatedWorkerGlobalScope, JSDedicatedWorkerGlobalScope); 183 spaces.m_subspaceForDedicatedWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 184 IGNORE_WARNINGS_BEGIN("unreachable-code") 185 IGNORE_WARNINGS_BEGIN("tautological-compare") 186 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDedicatedWorkerGlobalScope::visitOutputConstraints; 187 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 188 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 189 heapData.outputConstraintSpaces().append(space); 190 IGNORE_WARNINGS_END 191 IGNORE_WARNINGS_END 192 } 193 194 clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 195 return clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope.get(); 177 196 } 178 197 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedStar.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMBinding.h" … … 232 232 JSC::GCClient::IsoSubspace* JSExposedStar::subspaceForImpl(JSC::VM& vm) 233 233 { 234 return subspaceForImpl<JSExposedStar, UseCustomHeapCellType::No>(vm, 235 [] (auto& spaces) { return spaces.m_clientSubspaceForExposedStar.get(); }, 236 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForExposedStar = WTFMove(space); }, 237 [] (auto& spaces) { return spaces.m_subspaceForExposedStar.get(); }, 238 [] (auto& spaces, auto&& space) { spaces.m_subspaceForExposedStar = WTFMove(space); }, 239 nullptr 240 ); 234 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 235 auto& clientSpaces = clientData.clientSubspaces(); 236 if (auto* clientSpace = clientSpaces.m_clientSubspaceForExposedStar.get()) 237 return clientSpace; 238 239 auto& heapData = clientData.heapData(); 240 Locker locker { heapData.lock() }; 241 242 auto& spaces = heapData.subspaces(); 243 IsoSubspace* space = spaces.m_subspaceForExposedStar.get(); 244 if (!space) { 245 Heap& heap = vm.heap; 246 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar> || !JSExposedStar::needsDestruction); 247 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar>) 248 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSExposedStar); 249 else 250 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSExposedStar); 251 spaces.m_subspaceForExposedStar = std::unique_ptr<IsoSubspace>(space); 252 IGNORE_WARNINGS_BEGIN("unreachable-code") 253 IGNORE_WARNINGS_BEGIN("tautological-compare") 254 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedStar::visitOutputConstraints; 255 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 256 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 257 heapData.outputConstraintSpaces().append(space); 258 IGNORE_WARNINGS_END 259 IGNORE_WARNINGS_END 260 } 261 262 clientSpaces.m_clientSubspaceForExposedStar = makeUnique<JSC::GCClient::IsoSubspace>(*space); 263 return clientSpaces.m_clientSubspaceForExposedStar.get(); 241 264 } 242 265 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructor.h" … … 250 250 JSC::GCClient::IsoSubspace* JSExposedToWorkerAndWindow::subspaceForImpl(JSC::VM& vm) 251 251 { 252 return subspaceForImpl<JSExposedToWorkerAndWindow, UseCustomHeapCellType::No>(vm, 253 [] (auto& spaces) { return spaces.m_clientSubspaceForExposedToWorkerAndWindow.get(); }, 254 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForExposedToWorkerAndWindow = WTFMove(space); }, 255 [] (auto& spaces) { return spaces.m_subspaceForExposedToWorkerAndWindow.get(); }, 256 [] (auto& spaces, auto&& space) { spaces.m_subspaceForExposedToWorkerAndWindow = WTFMove(space); }, 257 nullptr 258 ); 252 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 253 auto& clientSpaces = clientData.clientSubspaces(); 254 if (auto* clientSpace = clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow.get()) 255 return clientSpace; 256 257 auto& heapData = clientData.heapData(); 258 Locker locker { heapData.lock() }; 259 260 auto& spaces = heapData.subspaces(); 261 IsoSubspace* space = spaces.m_subspaceForExposedToWorkerAndWindow.get(); 262 if (!space) { 263 Heap& heap = vm.heap; 264 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow> || !JSExposedToWorkerAndWindow::needsDestruction); 265 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow>) 266 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSExposedToWorkerAndWindow); 267 else 268 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSExposedToWorkerAndWindow); 269 spaces.m_subspaceForExposedToWorkerAndWindow = std::unique_ptr<IsoSubspace>(space); 270 IGNORE_WARNINGS_BEGIN("unreachable-code") 271 IGNORE_WARNINGS_BEGIN("tautological-compare") 272 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedToWorkerAndWindow::visitOutputConstraints; 273 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 274 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 275 heapData.outputConstraintSpaces().append(space); 276 IGNORE_WARNINGS_END 277 IGNORE_WARNINGS_END 278 } 279 280 clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow = makeUnique<JSC::GCClient::IsoSubspace>(*space); 281 return clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow.get(); 259 282 } 260 283 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 167 167 JSC::GCClient::IsoSubspace* JSPaintWorkletGlobalScope::subspaceForImpl(JSC::VM& vm) 168 168 { 169 return subspaceForImpl<JSPaintWorkletGlobalScope, UseCustomHeapCellType::Yes>(vm, 170 [] (auto& spaces) { return spaces.m_clientSubspaceForPaintWorkletGlobalScope.get(); }, 171 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForPaintWorkletGlobalScope = WTFMove(space); }, 172 [] (auto& spaces) { return spaces.m_subspaceForPaintWorkletGlobalScope.get(); }, 173 [] (auto& spaces, auto&& space) { spaces.m_subspaceForPaintWorkletGlobalScope = WTFMove(space); }, 174 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSPaintWorkletGlobalScope; } 175 ); 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForPaintWorkletGlobalScope.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSPaintWorkletGlobalScope, JSPaintWorkletGlobalScope); 182 spaces.m_subspaceForPaintWorkletGlobalScope = std::unique_ptr<IsoSubspace>(space); 183 IGNORE_WARNINGS_BEGIN("unreachable-code") 184 IGNORE_WARNINGS_BEGIN("tautological-compare") 185 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSPaintWorkletGlobalScope::visitOutputConstraints; 186 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 187 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 188 heapData.outputConstraintSpaces().append(space); 189 IGNORE_WARNINGS_END 190 IGNORE_WARNINGS_END 191 } 192 193 clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 194 return clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope.get(); 176 195 } 177 196 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 167 167 JSC::GCClient::IsoSubspace* JSServiceWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 168 168 { 169 return subspaceForImpl<JSServiceWorkerGlobalScope, UseCustomHeapCellType::Yes>(vm, 170 [] (auto& spaces) { return spaces.m_clientSubspaceForServiceWorkerGlobalScope.get(); }, 171 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForServiceWorkerGlobalScope = WTFMove(space); }, 172 [] (auto& spaces) { return spaces.m_subspaceForServiceWorkerGlobalScope.get(); }, 173 [] (auto& spaces, auto&& space) { spaces.m_subspaceForServiceWorkerGlobalScope = WTFMove(space); }, 174 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSServiceWorkerGlobalScope; } 175 ); 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForServiceWorkerGlobalScope.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSServiceWorkerGlobalScope, JSServiceWorkerGlobalScope); 182 spaces.m_subspaceForServiceWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 183 IGNORE_WARNINGS_BEGIN("unreachable-code") 184 IGNORE_WARNINGS_BEGIN("tautological-compare") 185 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSServiceWorkerGlobalScope::visitOutputConstraints; 186 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 187 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 188 heapData.outputConstraintSpaces().append(space); 189 IGNORE_WARNINGS_END 190 IGNORE_WARNINGS_END 191 } 192 193 clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 194 return clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope.get(); 176 195 } 177 196 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 153 153 JSC::GCClient::IsoSubspace* JSShadowRealmGlobalScope::subspaceForImpl(JSC::VM& vm) 154 154 { 155 return subspaceForImpl<JSShadowRealmGlobalScope, UseCustomHeapCellType::Yes>(vm, 156 [] (auto& spaces) { return spaces.m_clientSubspaceForShadowRealmGlobalScope.get(); }, 157 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForShadowRealmGlobalScope = WTFMove(space); }, 158 [] (auto& spaces) { return spaces.m_subspaceForShadowRealmGlobalScope.get(); }, 159 [] (auto& spaces, auto&& space) { spaces.m_subspaceForShadowRealmGlobalScope = WTFMove(space); }, 160 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSShadowRealmGlobalScope; } 161 ); 155 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 156 auto& clientSpaces = clientData.clientSubspaces(); 157 if (auto* clientSpace = clientSpaces.m_clientSubspaceForShadowRealmGlobalScope.get()) 158 return clientSpace; 159 160 auto& heapData = clientData.heapData(); 161 Locker locker { heapData.lock() }; 162 163 auto& spaces = heapData.subspaces(); 164 IsoSubspace* space = spaces.m_subspaceForShadowRealmGlobalScope.get(); 165 if (!space) { 166 Heap& heap = vm.heap; 167 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSShadowRealmGlobalScope, JSShadowRealmGlobalScope); 168 spaces.m_subspaceForShadowRealmGlobalScope = std::unique_ptr<IsoSubspace>(space); 169 IGNORE_WARNINGS_BEGIN("unreachable-code") 170 IGNORE_WARNINGS_BEGIN("tautological-compare") 171 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSShadowRealmGlobalScope::visitOutputConstraints; 172 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 173 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 174 heapData.outputConstraintSpaces().append(space); 175 IGNORE_WARNINGS_END 176 IGNORE_WARNINGS_END 177 } 178 179 clientSpaces.m_clientSubspaceForShadowRealmGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 180 return clientSpaces.m_clientSubspaceForShadowRealmGlobalScope.get(); 162 181 } 163 182 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 151 151 JSC::GCClient::IsoSubspace* JSSharedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 152 152 { 153 return subspaceForImpl<JSSharedWorkerGlobalScope, UseCustomHeapCellType::Yes>(vm, 154 [] (auto& spaces) { return spaces.m_clientSubspaceForSharedWorkerGlobalScope.get(); }, 155 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForSharedWorkerGlobalScope = WTFMove(space); }, 156 [] (auto& spaces) { return spaces.m_subspaceForSharedWorkerGlobalScope.get(); }, 157 [] (auto& spaces, auto&& space) { spaces.m_subspaceForSharedWorkerGlobalScope = WTFMove(space); }, 158 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSSharedWorkerGlobalScope; } 159 ); 153 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 154 auto& clientSpaces = clientData.clientSubspaces(); 155 if (auto* clientSpace = clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope.get()) 156 return clientSpace; 157 158 auto& heapData = clientData.heapData(); 159 Locker locker { heapData.lock() }; 160 161 auto& spaces = heapData.subspaces(); 162 IsoSubspace* space = spaces.m_subspaceForSharedWorkerGlobalScope.get(); 163 if (!space) { 164 Heap& heap = vm.heap; 165 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSSharedWorkerGlobalScope, JSSharedWorkerGlobalScope); 166 spaces.m_subspaceForSharedWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 167 IGNORE_WARNINGS_BEGIN("unreachable-code") 168 IGNORE_WARNINGS_BEGIN("tautological-compare") 169 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSSharedWorkerGlobalScope::visitOutputConstraints; 170 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 171 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 172 heapData.outputConstraintSpaces().append(space); 173 IGNORE_WARNINGS_END 174 IGNORE_WARNINGS_END 175 } 176 177 clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 178 return clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope.get(); 160 179 } 161 180 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
r290188 r290193 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include "DOMClientIsoSubspaces.h" 27 #include "DOMIsoSubspaces.h" 26 28 #include "ElementInlines.h" 27 #include "ExtendedDOMClientIsoSubspaces.h"28 #include "ExtendedDOMIsoSubspaces.h"29 29 #include "HTMLNames.h" 30 30 #include "IDLTypes.h" … … 434 434 JSC::GCClient::IsoSubspace* JSTestCEReactions::subspaceForImpl(JSC::VM& vm) 435 435 { 436 return subspaceForImpl<JSTestCEReactions, UseCustomHeapCellType::No>(vm, 437 [] (auto& spaces) { return spaces.m_clientSubspaceForTestCEReactions.get(); }, 438 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestCEReactions = WTFMove(space); }, 439 [] (auto& spaces) { return spaces.m_subspaceForTestCEReactions.get(); }, 440 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestCEReactions = WTFMove(space); }, 441 nullptr 442 ); 436 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 437 auto& clientSpaces = clientData.clientSubspaces(); 438 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCEReactions.get()) 439 return clientSpace; 440 441 auto& heapData = clientData.heapData(); 442 Locker locker { heapData.lock() }; 443 444 auto& spaces = heapData.subspaces(); 445 IsoSubspace* space = spaces.m_subspaceForTestCEReactions.get(); 446 if (!space) { 447 Heap& heap = vm.heap; 448 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions> || !JSTestCEReactions::needsDestruction); 449 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions>) 450 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCEReactions); 451 else 452 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCEReactions); 453 spaces.m_subspaceForTestCEReactions = std::unique_ptr<IsoSubspace>(space); 454 IGNORE_WARNINGS_BEGIN("unreachable-code") 455 IGNORE_WARNINGS_BEGIN("tautological-compare") 456 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactions::visitOutputConstraints; 457 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 458 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 459 heapData.outputConstraintSpaces().append(space); 460 IGNORE_WARNINGS_END 461 IGNORE_WARNINGS_END 462 } 463 464 clientSpaces.m_clientSubspaceForTestCEReactions = makeUnique<JSC::GCClient::IsoSubspace>(*space); 465 return clientSpaces.m_clientSubspaceForTestCEReactions.get(); 443 466 } 444 467 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
r290188 r290193 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include " ExtendedDOMClientIsoSubspaces.h"27 #include " ExtendedDOMIsoSubspaces.h"26 #include "DOMClientIsoSubspaces.h" 27 #include "DOMIsoSubspaces.h" 28 28 #include "JSDOMAttribute.h" 29 29 #include "JSDOMBinding.h" … … 260 260 JSC::GCClient::IsoSubspace* JSTestCEReactionsStringifier::subspaceForImpl(JSC::VM& vm) 261 261 { 262 return subspaceForImpl<JSTestCEReactionsStringifier, UseCustomHeapCellType::No>(vm, 263 [] (auto& spaces) { return spaces.m_clientSubspaceForTestCEReactionsStringifier.get(); }, 264 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestCEReactionsStringifier = WTFMove(space); }, 265 [] (auto& spaces) { return spaces.m_subspaceForTestCEReactionsStringifier.get(); }, 266 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestCEReactionsStringifier = WTFMove(space); }, 267 nullptr 268 ); 262 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 263 auto& clientSpaces = clientData.clientSubspaces(); 264 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCEReactionsStringifier.get()) 265 return clientSpace; 266 267 auto& heapData = clientData.heapData(); 268 Locker locker { heapData.lock() }; 269 270 auto& spaces = heapData.subspaces(); 271 IsoSubspace* space = spaces.m_subspaceForTestCEReactionsStringifier.get(); 272 if (!space) { 273 Heap& heap = vm.heap; 274 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier> || !JSTestCEReactionsStringifier::needsDestruction); 275 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier>) 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCEReactionsStringifier); 277 else 278 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCEReactionsStringifier); 279 spaces.m_subspaceForTestCEReactionsStringifier = std::unique_ptr<IsoSubspace>(space); 280 IGNORE_WARNINGS_BEGIN("unreachable-code") 281 IGNORE_WARNINGS_BEGIN("tautological-compare") 282 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactionsStringifier::visitOutputConstraints; 283 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 284 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 285 heapData.outputConstraintSpaces().append(space); 286 IGNORE_WARNINGS_END 287 IGNORE_WARNINGS_END 288 } 289 290 clientSpaces.m_clientSubspaceForTestCEReactionsStringifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 291 return clientSpaces.m_clientSubspaceForTestCEReactionsStringifier.get(); 269 292 } 270 293 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAttribute.h" … … 509 509 JSC::GCClient::IsoSubspace* JSTestCallTracer::subspaceForImpl(JSC::VM& vm) 510 510 { 511 return subspaceForImpl<JSTestCallTracer, UseCustomHeapCellType::No>(vm, 512 [] (auto& spaces) { return spaces.m_clientSubspaceForTestCallTracer.get(); }, 513 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestCallTracer = WTFMove(space); }, 514 [] (auto& spaces) { return spaces.m_subspaceForTestCallTracer.get(); }, 515 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestCallTracer = WTFMove(space); }, 516 nullptr 517 ); 511 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 512 auto& clientSpaces = clientData.clientSubspaces(); 513 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCallTracer.get()) 514 return clientSpace; 515 516 auto& heapData = clientData.heapData(); 517 Locker locker { heapData.lock() }; 518 519 auto& spaces = heapData.subspaces(); 520 IsoSubspace* space = spaces.m_subspaceForTestCallTracer.get(); 521 if (!space) { 522 Heap& heap = vm.heap; 523 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer> || !JSTestCallTracer::needsDestruction); 524 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer>) 525 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCallTracer); 526 else 527 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCallTracer); 528 spaces.m_subspaceForTestCallTracer = std::unique_ptr<IsoSubspace>(space); 529 IGNORE_WARNINGS_BEGIN("unreachable-code") 530 IGNORE_WARNINGS_BEGIN("tautological-compare") 531 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCallTracer::visitOutputConstraints; 532 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 533 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 534 heapData.outputConstraintSpaces().append(space); 535 IGNORE_WARNINGS_END 536 IGNORE_WARNINGS_END 537 } 538 539 clientSpaces.m_clientSubspaceForTestCallTracer = makeUnique<JSC::GCClient::IsoSubspace>(*space); 540 return clientSpaces.m_clientSubspaceForTestCallTracer.get(); 518 541 } 519 542 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMBuiltinConstructor.h" … … 172 172 JSC::GCClient::IsoSubspace* JSTestClassWithJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm) 173 173 { 174 return subspaceForImpl<JSTestClassWithJSBuiltinConstructor, UseCustomHeapCellType::No>(vm, 175 [] (auto& spaces) { return spaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor.get(); }, 176 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor = WTFMove(space); }, 177 [] (auto& spaces) { return spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get(); }, 178 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestClassWithJSBuiltinConstructor = WTFMove(space); }, 179 nullptr 180 ); 174 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 175 auto& clientSpaces = clientData.clientSubspaces(); 176 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor.get()) 177 return clientSpace; 178 179 auto& heapData = clientData.heapData(); 180 Locker locker { heapData.lock() }; 181 182 auto& spaces = heapData.subspaces(); 183 IsoSubspace* space = spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get(); 184 if (!space) { 185 Heap& heap = vm.heap; 186 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor> || !JSTestClassWithJSBuiltinConstructor::needsDestruction); 187 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor>) 188 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestClassWithJSBuiltinConstructor); 189 else 190 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestClassWithJSBuiltinConstructor); 191 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = std::unique_ptr<IsoSubspace>(space); 192 IGNORE_WARNINGS_BEGIN("unreachable-code") 193 IGNORE_WARNINGS_BEGIN("tautological-compare") 194 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestClassWithJSBuiltinConstructor::visitOutputConstraints; 195 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 196 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 197 heapData.outputConstraintSpaces().append(space); 198 IGNORE_WARNINGS_END 199 IGNORE_WARNINGS_END 200 } 201 202 clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 203 return clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor.get(); 181 204 } 182 205 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionalIncludes.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 785 785 JSC::GCClient::IsoSubspace* JSTestConditionalIncludes::subspaceForImpl(JSC::VM& vm) 786 786 { 787 return subspaceForImpl<JSTestConditionalIncludes, UseCustomHeapCellType::No>(vm, 788 [] (auto& spaces) { return spaces.m_clientSubspaceForTestConditionalIncludes.get(); }, 789 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestConditionalIncludes = WTFMove(space); }, 790 [] (auto& spaces) { return spaces.m_subspaceForTestConditionalIncludes.get(); }, 791 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestConditionalIncludes = WTFMove(space); }, 792 nullptr 793 ); 787 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 788 auto& clientSpaces = clientData.clientSubspaces(); 789 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestConditionalIncludes.get()) 790 return clientSpace; 791 792 auto& heapData = clientData.heapData(); 793 Locker locker { heapData.lock() }; 794 795 auto& spaces = heapData.subspaces(); 796 IsoSubspace* space = spaces.m_subspaceForTestConditionalIncludes.get(); 797 if (!space) { 798 Heap& heap = vm.heap; 799 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes> || !JSTestConditionalIncludes::needsDestruction); 800 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes>) 801 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestConditionalIncludes); 802 else 803 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestConditionalIncludes); 804 spaces.m_subspaceForTestConditionalIncludes = std::unique_ptr<IsoSubspace>(space); 805 IGNORE_WARNINGS_BEGIN("unreachable-code") 806 IGNORE_WARNINGS_BEGIN("tautological-compare") 807 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionalIncludes::visitOutputConstraints; 808 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 809 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 810 heapData.outputConstraintSpaces().append(space); 811 IGNORE_WARNINGS_END 812 IGNORE_WARNINGS_END 813 } 814 815 clientSpaces.m_clientSubspaceForTestConditionalIncludes = makeUnique<JSC::GCClient::IsoSubspace>(*space); 816 return clientSpaces.m_clientSubspaceForTestConditionalIncludes.get(); 794 817 } 795 818 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMPromiseProxy.h" 26 28 #include "Document.h" 27 #include "ExtendedDOMClientIsoSubspaces.h"28 #include "ExtendedDOMIsoSubspaces.h"29 29 #include "JSDOMAttribute.h" 30 30 #include "JSDOMBinding.h" … … 607 607 JSC::GCClient::IsoSubspace* JSTestConditionallyReadWrite::subspaceForImpl(JSC::VM& vm) 608 608 { 609 return subspaceForImpl<JSTestConditionallyReadWrite, UseCustomHeapCellType::No>(vm, 610 [] (auto& spaces) { return spaces.m_clientSubspaceForTestConditionallyReadWrite.get(); }, 611 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestConditionallyReadWrite = WTFMove(space); }, 612 [] (auto& spaces) { return spaces.m_subspaceForTestConditionallyReadWrite.get(); }, 613 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestConditionallyReadWrite = WTFMove(space); }, 614 nullptr 615 ); 609 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 610 auto& clientSpaces = clientData.clientSubspaces(); 611 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestConditionallyReadWrite.get()) 612 return clientSpace; 613 614 auto& heapData = clientData.heapData(); 615 Locker locker { heapData.lock() }; 616 617 auto& spaces = heapData.subspaces(); 618 IsoSubspace* space = spaces.m_subspaceForTestConditionallyReadWrite.get(); 619 if (!space) { 620 Heap& heap = vm.heap; 621 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite> || !JSTestConditionallyReadWrite::needsDestruction); 622 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite>) 623 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestConditionallyReadWrite); 624 else 625 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestConditionallyReadWrite); 626 spaces.m_subspaceForTestConditionallyReadWrite = std::unique_ptr<IsoSubspace>(space); 627 IGNORE_WARNINGS_BEGIN("unreachable-code") 628 IGNORE_WARNINGS_BEGIN("tautological-compare") 629 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionallyReadWrite::visitOutputConstraints; 630 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 631 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 632 heapData.outputConstraintSpaces().append(space); 633 IGNORE_WARNINGS_END 634 IGNORE_WARNINGS_END 635 } 636 637 clientSpaces.m_clientSubspaceForTestConditionallyReadWrite = makeUnique<JSC::GCClient::IsoSubspace>(*space); 638 return clientSpaces.m_clientSubspaceForTestConditionallyReadWrite.get(); 616 639 } 617 640 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMJITAbstractHeapRepository.h" 26 28 #include "DOMJITIDLConvert.h" 27 29 #include "DOMJITIDLType.h" 28 30 #include "DOMJITIDLTypeFilter.h" 29 #include "ExtendedDOMClientIsoSubspaces.h"30 #include "ExtendedDOMIsoSubspaces.h"31 31 #include "JSDOMAttribute.h" 32 32 #include "JSDOMBinding.h" … … 1248 1248 JSC::GCClient::IsoSubspace* JSTestDOMJIT::subspaceForImpl(JSC::VM& vm) 1249 1249 { 1250 return subspaceForImpl<JSTestDOMJIT, UseCustomHeapCellType::No>(vm, 1251 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDOMJIT.get(); }, 1252 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDOMJIT = WTFMove(space); }, 1253 [] (auto& spaces) { return spaces.m_subspaceForTestDOMJIT.get(); }, 1254 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDOMJIT = WTFMove(space); }, 1255 nullptr 1256 ); 1250 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1251 auto& clientSpaces = clientData.clientSubspaces(); 1252 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDOMJIT.get()) 1253 return clientSpace; 1254 1255 auto& heapData = clientData.heapData(); 1256 Locker locker { heapData.lock() }; 1257 1258 auto& spaces = heapData.subspaces(); 1259 IsoSubspace* space = spaces.m_subspaceForTestDOMJIT.get(); 1260 if (!space) { 1261 Heap& heap = vm.heap; 1262 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT> || !JSTestDOMJIT::needsDestruction); 1263 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT>) 1264 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDOMJIT); 1265 else 1266 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDOMJIT); 1267 spaces.m_subspaceForTestDOMJIT = std::unique_ptr<IsoSubspace>(space); 1268 IGNORE_WARNINGS_BEGIN("unreachable-code") 1269 IGNORE_WARNINGS_BEGIN("tautological-compare") 1270 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDOMJIT::visitOutputConstraints; 1271 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1272 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1273 heapData.outputConstraintSpaces().append(space); 1274 IGNORE_WARNINGS_END 1275 IGNORE_WARNINGS_END 1276 } 1277 1278 clientSpaces.m_clientSubspaceForTestDOMJIT = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1279 return clientSpaces.m_clientSubspaceForTestDOMJIT.get(); 1257 1280 } 1258 1281 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSON.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "EventNames.h" 26 #include "ExtendedDOMClientIsoSubspaces.h"27 #include "ExtendedDOMIsoSubspaces.h"28 28 #include "JSDOMAttribute.h" 29 29 #include "JSDOMBinding.h" … … 804 804 JSC::GCClient::IsoSubspace* JSTestDefaultToJSON::subspaceForImpl(JSC::VM& vm) 805 805 { 806 return subspaceForImpl<JSTestDefaultToJSON, UseCustomHeapCellType::No>(vm, 807 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDefaultToJSON.get(); }, 808 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDefaultToJSON = WTFMove(space); }, 809 [] (auto& spaces) { return spaces.m_subspaceForTestDefaultToJSON.get(); }, 810 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDefaultToJSON = WTFMove(space); }, 811 nullptr 812 ); 806 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 807 auto& clientSpaces = clientData.clientSubspaces(); 808 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSON.get()) 809 return clientSpace; 810 811 auto& heapData = clientData.heapData(); 812 Locker locker { heapData.lock() }; 813 814 auto& spaces = heapData.subspaces(); 815 IsoSubspace* space = spaces.m_subspaceForTestDefaultToJSON.get(); 816 if (!space) { 817 Heap& heap = vm.heap; 818 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON> || !JSTestDefaultToJSON::needsDestruction); 819 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON>) 820 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSON); 821 else 822 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSON); 823 spaces.m_subspaceForTestDefaultToJSON = std::unique_ptr<IsoSubspace>(space); 824 IGNORE_WARNINGS_BEGIN("unreachable-code") 825 IGNORE_WARNINGS_BEGIN("tautological-compare") 826 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSON::visitOutputConstraints; 827 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 828 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 829 heapData.outputConstraintSpaces().append(space); 830 IGNORE_WARNINGS_END 831 IGNORE_WARNINGS_END 832 } 833 834 clientSpaces.m_clientSubspaceForTestDefaultToJSON = makeUnique<JSC::GCClient::IsoSubspace>(*space); 835 return clientSpaces.m_clientSubspaceForTestDefaultToJSON.get(); 813 836 } 814 837 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 266 266 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONFilteredByExposed::subspaceForImpl(JSC::VM& vm) 267 267 { 268 return subspaceForImpl<JSTestDefaultToJSONFilteredByExposed, UseCustomHeapCellType::No>(vm, 269 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed.get(); }, 270 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed = WTFMove(space); }, 271 [] (auto& spaces) { return spaces.m_subspaceForTestDefaultToJSONFilteredByExposed.get(); }, 272 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDefaultToJSONFilteredByExposed = WTFMove(space); }, 273 nullptr 274 ); 268 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 269 auto& clientSpaces = clientData.clientSubspaces(); 270 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed.get()) 271 return clientSpace; 272 273 auto& heapData = clientData.heapData(); 274 Locker locker { heapData.lock() }; 275 276 auto& spaces = heapData.subspaces(); 277 IsoSubspace* space = spaces.m_subspaceForTestDefaultToJSONFilteredByExposed.get(); 278 if (!space) { 279 Heap& heap = vm.heap; 280 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed> || !JSTestDefaultToJSONFilteredByExposed::needsDestruction); 281 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed>) 282 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONFilteredByExposed); 283 else 284 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONFilteredByExposed); 285 spaces.m_subspaceForTestDefaultToJSONFilteredByExposed = std::unique_ptr<IsoSubspace>(space); 286 IGNORE_WARNINGS_BEGIN("unreachable-code") 287 IGNORE_WARNINGS_BEGIN("tautological-compare") 288 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONFilteredByExposed::visitOutputConstraints; 289 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 290 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 291 heapData.outputConstraintSpaces().append(space); 292 IGNORE_WARNINGS_END 293 IGNORE_WARNINGS_END 294 } 295 296 clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed = makeUnique<JSC::GCClient::IsoSubspace>(*space); 297 return clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed.get(); 275 298 } 276 299 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 158 158 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONIndirectInheritance::subspaceForImpl(JSC::VM& vm) 159 159 { 160 return subspaceForImpl<JSTestDefaultToJSONIndirectInheritance, UseCustomHeapCellType::No>(vm, 161 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance.get(); }, 162 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance = WTFMove(space); }, 163 [] (auto& spaces) { return spaces.m_subspaceForTestDefaultToJSONIndirectInheritance.get(); }, 164 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDefaultToJSONIndirectInheritance = WTFMove(space); }, 165 nullptr 166 ); 160 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 161 auto& clientSpaces = clientData.clientSubspaces(); 162 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance.get()) 163 return clientSpace; 164 165 auto& heapData = clientData.heapData(); 166 Locker locker { heapData.lock() }; 167 168 auto& spaces = heapData.subspaces(); 169 IsoSubspace* space = spaces.m_subspaceForTestDefaultToJSONIndirectInheritance.get(); 170 if (!space) { 171 Heap& heap = vm.heap; 172 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance> || !JSTestDefaultToJSONIndirectInheritance::needsDestruction); 173 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance>) 174 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONIndirectInheritance); 175 else 176 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONIndirectInheritance); 177 spaces.m_subspaceForTestDefaultToJSONIndirectInheritance = std::unique_ptr<IsoSubspace>(space); 178 IGNORE_WARNINGS_BEGIN("unreachable-code") 179 IGNORE_WARNINGS_BEGIN("tautological-compare") 180 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONIndirectInheritance::visitOutputConstraints; 181 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 182 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 183 heapData.outputConstraintSpaces().append(space); 184 IGNORE_WARNINGS_END 185 IGNORE_WARNINGS_END 186 } 187 188 clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance = makeUnique<JSC::GCClient::IsoSubspace>(*space); 189 return clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance.get(); 167 190 } 168 191 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 288 288 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONInherit::subspaceForImpl(JSC::VM& vm) 289 289 { 290 return subspaceForImpl<JSTestDefaultToJSONInherit, UseCustomHeapCellType::No>(vm, 291 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDefaultToJSONInherit.get(); }, 292 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDefaultToJSONInherit = WTFMove(space); }, 293 [] (auto& spaces) { return spaces.m_subspaceForTestDefaultToJSONInherit.get(); }, 294 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDefaultToJSONInherit = WTFMove(space); }, 295 nullptr 296 ); 290 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 291 auto& clientSpaces = clientData.clientSubspaces(); 292 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit.get()) 293 return clientSpace; 294 295 auto& heapData = clientData.heapData(); 296 Locker locker { heapData.lock() }; 297 298 auto& spaces = heapData.subspaces(); 299 IsoSubspace* space = spaces.m_subspaceForTestDefaultToJSONInherit.get(); 300 if (!space) { 301 Heap& heap = vm.heap; 302 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit> || !JSTestDefaultToJSONInherit::needsDestruction); 303 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit>) 304 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONInherit); 305 else 306 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONInherit); 307 spaces.m_subspaceForTestDefaultToJSONInherit = std::unique_ptr<IsoSubspace>(space); 308 IGNORE_WARNINGS_BEGIN("unreachable-code") 309 IGNORE_WARNINGS_BEGIN("tautological-compare") 310 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInherit::visitOutputConstraints; 311 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 312 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 313 heapData.outputConstraintSpaces().append(space); 314 IGNORE_WARNINGS_END 315 IGNORE_WARNINGS_END 316 } 317 318 clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit = makeUnique<JSC::GCClient::IsoSubspace>(*space); 319 return clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit.get(); 297 320 } 298 321 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 328 328 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONInheritFinal::subspaceForImpl(JSC::VM& vm) 329 329 { 330 return subspaceForImpl<JSTestDefaultToJSONInheritFinal, UseCustomHeapCellType::No>(vm, 331 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDefaultToJSONInheritFinal.get(); }, 332 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDefaultToJSONInheritFinal = WTFMove(space); }, 333 [] (auto& spaces) { return spaces.m_subspaceForTestDefaultToJSONInheritFinal.get(); }, 334 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDefaultToJSONInheritFinal = WTFMove(space); }, 335 nullptr 336 ); 330 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 331 auto& clientSpaces = clientData.clientSubspaces(); 332 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal.get()) 333 return clientSpace; 334 335 auto& heapData = clientData.heapData(); 336 Locker locker { heapData.lock() }; 337 338 auto& spaces = heapData.subspaces(); 339 IsoSubspace* space = spaces.m_subspaceForTestDefaultToJSONInheritFinal.get(); 340 if (!space) { 341 Heap& heap = vm.heap; 342 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal> || !JSTestDefaultToJSONInheritFinal::needsDestruction); 343 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal>) 344 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONInheritFinal); 345 else 346 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONInheritFinal); 347 spaces.m_subspaceForTestDefaultToJSONInheritFinal = std::unique_ptr<IsoSubspace>(space); 348 IGNORE_WARNINGS_BEGIN("unreachable-code") 349 IGNORE_WARNINGS_BEGIN("tautological-compare") 350 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInheritFinal::visitOutputConstraints; 351 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 352 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 353 heapData.outputConstraintSpaces().append(space); 354 IGNORE_WARNINGS_END 355 IGNORE_WARNINGS_END 356 } 357 358 clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal = makeUnique<JSC::GCClient::IsoSubspace>(*space); 359 return clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal.get(); 337 360 } 338 361 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp
r290188 r290193 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include " ExtendedDOMClientIsoSubspaces.h"27 #include " ExtendedDOMIsoSubspaces.h"26 #include "DOMClientIsoSubspaces.h" 27 #include "DOMIsoSubspaces.h" 28 28 #include "JSDOMAttribute.h" 29 29 #include "JSDOMBinding.h" … … 242 242 JSC::GCClient::IsoSubspace* JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl(JSC::VM& vm) 243 243 { 244 return subspaceForImpl<JSTestDelegateToSharedSyntheticAttribute, UseCustomHeapCellType::No>(vm, 245 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute.get(); }, 246 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute = WTFMove(space); }, 247 [] (auto& spaces) { return spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute.get(); }, 248 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute = WTFMove(space); }, 249 nullptr 250 ); 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute> || !JSTestDelegateToSharedSyntheticAttribute::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDelegateToSharedSyntheticAttribute); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDelegateToSharedSyntheticAttribute); 261 spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute = std::unique_ptr<IsoSubspace>(space); 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDelegateToSharedSyntheticAttribute::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 268 IGNORE_WARNINGS_END 269 IGNORE_WARNINGS_END 270 } 271 272 clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute.get(); 251 274 } 252 275 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDomainSecurity.cpp
r290188 r290193 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include " ExtendedDOMClientIsoSubspaces.h"27 #include " ExtendedDOMIsoSubspaces.h"26 #include "DOMClientIsoSubspaces.h" 27 #include "DOMIsoSubspaces.h" 28 28 #include "IDLTypes.h" 29 29 #include "JSDOMAttribute.h" … … 316 316 JSC::GCClient::IsoSubspace* JSTestDomainSecurity::subspaceForImpl(JSC::VM& vm) 317 317 { 318 return subspaceForImpl<JSTestDomainSecurity, UseCustomHeapCellType::No>(vm, 319 [] (auto& spaces) { return spaces.m_clientSubspaceForTestDomainSecurity.get(); }, 320 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestDomainSecurity = WTFMove(space); }, 321 [] (auto& spaces) { return spaces.m_subspaceForTestDomainSecurity.get(); }, 322 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestDomainSecurity = WTFMove(space); }, 323 nullptr 324 ); 318 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 319 auto& clientSpaces = clientData.clientSubspaces(); 320 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDomainSecurity.get()) 321 return clientSpace; 322 323 auto& heapData = clientData.heapData(); 324 Locker locker { heapData.lock() }; 325 326 auto& spaces = heapData.subspaces(); 327 IsoSubspace* space = spaces.m_subspaceForTestDomainSecurity.get(); 328 if (!space) { 329 Heap& heap = vm.heap; 330 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity> || !JSTestDomainSecurity::needsDestruction); 331 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity>) 332 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDomainSecurity); 333 else 334 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDomainSecurity); 335 spaces.m_subspaceForTestDomainSecurity = std::unique_ptr<IsoSubspace>(space); 336 IGNORE_WARNINGS_BEGIN("unreachable-code") 337 IGNORE_WARNINGS_BEGIN("tautological-compare") 338 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDomainSecurity::visitOutputConstraints; 339 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 340 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 341 heapData.outputConstraintSpaces().append(space); 342 IGNORE_WARNINGS_END 343 IGNORE_WARNINGS_END 344 } 345 346 clientSpaces.m_clientSubspaceForTestDomainSecurity = makeUnique<JSC::GCClient::IsoSubspace>(*space); 347 return clientSpaces.m_clientSubspaceForTestDomainSecurity.get(); 325 348 } 326 349 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 455 455 JSC::GCClient::IsoSubspace* JSTestEnabledBySetting::subspaceForImpl(JSC::VM& vm) 456 456 { 457 return subspaceForImpl<JSTestEnabledBySetting, UseCustomHeapCellType::No>(vm, 458 [] (auto& spaces) { return spaces.m_clientSubspaceForTestEnabledBySetting.get(); }, 459 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestEnabledBySetting = WTFMove(space); }, 460 [] (auto& spaces) { return spaces.m_subspaceForTestEnabledBySetting.get(); }, 461 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestEnabledBySetting = WTFMove(space); }, 462 nullptr 463 ); 457 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 458 auto& clientSpaces = clientData.clientSubspaces(); 459 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEnabledBySetting.get()) 460 return clientSpace; 461 462 auto& heapData = clientData.heapData(); 463 Locker locker { heapData.lock() }; 464 465 auto& spaces = heapData.subspaces(); 466 IsoSubspace* space = spaces.m_subspaceForTestEnabledBySetting.get(); 467 if (!space) { 468 Heap& heap = vm.heap; 469 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting> || !JSTestEnabledBySetting::needsDestruction); 470 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting>) 471 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEnabledBySetting); 472 else 473 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEnabledBySetting); 474 spaces.m_subspaceForTestEnabledBySetting = std::unique_ptr<IsoSubspace>(space); 475 IGNORE_WARNINGS_BEGIN("unreachable-code") 476 IGNORE_WARNINGS_BEGIN("tautological-compare") 477 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledBySetting::visitOutputConstraints; 478 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 479 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 480 heapData.outputConstraintSpaces().append(space); 481 IGNORE_WARNINGS_END 482 IGNORE_WARNINGS_END 483 } 484 485 clientSpaces.m_clientSubspaceForTestEnabledBySetting = makeUnique<JSC::GCClient::IsoSubspace>(*space); 486 return clientSpaces.m_clientSubspaceForTestEnabledBySetting.get(); 464 487 } 465 488 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 182 182 JSC::GCClient::IsoSubspace* JSTestEnabledForContext::subspaceForImpl(JSC::VM& vm) 183 183 { 184 return subspaceForImpl<JSTestEnabledForContext, UseCustomHeapCellType::No>(vm, 185 [] (auto& spaces) { return spaces.m_clientSubspaceForTestEnabledForContext.get(); }, 186 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestEnabledForContext = WTFMove(space); }, 187 [] (auto& spaces) { return spaces.m_subspaceForTestEnabledForContext.get(); }, 188 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestEnabledForContext = WTFMove(space); }, 189 nullptr 190 ); 184 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 185 auto& clientSpaces = clientData.clientSubspaces(); 186 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEnabledForContext.get()) 187 return clientSpace; 188 189 auto& heapData = clientData.heapData(); 190 Locker locker { heapData.lock() }; 191 192 auto& spaces = heapData.subspaces(); 193 IsoSubspace* space = spaces.m_subspaceForTestEnabledForContext.get(); 194 if (!space) { 195 Heap& heap = vm.heap; 196 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext> || !JSTestEnabledForContext::needsDestruction); 197 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext>) 198 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEnabledForContext); 199 else 200 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEnabledForContext); 201 spaces.m_subspaceForTestEnabledForContext = std::unique_ptr<IsoSubspace>(space); 202 IGNORE_WARNINGS_BEGIN("unreachable-code") 203 IGNORE_WARNINGS_BEGIN("tautological-compare") 204 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledForContext::visitOutputConstraints; 205 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 206 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 207 heapData.outputConstraintSpaces().append(space); 208 IGNORE_WARNINGS_END 209 IGNORE_WARNINGS_END 210 } 211 212 clientSpaces.m_clientSubspaceForTestEnabledForContext = makeUnique<JSC::GCClient::IsoSubspace>(*space); 213 return clientSpaces.m_clientSubspaceForTestEnabledForContext.get(); 191 214 } 192 215 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 319 319 JSC::GCClient::IsoSubspace* JSTestEventConstructor::subspaceForImpl(JSC::VM& vm) 320 320 { 321 return subspaceForImpl<JSTestEventConstructor, UseCustomHeapCellType::No>(vm, 322 [] (auto& spaces) { return spaces.m_clientSubspaceForTestEventConstructor.get(); }, 323 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestEventConstructor = WTFMove(space); }, 324 [] (auto& spaces) { return spaces.m_subspaceForTestEventConstructor.get(); }, 325 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestEventConstructor = WTFMove(space); }, 326 nullptr 327 ); 321 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 322 auto& clientSpaces = clientData.clientSubspaces(); 323 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEventConstructor.get()) 324 return clientSpace; 325 326 auto& heapData = clientData.heapData(); 327 Locker locker { heapData.lock() }; 328 329 auto& spaces = heapData.subspaces(); 330 IsoSubspace* space = spaces.m_subspaceForTestEventConstructor.get(); 331 if (!space) { 332 Heap& heap = vm.heap; 333 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor> || !JSTestEventConstructor::needsDestruction); 334 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor>) 335 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEventConstructor); 336 else 337 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEventConstructor); 338 spaces.m_subspaceForTestEventConstructor = std::unique_ptr<IsoSubspace>(space); 339 IGNORE_WARNINGS_BEGIN("unreachable-code") 340 IGNORE_WARNINGS_BEGIN("tautological-compare") 341 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventConstructor::visitOutputConstraints; 342 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 343 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 344 heapData.outputConstraintSpaces().append(space); 345 IGNORE_WARNINGS_END 346 IGNORE_WARNINGS_END 347 } 348 349 clientSpaces.m_clientSubspaceForTestEventConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 350 return clientSpaces.m_clientSubspaceForTestEventConstructor.get(); 328 351 } 329 352 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 258 258 JSC::GCClient::IsoSubspace* JSTestEventTarget::subspaceForImpl(JSC::VM& vm) 259 259 { 260 return subspaceForImpl<JSTestEventTarget, UseCustomHeapCellType::No>(vm, 261 [] (auto& spaces) { return spaces.m_clientSubspaceForTestEventTarget.get(); }, 262 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestEventTarget = WTFMove(space); }, 263 [] (auto& spaces) { return spaces.m_subspaceForTestEventTarget.get(); }, 264 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestEventTarget = WTFMove(space); }, 265 nullptr 266 ); 260 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 261 auto& clientSpaces = clientData.clientSubspaces(); 262 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEventTarget.get()) 263 return clientSpace; 264 265 auto& heapData = clientData.heapData(); 266 Locker locker { heapData.lock() }; 267 268 auto& spaces = heapData.subspaces(); 269 IsoSubspace* space = spaces.m_subspaceForTestEventTarget.get(); 270 if (!space) { 271 Heap& heap = vm.heap; 272 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget> || !JSTestEventTarget::needsDestruction); 273 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget>) 274 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEventTarget); 275 else 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEventTarget); 277 spaces.m_subspaceForTestEventTarget = std::unique_ptr<IsoSubspace>(space); 278 IGNORE_WARNINGS_BEGIN("unreachable-code") 279 IGNORE_WARNINGS_BEGIN("tautological-compare") 280 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventTarget::visitOutputConstraints; 281 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 282 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 283 heapData.outputConstraintSpaces().append(space); 284 IGNORE_WARNINGS_END 285 IGNORE_WARNINGS_END 286 } 287 288 clientSpaces.m_clientSubspaceForTestEventTarget = makeUnique<JSC::GCClient::IsoSubspace>(*space); 289 return clientSpaces.m_clientSubspaceForTestEventTarget.get(); 267 290 } 268 291 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 183 183 JSC::GCClient::IsoSubspace* JSTestException::subspaceForImpl(JSC::VM& vm) 184 184 { 185 return subspaceForImpl<JSTestException, UseCustomHeapCellType::No>(vm, 186 [] (auto& spaces) { return spaces.m_clientSubspaceForTestException.get(); }, 187 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestException = WTFMove(space); }, 188 [] (auto& spaces) { return spaces.m_subspaceForTestException.get(); }, 189 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestException = WTFMove(space); }, 190 nullptr 191 ); 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestException.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForTestException.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestException> || !JSTestException::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestException>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestException); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestException); 202 spaces.m_subspaceForTestException = std::unique_ptr<IsoSubspace>(space); 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestException::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 209 IGNORE_WARNINGS_END 210 IGNORE_WARNINGS_END 211 } 212 213 clientSpaces.m_clientSubspaceForTestException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestException.get(); 192 215 } 193 216 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 183 183 JSC::GCClient::IsoSubspace* JSTestGenerateAddOpaqueRoot::subspaceForImpl(JSC::VM& vm) 184 184 { 185 return subspaceForImpl<JSTestGenerateAddOpaqueRoot, UseCustomHeapCellType::No>(vm, 186 [] (auto& spaces) { return spaces.m_clientSubspaceForTestGenerateAddOpaqueRoot.get(); }, 187 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestGenerateAddOpaqueRoot = WTFMove(space); }, 188 [] (auto& spaces) { return spaces.m_subspaceForTestGenerateAddOpaqueRoot.get(); }, 189 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestGenerateAddOpaqueRoot = WTFMove(space); }, 190 nullptr 191 ); 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForTestGenerateAddOpaqueRoot.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot> || !JSTestGenerateAddOpaqueRoot::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestGenerateAddOpaqueRoot); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestGenerateAddOpaqueRoot); 202 spaces.m_subspaceForTestGenerateAddOpaqueRoot = std::unique_ptr<IsoSubspace>(space); 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateAddOpaqueRoot::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 209 IGNORE_WARNINGS_END 210 IGNORE_WARNINGS_END 211 } 212 213 clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot.get(); 192 215 } 193 216 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 193 193 JSC::GCClient::IsoSubspace* JSTestGenerateIsReachable::subspaceForImpl(JSC::VM& vm) 194 194 { 195 return subspaceForImpl<JSTestGenerateIsReachable, UseCustomHeapCellType::No>(vm, 196 [] (auto& spaces) { return spaces.m_clientSubspaceForTestGenerateIsReachable.get(); }, 197 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestGenerateIsReachable = WTFMove(space); }, 198 [] (auto& spaces) { return spaces.m_subspaceForTestGenerateIsReachable.get(); }, 199 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestGenerateIsReachable = WTFMove(space); }, 200 nullptr 201 ); 195 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 196 auto& clientSpaces = clientData.clientSubspaces(); 197 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGenerateIsReachable.get()) 198 return clientSpace; 199 200 auto& heapData = clientData.heapData(); 201 Locker locker { heapData.lock() }; 202 203 auto& spaces = heapData.subspaces(); 204 IsoSubspace* space = spaces.m_subspaceForTestGenerateIsReachable.get(); 205 if (!space) { 206 Heap& heap = vm.heap; 207 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable> || !JSTestGenerateIsReachable::needsDestruction); 208 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable>) 209 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestGenerateIsReachable); 210 else 211 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestGenerateIsReachable); 212 spaces.m_subspaceForTestGenerateIsReachable = std::unique_ptr<IsoSubspace>(space); 213 IGNORE_WARNINGS_BEGIN("unreachable-code") 214 IGNORE_WARNINGS_BEGIN("tautological-compare") 215 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateIsReachable::visitOutputConstraints; 216 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 217 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 218 heapData.outputConstraintSpaces().append(space); 219 IGNORE_WARNINGS_END 220 IGNORE_WARNINGS_END 221 } 222 223 clientSpaces.m_clientSubspaceForTestGenerateIsReachable = makeUnique<JSC::GCClient::IsoSubspace>(*space); 224 return clientSpaces.m_clientSubspaceForTestGenerateIsReachable.get(); 202 225 } 203 226 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMPromiseProxy.h" 26 28 #include "DOMWrapperWorld.h" 27 #include "ExtendedDOMClientIsoSubspaces.h"28 #include "ExtendedDOMIsoSubspaces.h"29 29 #include "IDLTypes.h" 30 30 #include "JSDOMAttribute.h" … … 1826 1826 JSC::GCClient::IsoSubspace* JSTestGlobalObject::subspaceForImpl(JSC::VM& vm) 1827 1827 { 1828 return subspaceForImpl<JSTestGlobalObject, UseCustomHeapCellType::Yes>(vm, 1829 [] (auto& spaces) { return spaces.m_clientSubspaceForTestGlobalObject.get(); }, 1830 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestGlobalObject = WTFMove(space); }, 1831 [] (auto& spaces) { return spaces.m_subspaceForTestGlobalObject.get(); }, 1832 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestGlobalObject = WTFMove(space); }, 1833 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSTestGlobalObject; } 1834 ); 1828 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1829 auto& clientSpaces = clientData.clientSubspaces(); 1830 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGlobalObject.get()) 1831 return clientSpace; 1832 1833 auto& heapData = clientData.heapData(); 1834 Locker locker { heapData.lock() }; 1835 1836 auto& spaces = heapData.subspaces(); 1837 IsoSubspace* space = spaces.m_subspaceForTestGlobalObject.get(); 1838 if (!space) { 1839 Heap& heap = vm.heap; 1840 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSTestGlobalObject, JSTestGlobalObject); 1841 spaces.m_subspaceForTestGlobalObject = std::unique_ptr<IsoSubspace>(space); 1842 IGNORE_WARNINGS_BEGIN("unreachable-code") 1843 IGNORE_WARNINGS_BEGIN("tautological-compare") 1844 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGlobalObject::visitOutputConstraints; 1845 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1846 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1847 heapData.outputConstraintSpaces().append(space); 1848 IGNORE_WARNINGS_END 1849 IGNORE_WARNINGS_END 1850 } 1851 1852 clientSpaces.m_clientSubspaceForTestGlobalObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1853 return clientSpaces.m_clientSubspaceForTestGlobalObject.get(); 1835 1854 } 1836 1855 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 272 272 JSC::GCClient::IsoSubspace* JSTestIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 273 273 { 274 return subspaceForImpl<JSTestIndexedSetterNoIdentifier, UseCustomHeapCellType::No>(vm, 275 [] (auto& spaces) { return spaces.m_clientSubspaceForTestIndexedSetterNoIdentifier.get(); }, 276 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestIndexedSetterNoIdentifier = WTFMove(space); }, 277 [] (auto& spaces) { return spaces.m_subspaceForTestIndexedSetterNoIdentifier.get(); }, 278 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestIndexedSetterNoIdentifier = WTFMove(space); }, 279 nullptr 280 ); 274 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 275 auto& clientSpaces = clientData.clientSubspaces(); 276 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier.get()) 277 return clientSpace; 278 279 auto& heapData = clientData.heapData(); 280 Locker locker { heapData.lock() }; 281 282 auto& spaces = heapData.subspaces(); 283 IsoSubspace* space = spaces.m_subspaceForTestIndexedSetterNoIdentifier.get(); 284 if (!space) { 285 Heap& heap = vm.heap; 286 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier> || !JSTestIndexedSetterNoIdentifier::needsDestruction); 287 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier>) 288 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterNoIdentifier); 289 else 290 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterNoIdentifier); 291 spaces.m_subspaceForTestIndexedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 292 IGNORE_WARNINGS_BEGIN("unreachable-code") 293 IGNORE_WARNINGS_BEGIN("tautological-compare") 294 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterNoIdentifier::visitOutputConstraints; 295 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 296 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 297 heapData.outputConstraintSpaces().append(space); 298 IGNORE_WARNINGS_END 299 IGNORE_WARNINGS_END 300 } 301 302 clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 303 return clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier.get(); 281 304 } 282 305 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 272 272 JSC::GCClient::IsoSubspace* JSTestIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 273 273 { 274 return subspaceForImpl<JSTestIndexedSetterThrowingException, UseCustomHeapCellType::No>(vm, 275 [] (auto& spaces) { return spaces.m_clientSubspaceForTestIndexedSetterThrowingException.get(); }, 276 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestIndexedSetterThrowingException = WTFMove(space); }, 277 [] (auto& spaces) { return spaces.m_subspaceForTestIndexedSetterThrowingException.get(); }, 278 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestIndexedSetterThrowingException = WTFMove(space); }, 279 nullptr 280 ); 274 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 275 auto& clientSpaces = clientData.clientSubspaces(); 276 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException.get()) 277 return clientSpace; 278 279 auto& heapData = clientData.heapData(); 280 Locker locker { heapData.lock() }; 281 282 auto& spaces = heapData.subspaces(); 283 IsoSubspace* space = spaces.m_subspaceForTestIndexedSetterThrowingException.get(); 284 if (!space) { 285 Heap& heap = vm.heap; 286 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException> || !JSTestIndexedSetterThrowingException::needsDestruction); 287 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException>) 288 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterThrowingException); 289 else 290 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterThrowingException); 291 spaces.m_subspaceForTestIndexedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 292 IGNORE_WARNINGS_BEGIN("unreachable-code") 293 IGNORE_WARNINGS_BEGIN("tautological-compare") 294 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterThrowingException::visitOutputConstraints; 295 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 296 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 297 heapData.outputConstraintSpaces().append(space); 298 IGNORE_WARNINGS_END 299 IGNORE_WARNINGS_END 300 } 301 302 clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 303 return clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException.get(); 281 304 } 282 305 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMBinding.h" … … 304 304 JSC::GCClient::IsoSubspace* JSTestIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 305 305 { 306 return subspaceForImpl<JSTestIndexedSetterWithIdentifier, UseCustomHeapCellType::No>(vm, 307 [] (auto& spaces) { return spaces.m_clientSubspaceForTestIndexedSetterWithIdentifier.get(); }, 308 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestIndexedSetterWithIdentifier = WTFMove(space); }, 309 [] (auto& spaces) { return spaces.m_subspaceForTestIndexedSetterWithIdentifier.get(); }, 310 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestIndexedSetterWithIdentifier = WTFMove(space); }, 311 nullptr 312 ); 306 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 307 auto& clientSpaces = clientData.clientSubspaces(); 308 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier.get()) 309 return clientSpace; 310 311 auto& heapData = clientData.heapData(); 312 Locker locker { heapData.lock() }; 313 314 auto& spaces = heapData.subspaces(); 315 IsoSubspace* space = spaces.m_subspaceForTestIndexedSetterWithIdentifier.get(); 316 if (!space) { 317 Heap& heap = vm.heap; 318 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier> || !JSTestIndexedSetterWithIdentifier::needsDestruction); 319 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier>) 320 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterWithIdentifier); 321 else 322 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterWithIdentifier); 323 spaces.m_subspaceForTestIndexedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 324 IGNORE_WARNINGS_BEGIN("unreachable-code") 325 IGNORE_WARNINGS_BEGIN("tautological-compare") 326 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterWithIdentifier::visitOutputConstraints; 327 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 328 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 329 heapData.outputConstraintSpaces().append(space); 330 IGNORE_WARNINGS_END 331 IGNORE_WARNINGS_END 332 } 333 334 clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 335 return clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier.get(); 313 336 } 314 337 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
r290188 r290193 26 26 27 27 #include "ActiveDOMObject.h" 28 #include "DOMClientIsoSubspaces.h" 29 #include "DOMIsoSubspaces.h" 28 30 #include "ElementInlines.h" 29 #include "ExtendedDOMClientIsoSubspaces.h"30 #include "ExtendedDOMIsoSubspaces.h"31 31 #include "HTMLNames.h" 32 32 #include "JSDOMAttribute.h" … … 1102 1102 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 1103 1103 return nullptr; 1104 return subspaceForImpl<TestInterfaceIterator, UseCustomHeapCellType::No>(vm, 1105 [] (auto& spaces) { return spaces.m_clientSubspaceForTestInterfaceIterator.get(); }, 1106 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestInterfaceIterator = WTFMove(space); }, 1107 [] (auto& spaces) { return spaces.m_subspaceForTestInterfaceIterator.get(); }, 1108 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestInterfaceIterator = WTFMove(space); } 1109 ); 1104 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1105 auto& clientSpaces = clientData.clientSubspaces(); 1106 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterfaceIterator.get()) 1107 return clientSpace; 1108 1109 auto& heapData = clientData.heapData(); 1110 Locker locker { heapData.lock() }; 1111 1112 auto& spaces = heapData.subspaces(); 1113 IsoSubspace* space = spaces.m_subspaceForTestInterfaceIterator.get(); 1114 if (!space) { 1115 Heap& heap = vm.heap; 1116 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator> || !TestInterfaceIterator::needsDestruction); 1117 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator>) 1118 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestInterfaceIterator); 1119 else 1120 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestInterfaceIterator); 1121 spaces.m_subspaceForTestInterfaceIterator = std::unique_ptr<IsoSubspace>(space); 1122 IGNORE_WARNINGS_BEGIN("unreachable-code") 1123 IGNORE_WARNINGS_BEGIN("tautological-compare") 1124 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestInterfaceIterator::visitOutputConstraints; 1125 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1126 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1127 heapData.outputConstraintSpaces().append(space); 1128 IGNORE_WARNINGS_END 1129 IGNORE_WARNINGS_END 1130 } 1131 1132 clientSpaces.m_clientSubspaceForTestInterfaceIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1133 return clientSpaces.m_clientSubspaceForTestInterfaceIterator.get(); 1110 1134 } 1111 1135 … … 1181 1205 JSC::GCClient::IsoSubspace* JSTestInterface::subspaceForImpl(JSC::VM& vm) 1182 1206 { 1183 return subspaceForImpl<JSTestInterface, UseCustomHeapCellType::No>(vm, 1184 [] (auto& spaces) { return spaces.m_clientSubspaceForTestInterface.get(); }, 1185 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestInterface = WTFMove(space); }, 1186 [] (auto& spaces) { return spaces.m_subspaceForTestInterface.get(); }, 1187 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestInterface = WTFMove(space); }, 1188 nullptr 1189 ); 1207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1208 auto& clientSpaces = clientData.clientSubspaces(); 1209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterface.get()) 1210 return clientSpace; 1211 1212 auto& heapData = clientData.heapData(); 1213 Locker locker { heapData.lock() }; 1214 1215 auto& spaces = heapData.subspaces(); 1216 IsoSubspace* space = spaces.m_subspaceForTestInterface.get(); 1217 if (!space) { 1218 Heap& heap = vm.heap; 1219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface> || !JSTestInterface::needsDestruction); 1220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface>) 1221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestInterface); 1222 else 1223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestInterface); 1224 spaces.m_subspaceForTestInterface = std::unique_ptr<IsoSubspace>(space); 1225 IGNORE_WARNINGS_BEGIN("unreachable-code") 1226 IGNORE_WARNINGS_BEGIN("tautological-compare") 1227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterface::visitOutputConstraints; 1228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1230 heapData.outputConstraintSpaces().append(space); 1231 IGNORE_WARNINGS_END 1232 IGNORE_WARNINGS_END 1233 } 1234 1235 clientSpaces.m_clientSubspaceForTestInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1236 return clientSpaces.m_clientSubspaceForTestInterface.get(); 1190 1237 } 1191 1238 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 183 183 JSC::GCClient::IsoSubspace* JSTestInterfaceLeadingUnderscore::subspaceForImpl(JSC::VM& vm) 184 184 { 185 return subspaceForImpl<JSTestInterfaceLeadingUnderscore, UseCustomHeapCellType::No>(vm, 186 [] (auto& spaces) { return spaces.m_clientSubspaceForTestInterfaceLeadingUnderscore.get(); }, 187 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestInterfaceLeadingUnderscore = WTFMove(space); }, 188 [] (auto& spaces) { return spaces.m_subspaceForTestInterfaceLeadingUnderscore.get(); }, 189 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestInterfaceLeadingUnderscore = WTFMove(space); }, 190 nullptr 191 ); 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForTestInterfaceLeadingUnderscore.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore> || !JSTestInterfaceLeadingUnderscore::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestInterfaceLeadingUnderscore); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestInterfaceLeadingUnderscore); 202 spaces.m_subspaceForTestInterfaceLeadingUnderscore = std::unique_ptr<IsoSubspace>(space); 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterfaceLeadingUnderscore::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 209 IGNORE_WARNINGS_END 210 IGNORE_WARNINGS_END 211 } 212 213 clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore.get(); 192 215 } 193 216 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 197 197 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 198 198 return nullptr; 199 return subspaceForImpl<TestIterableIterator, UseCustomHeapCellType::No>(vm, 200 [] (auto& spaces) { return spaces.m_clientSubspaceForTestIterableIterator.get(); }, 201 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestIterableIterator = WTFMove(space); }, 202 [] (auto& spaces) { return spaces.m_subspaceForTestIterableIterator.get(); }, 203 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestIterableIterator = WTFMove(space); } 204 ); 199 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 200 auto& clientSpaces = clientData.clientSubspaces(); 201 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIterableIterator.get()) 202 return clientSpace; 203 204 auto& heapData = clientData.heapData(); 205 Locker locker { heapData.lock() }; 206 207 auto& spaces = heapData.subspaces(); 208 IsoSubspace* space = spaces.m_subspaceForTestIterableIterator.get(); 209 if (!space) { 210 Heap& heap = vm.heap; 211 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator> || !TestIterableIterator::needsDestruction); 212 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator>) 213 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestIterableIterator); 214 else 215 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestIterableIterator); 216 spaces.m_subspaceForTestIterableIterator = std::unique_ptr<IsoSubspace>(space); 217 IGNORE_WARNINGS_BEGIN("unreachable-code") 218 IGNORE_WARNINGS_BEGIN("tautological-compare") 219 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestIterableIterator::visitOutputConstraints; 220 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 221 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 222 heapData.outputConstraintSpaces().append(space); 223 IGNORE_WARNINGS_END 224 IGNORE_WARNINGS_END 225 } 226 227 clientSpaces.m_clientSubspaceForTestIterableIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 228 return clientSpaces.m_clientSubspaceForTestIterableIterator.get(); 205 229 } 206 230 … … 276 300 JSC::GCClient::IsoSubspace* JSTestIterable::subspaceForImpl(JSC::VM& vm) 277 301 { 278 return subspaceForImpl<JSTestIterable, UseCustomHeapCellType::No>(vm, 279 [] (auto& spaces) { return spaces.m_clientSubspaceForTestIterable.get(); }, 280 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestIterable = WTFMove(space); }, 281 [] (auto& spaces) { return spaces.m_subspaceForTestIterable.get(); }, 282 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestIterable = WTFMove(space); }, 283 nullptr 284 ); 302 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 303 auto& clientSpaces = clientData.clientSubspaces(); 304 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIterable.get()) 305 return clientSpace; 306 307 auto& heapData = clientData.heapData(); 308 Locker locker { heapData.lock() }; 309 310 auto& spaces = heapData.subspaces(); 311 IsoSubspace* space = spaces.m_subspaceForTestIterable.get(); 312 if (!space) { 313 Heap& heap = vm.heap; 314 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable> || !JSTestIterable::needsDestruction); 315 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable>) 316 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIterable); 317 else 318 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIterable); 319 spaces.m_subspaceForTestIterable = std::unique_ptr<IsoSubspace>(space); 320 IGNORE_WARNINGS_BEGIN("unreachable-code") 321 IGNORE_WARNINGS_BEGIN("tautological-compare") 322 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIterable::visitOutputConstraints; 323 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 324 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 325 heapData.outputConstraintSpaces().append(space); 326 IGNORE_WARNINGS_END 327 IGNORE_WARNINGS_END 328 } 329 330 clientSpaces.m_clientSubspaceForTestIterable = makeUnique<JSC::GCClient::IsoSubspace>(*space); 331 return clientSpaces.m_clientSubspaceForTestIterable.get(); 285 332 } 286 333 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
r290188 r290193 22 22 #include "JSTestJSBuiltinConstructor.h" 23 23 24 #include " ExtendedDOMClientIsoSubspaces.h"25 #include " ExtendedDOMIsoSubspaces.h"24 #include "DOMClientIsoSubspaces.h" 25 #include "DOMIsoSubspaces.h" 26 26 #include "JSDOMAttribute.h" 27 27 #include "JSDOMBinding.h" … … 226 226 JSC::GCClient::IsoSubspace* JSTestJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm) 227 227 { 228 return subspaceForImpl<JSTestJSBuiltinConstructor, UseCustomHeapCellType::No>(vm, 229 [] (auto& spaces) { return spaces.m_clientSubspaceForTestJSBuiltinConstructor.get(); }, 230 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestJSBuiltinConstructor = WTFMove(space); }, 231 [] (auto& spaces) { return spaces.m_subspaceForTestJSBuiltinConstructor.get(); }, 232 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestJSBuiltinConstructor = WTFMove(space); }, 233 nullptr 234 ); 235 } 236 237 238 } 228 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 229 auto& clientSpaces = clientData.clientSubspaces(); 230 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor.get()) 231 return clientSpace; 232 233 auto& heapData = clientData.heapData(); 234 Locker locker { heapData.lock() }; 235 236 auto& spaces = heapData.subspaces(); 237 IsoSubspace* space = spaces.m_subspaceForTestJSBuiltinConstructor.get(); 238 if (!space) { 239 Heap& heap = vm.heap; 240 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor> || !JSTestJSBuiltinConstructor::needsDestruction); 241 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor>) 242 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestJSBuiltinConstructor); 243 else 244 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestJSBuiltinConstructor); 245 spaces.m_subspaceForTestJSBuiltinConstructor = std::unique_ptr<IsoSubspace>(space); 246 IGNORE_WARNINGS_BEGIN("unreachable-code") 247 IGNORE_WARNINGS_BEGIN("tautological-compare") 248 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestJSBuiltinConstructor::visitOutputConstraints; 249 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 250 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 251 heapData.outputConstraintSpaces().append(space); 252 IGNORE_WARNINGS_END 253 IGNORE_WARNINGS_END 254 } 255 256 clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 257 return clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor.get(); 258 } 259 260 261 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "Document.h" 26 #include "ExtendedDOMClientIsoSubspaces.h"27 #include "ExtendedDOMIsoSubspaces.h"28 28 #include "JSDOMBinding.h" 29 29 #include "JSDOMConstructorNotConstructable.h" … … 228 228 JSC::GCClient::IsoSubspace* JSTestLegacyFactoryFunction::subspaceForImpl(JSC::VM& vm) 229 229 { 230 return subspaceForImpl<JSTestLegacyFactoryFunction, UseCustomHeapCellType::No>(vm, 231 [] (auto& spaces) { return spaces.m_clientSubspaceForTestLegacyFactoryFunction.get(); }, 232 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestLegacyFactoryFunction = WTFMove(space); }, 233 [] (auto& spaces) { return spaces.m_subspaceForTestLegacyFactoryFunction.get(); }, 234 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestLegacyFactoryFunction = WTFMove(space); }, 235 nullptr 236 ); 230 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 231 auto& clientSpaces = clientData.clientSubspaces(); 232 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction.get()) 233 return clientSpace; 234 235 auto& heapData = clientData.heapData(); 236 Locker locker { heapData.lock() }; 237 238 auto& spaces = heapData.subspaces(); 239 IsoSubspace* space = spaces.m_subspaceForTestLegacyFactoryFunction.get(); 240 if (!space) { 241 Heap& heap = vm.heap; 242 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction> || !JSTestLegacyFactoryFunction::needsDestruction); 243 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction>) 244 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyFactoryFunction); 245 else 246 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyFactoryFunction); 247 spaces.m_subspaceForTestLegacyFactoryFunction = std::unique_ptr<IsoSubspace>(space); 248 IGNORE_WARNINGS_BEGIN("unreachable-code") 249 IGNORE_WARNINGS_BEGIN("tautological-compare") 250 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyFactoryFunction::visitOutputConstraints; 251 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 252 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 253 heapData.outputConstraintSpaces().append(space); 254 IGNORE_WARNINGS_END 255 IGNORE_WARNINGS_END 256 } 257 258 clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction = makeUnique<JSC::GCClient::IsoSubspace>(*space); 259 return clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction.get(); 237 260 } 238 261 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp
r290188 r290193 26 26 27 27 #include "ActiveDOMObject.h" 28 #include " ExtendedDOMClientIsoSubspaces.h"29 #include " ExtendedDOMIsoSubspaces.h"28 #include "DOMClientIsoSubspaces.h" 29 #include "DOMIsoSubspaces.h" 30 30 #include "IDLTypes.h" 31 31 #include "JSDOMAttribute.h" … … 331 331 JSC::GCClient::IsoSubspace* JSTestLegacyNoInterfaceObject::subspaceForImpl(JSC::VM& vm) 332 332 { 333 return subspaceForImpl<JSTestLegacyNoInterfaceObject, UseCustomHeapCellType::No>(vm, 334 [] (auto& spaces) { return spaces.m_clientSubspaceForTestLegacyNoInterfaceObject.get(); }, 335 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestLegacyNoInterfaceObject = WTFMove(space); }, 336 [] (auto& spaces) { return spaces.m_subspaceForTestLegacyNoInterfaceObject.get(); }, 337 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestLegacyNoInterfaceObject = WTFMove(space); }, 338 nullptr 339 ); 333 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 334 auto& clientSpaces = clientData.clientSubspaces(); 335 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject.get()) 336 return clientSpace; 337 338 auto& heapData = clientData.heapData(); 339 Locker locker { heapData.lock() }; 340 341 auto& spaces = heapData.subspaces(); 342 IsoSubspace* space = spaces.m_subspaceForTestLegacyNoInterfaceObject.get(); 343 if (!space) { 344 Heap& heap = vm.heap; 345 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject> || !JSTestLegacyNoInterfaceObject::needsDestruction); 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject>) 347 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyNoInterfaceObject); 348 else 349 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyNoInterfaceObject); 350 spaces.m_subspaceForTestLegacyNoInterfaceObject = std::unique_ptr<IsoSubspace>(space); 351 IGNORE_WARNINGS_BEGIN("unreachable-code") 352 IGNORE_WARNINGS_BEGIN("tautological-compare") 353 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyNoInterfaceObject::visitOutputConstraints; 354 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 355 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 356 heapData.outputConstraintSpaces().append(space); 357 IGNORE_WARNINGS_END 358 IGNORE_WARNINGS_END 359 } 360 361 clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 362 return clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject.get(); 340 363 } 341 364 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 245 245 JSC::GCClient::IsoSubspace* JSTestLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 246 246 { 247 return subspaceForImpl<JSTestLegacyOverrideBuiltIns, UseCustomHeapCellType::No>(vm, 248 [] (auto& spaces) { return spaces.m_clientSubspaceForTestLegacyOverrideBuiltIns.get(); }, 249 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestLegacyOverrideBuiltIns = WTFMove(space); }, 250 [] (auto& spaces) { return spaces.m_subspaceForTestLegacyOverrideBuiltIns.get(); }, 251 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestLegacyOverrideBuiltIns = WTFMove(space); }, 252 nullptr 253 ); 247 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 248 auto& clientSpaces = clientData.clientSubspaces(); 249 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns.get()) 250 return clientSpace; 251 252 auto& heapData = clientData.heapData(); 253 Locker locker { heapData.lock() }; 254 255 auto& spaces = heapData.subspaces(); 256 IsoSubspace* space = spaces.m_subspaceForTestLegacyOverrideBuiltIns.get(); 257 if (!space) { 258 Heap& heap = vm.heap; 259 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns> || !JSTestLegacyOverrideBuiltIns::needsDestruction); 260 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns>) 261 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyOverrideBuiltIns); 262 else 263 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyOverrideBuiltIns); 264 spaces.m_subspaceForTestLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 265 IGNORE_WARNINGS_BEGIN("unreachable-code") 266 IGNORE_WARNINGS_BEGIN("tautological-compare") 267 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyOverrideBuiltIns::visitOutputConstraints; 268 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 269 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 270 heapData.outputConstraintSpaces().append(space); 271 IGNORE_WARNINGS_END 272 IGNORE_WARNINGS_END 273 } 274 275 clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 276 return clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns.get(); 254 277 } 255 278 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLike.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 362 362 JSC::GCClient::IsoSubspace* JSTestMapLike::subspaceForImpl(JSC::VM& vm) 363 363 { 364 return subspaceForImpl<JSTestMapLike, UseCustomHeapCellType::No>(vm, 365 [] (auto& spaces) { return spaces.m_clientSubspaceForTestMapLike.get(); }, 366 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestMapLike = WTFMove(space); }, 367 [] (auto& spaces) { return spaces.m_subspaceForTestMapLike.get(); }, 368 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestMapLike = WTFMove(space); }, 369 nullptr 370 ); 364 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 365 auto& clientSpaces = clientData.clientSubspaces(); 366 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestMapLike.get()) 367 return clientSpace; 368 369 auto& heapData = clientData.heapData(); 370 Locker locker { heapData.lock() }; 371 372 auto& spaces = heapData.subspaces(); 373 IsoSubspace* space = spaces.m_subspaceForTestMapLike.get(); 374 if (!space) { 375 Heap& heap = vm.heap; 376 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike> || !JSTestMapLike::needsDestruction); 377 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike>) 378 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestMapLike); 379 else 380 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestMapLike); 381 spaces.m_subspaceForTestMapLike = std::unique_ptr<IsoSubspace>(space); 382 IGNORE_WARNINGS_BEGIN("unreachable-code") 383 IGNORE_WARNINGS_BEGIN("tautological-compare") 384 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLike::visitOutputConstraints; 385 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 386 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 387 heapData.outputConstraintSpaces().append(space); 388 IGNORE_WARNINGS_END 389 IGNORE_WARNINGS_END 390 } 391 392 clientSpaces.m_clientSubspaceForTestMapLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 393 return clientSpaces.m_clientSubspaceForTestMapLike.get(); 371 394 } 372 395 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAttribute.h" … … 376 376 JSC::GCClient::IsoSubspace* JSTestMapLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm) 377 377 { 378 return subspaceForImpl<JSTestMapLikeWithOverriddenOperations, UseCustomHeapCellType::No>(vm, 379 [] (auto& spaces) { return spaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations.get(); }, 380 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations = WTFMove(space); }, 381 [] (auto& spaces) { return spaces.m_subspaceForTestMapLikeWithOverriddenOperations.get(); }, 382 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestMapLikeWithOverriddenOperations = WTFMove(space); }, 383 nullptr 384 ); 378 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 379 auto& clientSpaces = clientData.clientSubspaces(); 380 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations.get()) 381 return clientSpace; 382 383 auto& heapData = clientData.heapData(); 384 Locker locker { heapData.lock() }; 385 386 auto& spaces = heapData.subspaces(); 387 IsoSubspace* space = spaces.m_subspaceForTestMapLikeWithOverriddenOperations.get(); 388 if (!space) { 389 Heap& heap = vm.heap; 390 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations> || !JSTestMapLikeWithOverriddenOperations::needsDestruction); 391 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations>) 392 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestMapLikeWithOverriddenOperations); 393 else 394 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestMapLikeWithOverriddenOperations); 395 spaces.m_subspaceForTestMapLikeWithOverriddenOperations = std::unique_ptr<IsoSubspace>(space); 396 IGNORE_WARNINGS_BEGIN("unreachable-code") 397 IGNORE_WARNINGS_BEGIN("tautological-compare") 398 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLikeWithOverriddenOperations::visitOutputConstraints; 399 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 400 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 401 heapData.outputConstraintSpaces().append(space); 402 IGNORE_WARNINGS_END 403 IGNORE_WARNINGS_END 404 } 405 406 clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations = makeUnique<JSC::GCClient::IsoSubspace>(*space); 407 return clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations.get(); 385 408 } 386 409 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 340 340 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 341 341 { 342 return subspaceForImpl<JSTestNamedAndIndexedSetterNoIdentifier, UseCustomHeapCellType::No>(vm, 343 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier.get(); }, 344 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier = WTFMove(space); }, 345 [] (auto& spaces) { return spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get(); }, 346 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = WTFMove(space); }, 347 nullptr 348 ); 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 343 auto& clientSpaces = clientData.clientSubspaces(); 344 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier.get()) 345 return clientSpace; 346 347 auto& heapData = clientData.heapData(); 348 Locker locker { heapData.lock() }; 349 350 auto& spaces = heapData.subspaces(); 351 IsoSubspace* space = spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get(); 352 if (!space) { 353 Heap& heap = vm.heap; 354 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier> || !JSTestNamedAndIndexedSetterNoIdentifier::needsDestruction); 355 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier>) 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterNoIdentifier); 357 else 358 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterNoIdentifier); 359 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 360 IGNORE_WARNINGS_BEGIN("unreachable-code") 361 IGNORE_WARNINGS_BEGIN("tautological-compare") 362 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterNoIdentifier::visitOutputConstraints; 363 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 364 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 365 heapData.outputConstraintSpaces().append(space); 366 IGNORE_WARNINGS_END 367 IGNORE_WARNINGS_END 368 } 369 370 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 371 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier.get(); 349 372 } 350 373 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 340 340 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 341 341 { 342 return subspaceForImpl<JSTestNamedAndIndexedSetterThrowingException, UseCustomHeapCellType::No>(vm, 343 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException.get(); }, 344 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException = WTFMove(space); }, 345 [] (auto& spaces) { return spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get(); }, 346 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = WTFMove(space); }, 347 nullptr 348 ); 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 343 auto& clientSpaces = clientData.clientSubspaces(); 344 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException.get()) 345 return clientSpace; 346 347 auto& heapData = clientData.heapData(); 348 Locker locker { heapData.lock() }; 349 350 auto& spaces = heapData.subspaces(); 351 IsoSubspace* space = spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get(); 352 if (!space) { 353 Heap& heap = vm.heap; 354 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException> || !JSTestNamedAndIndexedSetterThrowingException::needsDestruction); 355 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException>) 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterThrowingException); 357 else 358 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterThrowingException); 359 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 360 IGNORE_WARNINGS_BEGIN("unreachable-code") 361 IGNORE_WARNINGS_BEGIN("tautological-compare") 362 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterThrowingException::visitOutputConstraints; 363 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 364 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 365 heapData.outputConstraintSpaces().append(space); 366 IGNORE_WARNINGS_END 367 IGNORE_WARNINGS_END 368 } 369 370 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 371 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException.get(); 349 372 } 350 373 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 397 397 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 398 398 { 399 return subspaceForImpl<JSTestNamedAndIndexedSetterWithIdentifier, UseCustomHeapCellType::No>(vm, 400 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier.get(); }, 401 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier = WTFMove(space); }, 402 [] (auto& spaces) { return spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get(); }, 403 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = WTFMove(space); }, 404 nullptr 405 ); 399 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 400 auto& clientSpaces = clientData.clientSubspaces(); 401 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier.get()) 402 return clientSpace; 403 404 auto& heapData = clientData.heapData(); 405 Locker locker { heapData.lock() }; 406 407 auto& spaces = heapData.subspaces(); 408 IsoSubspace* space = spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get(); 409 if (!space) { 410 Heap& heap = vm.heap; 411 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier> || !JSTestNamedAndIndexedSetterWithIdentifier::needsDestruction); 412 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier>) 413 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterWithIdentifier); 414 else 415 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterWithIdentifier); 416 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 417 IGNORE_WARNINGS_BEGIN("unreachable-code") 418 IGNORE_WARNINGS_BEGIN("tautological-compare") 419 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterWithIdentifier::visitOutputConstraints; 420 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 421 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 422 heapData.outputConstraintSpaces().append(space); 423 IGNORE_WARNINGS_END 424 IGNORE_WARNINGS_END 425 } 426 427 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 428 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier.get(); 406 429 } 407 430 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 242 242 JSC::GCClient::IsoSubspace* JSTestNamedDeleterNoIdentifier::subspaceForImpl(JSC::VM& vm) 243 243 { 244 return subspaceForImpl<JSTestNamedDeleterNoIdentifier, UseCustomHeapCellType::No>(vm, 245 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedDeleterNoIdentifier.get(); }, 246 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedDeleterNoIdentifier = WTFMove(space); }, 247 [] (auto& spaces) { return spaces.m_subspaceForTestNamedDeleterNoIdentifier.get(); }, 248 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedDeleterNoIdentifier = WTFMove(space); }, 249 nullptr 250 ); 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForTestNamedDeleterNoIdentifier.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier> || !JSTestNamedDeleterNoIdentifier::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterNoIdentifier); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterNoIdentifier); 261 spaces.m_subspaceForTestNamedDeleterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterNoIdentifier::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 268 IGNORE_WARNINGS_END 269 IGNORE_WARNINGS_END 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier.get(); 251 274 } 252 275 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 242 242 JSC::GCClient::IsoSubspace* JSTestNamedDeleterThrowingException::subspaceForImpl(JSC::VM& vm) 243 243 { 244 return subspaceForImpl<JSTestNamedDeleterThrowingException, UseCustomHeapCellType::No>(vm, 245 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedDeleterThrowingException.get(); }, 246 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedDeleterThrowingException = WTFMove(space); }, 247 [] (auto& spaces) { return spaces.m_subspaceForTestNamedDeleterThrowingException.get(); }, 248 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedDeleterThrowingException = WTFMove(space); }, 249 nullptr 250 ); 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForTestNamedDeleterThrowingException.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException> || !JSTestNamedDeleterThrowingException::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterThrowingException); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterThrowingException); 261 spaces.m_subspaceForTestNamedDeleterThrowingException = std::unique_ptr<IsoSubspace>(space); 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterThrowingException::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 268 IGNORE_WARNINGS_END 269 IGNORE_WARNINGS_END 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException.get(); 251 274 } 252 275 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 266 266 JSC::GCClient::IsoSubspace* JSTestNamedDeleterWithIdentifier::subspaceForImpl(JSC::VM& vm) 267 267 { 268 return subspaceForImpl<JSTestNamedDeleterWithIdentifier, UseCustomHeapCellType::No>(vm, 269 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedDeleterWithIdentifier.get(); }, 270 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedDeleterWithIdentifier = WTFMove(space); }, 271 [] (auto& spaces) { return spaces.m_subspaceForTestNamedDeleterWithIdentifier.get(); }, 272 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedDeleterWithIdentifier = WTFMove(space); }, 273 nullptr 274 ); 268 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 269 auto& clientSpaces = clientData.clientSubspaces(); 270 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier.get()) 271 return clientSpace; 272 273 auto& heapData = clientData.heapData(); 274 Locker locker { heapData.lock() }; 275 276 auto& spaces = heapData.subspaces(); 277 IsoSubspace* space = spaces.m_subspaceForTestNamedDeleterWithIdentifier.get(); 278 if (!space) { 279 Heap& heap = vm.heap; 280 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier> || !JSTestNamedDeleterWithIdentifier::needsDestruction); 281 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier>) 282 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterWithIdentifier); 283 else 284 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterWithIdentifier); 285 spaces.m_subspaceForTestNamedDeleterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 286 IGNORE_WARNINGS_BEGIN("unreachable-code") 287 IGNORE_WARNINGS_BEGIN("tautological-compare") 288 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIdentifier::visitOutputConstraints; 289 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 290 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 291 heapData.outputConstraintSpaces().append(space); 292 IGNORE_WARNINGS_END 293 IGNORE_WARNINGS_END 294 } 295 296 clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 297 return clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier.get(); 275 298 } 276 299 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 258 258 JSC::GCClient::IsoSubspace* JSTestNamedDeleterWithIndexedGetter::subspaceForImpl(JSC::VM& vm) 259 259 { 260 return subspaceForImpl<JSTestNamedDeleterWithIndexedGetter, UseCustomHeapCellType::No>(vm, 261 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter.get(); }, 262 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter = WTFMove(space); }, 263 [] (auto& spaces) { return spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get(); }, 264 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = WTFMove(space); }, 265 nullptr 266 ); 260 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 261 auto& clientSpaces = clientData.clientSubspaces(); 262 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter.get()) 263 return clientSpace; 264 265 auto& heapData = clientData.heapData(); 266 Locker locker { heapData.lock() }; 267 268 auto& spaces = heapData.subspaces(); 269 IsoSubspace* space = spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get(); 270 if (!space) { 271 Heap& heap = vm.heap; 272 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter> || !JSTestNamedDeleterWithIndexedGetter::needsDestruction); 273 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter>) 274 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterWithIndexedGetter); 275 else 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterWithIndexedGetter); 277 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = std::unique_ptr<IsoSubspace>(space); 278 IGNORE_WARNINGS_BEGIN("unreachable-code") 279 IGNORE_WARNINGS_BEGIN("tautological-compare") 280 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIndexedGetter::visitOutputConstraints; 281 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 282 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 283 heapData.outputConstraintSpaces().append(space); 284 IGNORE_WARNINGS_END 285 IGNORE_WARNINGS_END 286 } 287 288 clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 289 return clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter.get(); 267 290 } 268 291 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 216 216 JSC::GCClient::IsoSubspace* JSTestNamedGetterCallWith::subspaceForImpl(JSC::VM& vm) 217 217 { 218 return subspaceForImpl<JSTestNamedGetterCallWith, UseCustomHeapCellType::No>(vm, 219 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedGetterCallWith.get(); }, 220 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedGetterCallWith = WTFMove(space); }, 221 [] (auto& spaces) { return spaces.m_subspaceForTestNamedGetterCallWith.get(); }, 222 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedGetterCallWith = WTFMove(space); }, 223 nullptr 224 ); 218 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 219 auto& clientSpaces = clientData.clientSubspaces(); 220 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterCallWith.get()) 221 return clientSpace; 222 223 auto& heapData = clientData.heapData(); 224 Locker locker { heapData.lock() }; 225 226 auto& spaces = heapData.subspaces(); 227 IsoSubspace* space = spaces.m_subspaceForTestNamedGetterCallWith.get(); 228 if (!space) { 229 Heap& heap = vm.heap; 230 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith> || !JSTestNamedGetterCallWith::needsDestruction); 231 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith>) 232 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterCallWith); 233 else 234 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterCallWith); 235 spaces.m_subspaceForTestNamedGetterCallWith = std::unique_ptr<IsoSubspace>(space); 236 IGNORE_WARNINGS_BEGIN("unreachable-code") 237 IGNORE_WARNINGS_BEGIN("tautological-compare") 238 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterCallWith::visitOutputConstraints; 239 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 240 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 241 heapData.outputConstraintSpaces().append(space); 242 IGNORE_WARNINGS_END 243 IGNORE_WARNINGS_END 244 } 245 246 clientSpaces.m_clientSubspaceForTestNamedGetterCallWith = makeUnique<JSC::GCClient::IsoSubspace>(*space); 247 return clientSpaces.m_clientSubspaceForTestNamedGetterCallWith.get(); 225 248 } 226 249 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 216 216 JSC::GCClient::IsoSubspace* JSTestNamedGetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 217 217 { 218 return subspaceForImpl<JSTestNamedGetterNoIdentifier, UseCustomHeapCellType::No>(vm, 219 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedGetterNoIdentifier.get(); }, 220 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedGetterNoIdentifier = WTFMove(space); }, 221 [] (auto& spaces) { return spaces.m_subspaceForTestNamedGetterNoIdentifier.get(); }, 222 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedGetterNoIdentifier = WTFMove(space); }, 223 nullptr 224 ); 218 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 219 auto& clientSpaces = clientData.clientSubspaces(); 220 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier.get()) 221 return clientSpace; 222 223 auto& heapData = clientData.heapData(); 224 Locker locker { heapData.lock() }; 225 226 auto& spaces = heapData.subspaces(); 227 IsoSubspace* space = spaces.m_subspaceForTestNamedGetterNoIdentifier.get(); 228 if (!space) { 229 Heap& heap = vm.heap; 230 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier> || !JSTestNamedGetterNoIdentifier::needsDestruction); 231 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier>) 232 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterNoIdentifier); 233 else 234 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterNoIdentifier); 235 spaces.m_subspaceForTestNamedGetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 236 IGNORE_WARNINGS_BEGIN("unreachable-code") 237 IGNORE_WARNINGS_BEGIN("tautological-compare") 238 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterNoIdentifier::visitOutputConstraints; 239 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 240 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 241 heapData.outputConstraintSpaces().append(space); 242 IGNORE_WARNINGS_END 243 IGNORE_WARNINGS_END 244 } 245 246 clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 247 return clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier.get(); 225 248 } 226 249 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 242 242 JSC::GCClient::IsoSubspace* JSTestNamedGetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 243 243 { 244 return subspaceForImpl<JSTestNamedGetterWithIdentifier, UseCustomHeapCellType::No>(vm, 245 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedGetterWithIdentifier.get(); }, 246 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedGetterWithIdentifier = WTFMove(space); }, 247 [] (auto& spaces) { return spaces.m_subspaceForTestNamedGetterWithIdentifier.get(); }, 248 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedGetterWithIdentifier = WTFMove(space); }, 249 nullptr 250 ); 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForTestNamedGetterWithIdentifier.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier> || !JSTestNamedGetterWithIdentifier::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterWithIdentifier); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterWithIdentifier); 261 spaces.m_subspaceForTestNamedGetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterWithIdentifier::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 268 IGNORE_WARNINGS_END 269 IGNORE_WARNINGS_END 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier.get(); 251 274 } 252 275 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 296 296 JSC::GCClient::IsoSubspace* JSTestNamedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 297 297 { 298 return subspaceForImpl<JSTestNamedSetterNoIdentifier, UseCustomHeapCellType::No>(vm, 299 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterNoIdentifier.get(); }, 300 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterNoIdentifier = WTFMove(space); }, 301 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterNoIdentifier.get(); }, 302 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterNoIdentifier = WTFMove(space); }, 303 nullptr 304 ); 298 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 299 auto& clientSpaces = clientData.clientSubspaces(); 300 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier.get()) 301 return clientSpace; 302 303 auto& heapData = clientData.heapData(); 304 Locker locker { heapData.lock() }; 305 306 auto& spaces = heapData.subspaces(); 307 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterNoIdentifier.get(); 308 if (!space) { 309 Heap& heap = vm.heap; 310 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier> || !JSTestNamedSetterNoIdentifier::needsDestruction); 311 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier>) 312 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterNoIdentifier); 313 else 314 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterNoIdentifier); 315 spaces.m_subspaceForTestNamedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 316 IGNORE_WARNINGS_BEGIN("unreachable-code") 317 IGNORE_WARNINGS_BEGIN("tautological-compare") 318 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterNoIdentifier::visitOutputConstraints; 319 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 320 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 321 heapData.outputConstraintSpaces().append(space); 322 IGNORE_WARNINGS_END 323 IGNORE_WARNINGS_END 324 } 325 326 clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 327 return clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier.get(); 305 328 } 306 329 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 296 296 JSC::GCClient::IsoSubspace* JSTestNamedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 297 297 { 298 return subspaceForImpl<JSTestNamedSetterThrowingException, UseCustomHeapCellType::No>(vm, 299 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterThrowingException.get(); }, 300 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterThrowingException = WTFMove(space); }, 301 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterThrowingException.get(); }, 302 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterThrowingException = WTFMove(space); }, 303 nullptr 304 ); 298 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 299 auto& clientSpaces = clientData.clientSubspaces(); 300 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException.get()) 301 return clientSpace; 302 303 auto& heapData = clientData.heapData(); 304 Locker locker { heapData.lock() }; 305 306 auto& spaces = heapData.subspaces(); 307 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterThrowingException.get(); 308 if (!space) { 309 Heap& heap = vm.heap; 310 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException> || !JSTestNamedSetterThrowingException::needsDestruction); 311 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException>) 312 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterThrowingException); 313 else 314 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterThrowingException); 315 spaces.m_subspaceForTestNamedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 316 IGNORE_WARNINGS_BEGIN("unreachable-code") 317 IGNORE_WARNINGS_BEGIN("tautological-compare") 318 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterThrowingException::visitOutputConstraints; 319 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 320 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 321 heapData.outputConstraintSpaces().append(space); 322 IGNORE_WARNINGS_END 323 IGNORE_WARNINGS_END 324 } 325 326 clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 327 return clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException.get(); 305 328 } 306 329 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 327 327 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 328 328 { 329 return subspaceForImpl<JSTestNamedSetterWithIdentifier, UseCustomHeapCellType::No>(vm, 330 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithIdentifier.get(); }, 331 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithIdentifier = WTFMove(space); }, 332 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithIdentifier.get(); }, 333 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithIdentifier = WTFMove(space); }, 334 nullptr 335 ); 329 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 330 auto& clientSpaces = clientData.clientSubspaces(); 331 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier.get()) 332 return clientSpace; 333 334 auto& heapData = clientData.heapData(); 335 Locker locker { heapData.lock() }; 336 337 auto& spaces = heapData.subspaces(); 338 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithIdentifier.get(); 339 if (!space) { 340 Heap& heap = vm.heap; 341 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier> || !JSTestNamedSetterWithIdentifier::needsDestruction); 342 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier>) 343 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIdentifier); 344 else 345 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIdentifier); 346 spaces.m_subspaceForTestNamedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 347 IGNORE_WARNINGS_BEGIN("unreachable-code") 348 IGNORE_WARNINGS_BEGIN("tautological-compare") 349 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIdentifier::visitOutputConstraints; 350 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 351 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 352 heapData.outputConstraintSpaces().append(space); 353 IGNORE_WARNINGS_END 354 IGNORE_WARNINGS_END 355 } 356 357 clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 358 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier.get(); 336 359 } 337 360 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 374 374 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIndexedGetter::subspaceForImpl(JSC::VM& vm) 375 375 { 376 return subspaceForImpl<JSTestNamedSetterWithIndexedGetter, UseCustomHeapCellType::No>(vm, 377 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter.get(); }, 378 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter = WTFMove(space); }, 379 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get(); }, 380 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithIndexedGetter = WTFMove(space); }, 381 nullptr 382 ); 376 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 377 auto& clientSpaces = clientData.clientSubspaces(); 378 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter.get()) 379 return clientSpace; 380 381 auto& heapData = clientData.heapData(); 382 Locker locker { heapData.lock() }; 383 384 auto& spaces = heapData.subspaces(); 385 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get(); 386 if (!space) { 387 Heap& heap = vm.heap; 388 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter> || !JSTestNamedSetterWithIndexedGetter::needsDestruction); 389 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter>) 390 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIndexedGetter); 391 else 392 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIndexedGetter); 393 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = std::unique_ptr<IsoSubspace>(space); 394 IGNORE_WARNINGS_BEGIN("unreachable-code") 395 IGNORE_WARNINGS_BEGIN("tautological-compare") 396 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetter::visitOutputConstraints; 397 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 398 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 399 heapData.outputConstraintSpaces().append(space); 400 IGNORE_WARNINGS_END 401 IGNORE_WARNINGS_END 402 } 403 404 clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 405 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter.get(); 383 406 } 384 407 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 424 424 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl(JSC::VM& vm) 425 425 { 426 return subspaceForImpl<JSTestNamedSetterWithIndexedGetterAndSetter, UseCustomHeapCellType::No>(vm, 427 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); }, 428 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter = WTFMove(space); }, 429 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); }, 430 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = WTFMove(space); }, 431 nullptr 432 ); 426 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 427 auto& clientSpaces = clientData.clientSubspaces(); 428 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter.get()) 429 return clientSpace; 430 431 auto& heapData = clientData.heapData(); 432 Locker locker { heapData.lock() }; 433 434 auto& spaces = heapData.subspaces(); 435 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); 436 if (!space) { 437 Heap& heap = vm.heap; 438 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter> || !JSTestNamedSetterWithIndexedGetterAndSetter::needsDestruction); 439 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter>) 440 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIndexedGetterAndSetter); 441 else 442 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIndexedGetterAndSetter); 443 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = std::unique_ptr<IsoSubspace>(space); 444 IGNORE_WARNINGS_BEGIN("unreachable-code") 445 IGNORE_WARNINGS_BEGIN("tautological-compare") 446 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetterAndSetter::visitOutputConstraints; 447 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 448 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 449 heapData.outputConstraintSpaces().append(space); 450 IGNORE_WARNINGS_END 451 IGNORE_WARNINGS_END 452 } 453 454 clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 455 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); 433 456 } 434 457 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAbstractOperations.h" 28 28 #include "JSDOMBinding.h" … … 273 273 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 274 274 { 275 return subspaceForImpl<JSTestNamedSetterWithLegacyOverrideBuiltIns, UseCustomHeapCellType::No>(vm, 276 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); }, 277 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns = WTFMove(space); }, 278 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); }, 279 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns = WTFMove(space); }, 280 nullptr 281 ); 275 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 276 auto& clientSpaces = clientData.clientSubspaces(); 277 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get()) 278 return clientSpace; 279 280 auto& heapData = clientData.heapData(); 281 Locker locker { heapData.lock() }; 282 283 auto& spaces = heapData.subspaces(); 284 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); 285 if (!space) { 286 Heap& heap = vm.heap; 287 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyOverrideBuiltIns::needsDestruction); 288 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns>) 289 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyOverrideBuiltIns); 290 else 291 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyOverrideBuiltIns); 292 spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 293 IGNORE_WARNINGS_BEGIN("unreachable-code") 294 IGNORE_WARNINGS_BEGIN("tautological-compare") 295 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyOverrideBuiltIns::visitOutputConstraints; 296 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 297 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 298 heapData.outputConstraintSpaces().append(space); 299 IGNORE_WARNINGS_END 300 IGNORE_WARNINGS_END 301 } 302 303 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 304 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); 282 305 } 283 306 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 357 357 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl(JSC::VM& vm) 358 358 { 359 return subspaceForImpl<JSTestNamedSetterWithLegacyUnforgeableProperties, UseCustomHeapCellType::No>(vm, 360 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); }, 361 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties = WTFMove(space); }, 362 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); }, 363 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties = WTFMove(space); }, 364 nullptr 365 ); 359 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 360 auto& clientSpaces = clientData.clientSubspaces(); 361 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties.get()) 362 return clientSpace; 363 364 auto& heapData = clientData.heapData(); 365 Locker locker { heapData.lock() }; 366 367 auto& spaces = heapData.subspaces(); 368 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); 369 if (!space) { 370 Heap& heap = vm.heap; 371 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties> || !JSTestNamedSetterWithLegacyUnforgeableProperties::needsDestruction); 372 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties>) 373 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyUnforgeableProperties); 374 else 375 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyUnforgeableProperties); 376 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties = std::unique_ptr<IsoSubspace>(space); 377 IGNORE_WARNINGS_BEGIN("unreachable-code") 378 IGNORE_WARNINGS_BEGIN("tautological-compare") 379 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeableProperties::visitOutputConstraints; 380 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 381 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 382 heapData.outputConstraintSpaces().append(space); 383 IGNORE_WARNINGS_END 384 IGNORE_WARNINGS_END 385 } 386 387 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties = makeUnique<JSC::GCClient::IsoSubspace>(*space); 388 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); 366 389 } 367 390 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAbstractOperations.h" … … 334 334 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 335 335 { 336 return subspaceForImpl<JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns, UseCustomHeapCellType::No>(vm, 337 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); }, 338 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = WTFMove(space); }, 339 [] (auto& spaces) { return spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); }, 340 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = WTFMove(space); }, 341 nullptr 342 ); 336 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 337 auto& clientSpaces = clientData.clientSubspaces(); 338 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get()) 339 return clientSpace; 340 341 auto& heapData = clientData.heapData(); 342 Locker locker { heapData.lock() }; 343 344 auto& spaces = heapData.subspaces(); 345 IsoSubspace* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); 346 if (!space) { 347 Heap& heap = vm.heap; 348 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::needsDestruction); 349 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns>) 350 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 351 else 352 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 353 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 354 IGNORE_WARNINGS_BEGIN("unreachable-code") 355 IGNORE_WARNINGS_BEGIN("tautological-compare") 356 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::visitOutputConstraints; 357 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 358 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 359 heapData.outputConstraintSpaces().append(space); 360 IGNORE_WARNINGS_END 361 IGNORE_WARNINGS_END 362 } 363 364 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 365 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); 343 366 } 344 367 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceObject.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 276 276 JSC::GCClient::IsoSubspace* JSTestNamespaceObject::subspaceForImpl(JSC::VM& vm) 277 277 { 278 return subspaceForImpl<JSTestNamespaceObject, UseCustomHeapCellType::No>(vm, 279 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNamespaceObject.get(); }, 280 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNamespaceObject = WTFMove(space); }, 281 [] (auto& spaces) { return spaces.m_subspaceForTestNamespaceObject.get(); }, 282 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNamespaceObject = WTFMove(space); }, 283 nullptr 284 ); 285 } 286 287 288 } 278 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 279 auto& clientSpaces = clientData.clientSubspaces(); 280 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamespaceObject.get()) 281 return clientSpace; 282 283 auto& heapData = clientData.heapData(); 284 Locker locker { heapData.lock() }; 285 286 auto& spaces = heapData.subspaces(); 287 IsoSubspace* space = spaces.m_subspaceForTestNamespaceObject.get(); 288 if (!space) { 289 Heap& heap = vm.heap; 290 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject> || !JSTestNamespaceObject::needsDestruction); 291 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject>) 292 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamespaceObject); 293 else 294 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamespaceObject); 295 spaces.m_subspaceForTestNamespaceObject = std::unique_ptr<IsoSubspace>(space); 296 IGNORE_WARNINGS_BEGIN("unreachable-code") 297 IGNORE_WARNINGS_BEGIN("tautological-compare") 298 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamespaceObject::visitOutputConstraints; 299 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 300 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 301 heapData.outputConstraintSpaces().append(space); 302 IGNORE_WARNINGS_END 303 IGNORE_WARNINGS_END 304 } 305 306 clientSpaces.m_clientSubspaceForTestNamespaceObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 307 return clientSpaces.m_clientSubspaceForTestNamespaceObject.get(); 308 } 309 310 311 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMPromiseProxy.h" 26 #include "ExtendedDOMClientIsoSubspaces.h"27 #include "ExtendedDOMIsoSubspaces.h"28 28 #include "IDLTypes.h" 29 29 #include "JSDOMAttribute.h" … … 403 403 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 404 404 return nullptr; 405 return subspaceForImpl<TestNodeIterator, UseCustomHeapCellType::No>(vm, 406 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNodeIterator.get(); }, 407 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNodeIterator = WTFMove(space); }, 408 [] (auto& spaces) { return spaces.m_subspaceForTestNodeIterator.get(); }, 409 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNodeIterator = WTFMove(space); } 410 ); 405 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 406 auto& clientSpaces = clientData.clientSubspaces(); 407 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNodeIterator.get()) 408 return clientSpace; 409 410 auto& heapData = clientData.heapData(); 411 Locker locker { heapData.lock() }; 412 413 auto& spaces = heapData.subspaces(); 414 IsoSubspace* space = spaces.m_subspaceForTestNodeIterator.get(); 415 if (!space) { 416 Heap& heap = vm.heap; 417 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator> || !TestNodeIterator::needsDestruction); 418 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator>) 419 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestNodeIterator); 420 else 421 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestNodeIterator); 422 spaces.m_subspaceForTestNodeIterator = std::unique_ptr<IsoSubspace>(space); 423 IGNORE_WARNINGS_BEGIN("unreachable-code") 424 IGNORE_WARNINGS_BEGIN("tautological-compare") 425 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestNodeIterator::visitOutputConstraints; 426 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 427 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 428 heapData.outputConstraintSpaces().append(space); 429 IGNORE_WARNINGS_END 430 IGNORE_WARNINGS_END 431 } 432 433 clientSpaces.m_clientSubspaceForTestNodeIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 434 return clientSpaces.m_clientSubspaceForTestNodeIterator.get(); 411 435 } 412 436 … … 482 506 JSC::GCClient::IsoSubspace* JSTestNode::subspaceForImpl(JSC::VM& vm) 483 507 { 484 return subspaceForImpl<JSTestNode, UseCustomHeapCellType::No>(vm, 485 [] (auto& spaces) { return spaces.m_clientSubspaceForTestNode.get(); }, 486 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestNode = WTFMove(space); }, 487 [] (auto& spaces) { return spaces.m_subspaceForTestNode.get(); }, 488 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestNode = WTFMove(space); }, 489 nullptr 490 ); 508 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 509 auto& clientSpaces = clientData.clientSubspaces(); 510 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNode.get()) 511 return clientSpace; 512 513 auto& heapData = clientData.heapData(); 514 Locker locker { heapData.lock() }; 515 516 auto& spaces = heapData.subspaces(); 517 IsoSubspace* space = spaces.m_subspaceForTestNode.get(); 518 if (!space) { 519 Heap& heap = vm.heap; 520 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode> || !JSTestNode::needsDestruction); 521 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode>) 522 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNode); 523 else 524 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNode); 525 spaces.m_subspaceForTestNode = std::unique_ptr<IsoSubspace>(space); 526 IGNORE_WARNINGS_BEGIN("unreachable-code") 527 IGNORE_WARNINGS_BEGIN("tautological-compare") 528 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNode::visitOutputConstraints; 529 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 530 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 531 heapData.outputConstraintSpaces().append(space); 532 IGNORE_WARNINGS_END 533 IGNORE_WARNINGS_END 534 } 535 536 clientSpaces.m_clientSubspaceForTestNode = makeUnique<JSC::GCClient::IsoSubspace>(*space); 537 return clientSpaces.m_clientSubspaceForTestNode.get(); 491 538 } 492 539 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMPromiseProxy.h" 26 28 #include "DOMWindow.h" … … 29 31 #include "ElementInlines.h" 30 32 #include "EventNames.h" 31 #include "ExtendedDOMClientIsoSubspaces.h"32 #include "ExtendedDOMIsoSubspaces.h"33 33 #include "HTMLNames.h" 34 34 #include "IDLTypes.h" … … 9063 9063 JSC::GCClient::IsoSubspace* JSTestObj::subspaceForImpl(JSC::VM& vm) 9064 9064 { 9065 return subspaceForImpl<JSTestObj, UseCustomHeapCellType::No>(vm, 9066 [] (auto& spaces) { return spaces.m_clientSubspaceForTestObj.get(); }, 9067 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestObj = WTFMove(space); }, 9068 [] (auto& spaces) { return spaces.m_subspaceForTestObj.get(); }, 9069 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestObj = WTFMove(space); }, 9070 nullptr 9071 ); 9065 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 9066 auto& clientSpaces = clientData.clientSubspaces(); 9067 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestObj.get()) 9068 return clientSpace; 9069 9070 auto& heapData = clientData.heapData(); 9071 Locker locker { heapData.lock() }; 9072 9073 auto& spaces = heapData.subspaces(); 9074 IsoSubspace* space = spaces.m_subspaceForTestObj.get(); 9075 if (!space) { 9076 Heap& heap = vm.heap; 9077 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj> || !JSTestObj::needsDestruction); 9078 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj>) 9079 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestObj); 9080 else 9081 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestObj); 9082 spaces.m_subspaceForTestObj = std::unique_ptr<IsoSubspace>(space); 9083 IGNORE_WARNINGS_BEGIN("unreachable-code") 9084 IGNORE_WARNINGS_BEGIN("tautological-compare") 9085 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestObj::visitOutputConstraints; 9086 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 9087 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 9088 heapData.outputConstraintSpaces().append(space); 9089 IGNORE_WARNINGS_END 9090 IGNORE_WARNINGS_END 9091 } 9092 9093 clientSpaces.m_clientSubspaceForTestObj = makeUnique<JSC::GCClient::IsoSubspace>(*space); 9094 return clientSpaces.m_clientSubspaceForTestObj.get(); 9072 9095 } 9073 9096 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp
r290188 r290193 26 26 27 27 #include "ActiveDOMObject.h" 28 #include " ExtendedDOMClientIsoSubspaces.h"29 #include " ExtendedDOMIsoSubspaces.h"28 #include "DOMClientIsoSubspaces.h" 29 #include "DOMIsoSubspaces.h" 30 30 #include "JSDOMBinding.h" 31 31 #include "JSDOMConstructorNotConstructable.h" … … 230 230 JSC::GCClient::IsoSubspace* JSTestOperationConditional::subspaceForImpl(JSC::VM& vm) 231 231 { 232 return subspaceForImpl<JSTestOperationConditional, UseCustomHeapCellType::No>(vm, 233 [] (auto& spaces) { return spaces.m_clientSubspaceForTestOperationConditional.get(); }, 234 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestOperationConditional = WTFMove(space); }, 235 [] (auto& spaces) { return spaces.m_subspaceForTestOperationConditional.get(); }, 236 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestOperationConditional = WTFMove(space); }, 237 nullptr 238 ); 232 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 233 auto& clientSpaces = clientData.clientSubspaces(); 234 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOperationConditional.get()) 235 return clientSpace; 236 237 auto& heapData = clientData.heapData(); 238 Locker locker { heapData.lock() }; 239 240 auto& spaces = heapData.subspaces(); 241 IsoSubspace* space = spaces.m_subspaceForTestOperationConditional.get(); 242 if (!space) { 243 Heap& heap = vm.heap; 244 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional> || !JSTestOperationConditional::needsDestruction); 245 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional>) 246 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOperationConditional); 247 else 248 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOperationConditional); 249 spaces.m_subspaceForTestOperationConditional = std::unique_ptr<IsoSubspace>(space); 250 IGNORE_WARNINGS_BEGIN("unreachable-code") 251 IGNORE_WARNINGS_BEGIN("tautological-compare") 252 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOperationConditional::visitOutputConstraints; 253 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 254 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 255 heapData.outputConstraintSpaces().append(space); 256 IGNORE_WARNINGS_END 257 IGNORE_WARNINGS_END 258 } 259 260 clientSpaces.m_clientSubspaceForTestOperationConditional = makeUnique<JSC::GCClient::IsoSubspace>(*space); 261 return clientSpaces.m_clientSubspaceForTestOperationConditional.get(); 239 262 } 240 263 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSBlob.h" 28 28 #include "JSDOMBinding.h" … … 301 301 JSC::GCClient::IsoSubspace* JSTestOverloadedConstructors::subspaceForImpl(JSC::VM& vm) 302 302 { 303 return subspaceForImpl<JSTestOverloadedConstructors, UseCustomHeapCellType::No>(vm, 304 [] (auto& spaces) { return spaces.m_clientSubspaceForTestOverloadedConstructors.get(); }, 305 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestOverloadedConstructors = WTFMove(space); }, 306 [] (auto& spaces) { return spaces.m_subspaceForTestOverloadedConstructors.get(); }, 307 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestOverloadedConstructors = WTFMove(space); }, 308 nullptr 309 ); 303 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 304 auto& clientSpaces = clientData.clientSubspaces(); 305 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOverloadedConstructors.get()) 306 return clientSpace; 307 308 auto& heapData = clientData.heapData(); 309 Locker locker { heapData.lock() }; 310 311 auto& spaces = heapData.subspaces(); 312 IsoSubspace* space = spaces.m_subspaceForTestOverloadedConstructors.get(); 313 if (!space) { 314 Heap& heap = vm.heap; 315 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors> || !JSTestOverloadedConstructors::needsDestruction); 316 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors>) 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOverloadedConstructors); 318 else 319 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOverloadedConstructors); 320 spaces.m_subspaceForTestOverloadedConstructors = std::unique_ptr<IsoSubspace>(space); 321 IGNORE_WARNINGS_BEGIN("unreachable-code") 322 IGNORE_WARNINGS_BEGIN("tautological-compare") 323 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructors::visitOutputConstraints; 324 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 325 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 326 heapData.outputConstraintSpaces().append(space); 327 IGNORE_WARNINGS_END 328 IGNORE_WARNINGS_END 329 } 330 331 clientSpaces.m_clientSubspaceForTestOverloadedConstructors = makeUnique<JSC::GCClient::IsoSubspace>(*space); 332 return clientSpaces.m_clientSubspaceForTestOverloadedConstructors.get(); 310 333 } 311 334 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructor.h" … … 238 238 JSC::GCClient::IsoSubspace* JSTestOverloadedConstructorsWithSequence::subspaceForImpl(JSC::VM& vm) 239 239 { 240 return subspaceForImpl<JSTestOverloadedConstructorsWithSequence, UseCustomHeapCellType::No>(vm, 241 [] (auto& spaces) { return spaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence.get(); }, 242 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence = WTFMove(space); }, 243 [] (auto& spaces) { return spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get(); }, 244 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestOverloadedConstructorsWithSequence = WTFMove(space); }, 245 nullptr 246 ); 240 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 241 auto& clientSpaces = clientData.clientSubspaces(); 242 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence.get()) 243 return clientSpace; 244 245 auto& heapData = clientData.heapData(); 246 Locker locker { heapData.lock() }; 247 248 auto& spaces = heapData.subspaces(); 249 IsoSubspace* space = spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get(); 250 if (!space) { 251 Heap& heap = vm.heap; 252 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence> || !JSTestOverloadedConstructorsWithSequence::needsDestruction); 253 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence>) 254 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOverloadedConstructorsWithSequence); 255 else 256 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOverloadedConstructorsWithSequence); 257 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = std::unique_ptr<IsoSubspace>(space); 258 IGNORE_WARNINGS_BEGIN("unreachable-code") 259 IGNORE_WARNINGS_BEGIN("tautological-compare") 260 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructorsWithSequence::visitOutputConstraints; 261 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 262 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 263 heapData.outputConstraintSpaces().append(space); 264 IGNORE_WARNINGS_END 265 IGNORE_WARNINGS_END 266 } 267 268 clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence = makeUnique<JSC::GCClient::IsoSubspace>(*space); 269 return clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence.get(); 247 270 } 248 271 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 240 240 JSC::GCClient::IsoSubspace* JSTestPluginInterface::subspaceForImpl(JSC::VM& vm) 241 241 { 242 return subspaceForImpl<JSTestPluginInterface, UseCustomHeapCellType::No>(vm, 243 [] (auto& spaces) { return spaces.m_clientSubspaceForTestPluginInterface.get(); }, 244 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestPluginInterface = WTFMove(space); }, 245 [] (auto& spaces) { return spaces.m_subspaceForTestPluginInterface.get(); }, 246 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestPluginInterface = WTFMove(space); }, 247 nullptr 248 ); 242 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 243 auto& clientSpaces = clientData.clientSubspaces(); 244 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestPluginInterface.get()) 245 return clientSpace; 246 247 auto& heapData = clientData.heapData(); 248 Locker locker { heapData.lock() }; 249 250 auto& spaces = heapData.subspaces(); 251 IsoSubspace* space = spaces.m_subspaceForTestPluginInterface.get(); 252 if (!space) { 253 Heap& heap = vm.heap; 254 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface> || !JSTestPluginInterface::needsDestruction); 255 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface>) 256 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestPluginInterface); 257 else 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestPluginInterface); 259 spaces.m_subspaceForTestPluginInterface = std::unique_ptr<IsoSubspace>(space); 260 IGNORE_WARNINGS_BEGIN("unreachable-code") 261 IGNORE_WARNINGS_BEGIN("tautological-compare") 262 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPluginInterface::visitOutputConstraints; 263 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 264 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 265 heapData.outputConstraintSpaces().append(space); 266 IGNORE_WARNINGS_END 267 IGNORE_WARNINGS_END 268 } 269 270 clientSpaces.m_clientSubspaceForTestPluginInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 271 return clientSpaces.m_clientSubspaceForTestPluginInterface.get(); 249 272 } 250 273 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 25 27 #include "DOMPromiseProxy.h" 26 #include "ExtendedDOMClientIsoSubspaces.h"27 #include "ExtendedDOMIsoSubspaces.h"28 28 #include "JSDOMAttribute.h" 29 29 #include "JSDOMBinding.h" … … 299 299 JSC::GCClient::IsoSubspace* JSTestPromiseRejectionEvent::subspaceForImpl(JSC::VM& vm) 300 300 { 301 return subspaceForImpl<JSTestPromiseRejectionEvent, UseCustomHeapCellType::No>(vm, 302 [] (auto& spaces) { return spaces.m_clientSubspaceForTestPromiseRejectionEvent.get(); }, 303 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestPromiseRejectionEvent = WTFMove(space); }, 304 [] (auto& spaces) { return spaces.m_subspaceForTestPromiseRejectionEvent.get(); }, 305 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestPromiseRejectionEvent = WTFMove(space); }, 306 nullptr 307 ); 301 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 302 auto& clientSpaces = clientData.clientSubspaces(); 303 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent.get()) 304 return clientSpace; 305 306 auto& heapData = clientData.heapData(); 307 Locker locker { heapData.lock() }; 308 309 auto& spaces = heapData.subspaces(); 310 IsoSubspace* space = spaces.m_subspaceForTestPromiseRejectionEvent.get(); 311 if (!space) { 312 Heap& heap = vm.heap; 313 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent> || !JSTestPromiseRejectionEvent::needsDestruction); 314 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent>) 315 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestPromiseRejectionEvent); 316 else 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestPromiseRejectionEvent); 318 spaces.m_subspaceForTestPromiseRejectionEvent = std::unique_ptr<IsoSubspace>(space); 319 IGNORE_WARNINGS_BEGIN("unreachable-code") 320 IGNORE_WARNINGS_BEGIN("tautological-compare") 321 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPromiseRejectionEvent::visitOutputConstraints; 322 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 323 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 324 heapData.outputConstraintSpaces().append(space); 325 IGNORE_WARNINGS_END 326 IGNORE_WARNINGS_END 327 } 328 329 clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent = makeUnique<JSC::GCClient::IsoSubspace>(*space); 330 return clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent.get(); 308 331 } 309 332 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 301 301 JSC::GCClient::IsoSubspace* JSTestReadOnlyMapLike::subspaceForImpl(JSC::VM& vm) 302 302 { 303 return subspaceForImpl<JSTestReadOnlyMapLike, UseCustomHeapCellType::No>(vm, 304 [] (auto& spaces) { return spaces.m_clientSubspaceForTestReadOnlyMapLike.get(); }, 305 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestReadOnlyMapLike = WTFMove(space); }, 306 [] (auto& spaces) { return spaces.m_subspaceForTestReadOnlyMapLike.get(); }, 307 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestReadOnlyMapLike = WTFMove(space); }, 308 nullptr 309 ); 303 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 304 auto& clientSpaces = clientData.clientSubspaces(); 305 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReadOnlyMapLike.get()) 306 return clientSpace; 307 308 auto& heapData = clientData.heapData(); 309 Locker locker { heapData.lock() }; 310 311 auto& spaces = heapData.subspaces(); 312 IsoSubspace* space = spaces.m_subspaceForTestReadOnlyMapLike.get(); 313 if (!space) { 314 Heap& heap = vm.heap; 315 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike> || !JSTestReadOnlyMapLike::needsDestruction); 316 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike>) 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReadOnlyMapLike); 318 else 319 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReadOnlyMapLike); 320 spaces.m_subspaceForTestReadOnlyMapLike = std::unique_ptr<IsoSubspace>(space); 321 IGNORE_WARNINGS_BEGIN("unreachable-code") 322 IGNORE_WARNINGS_BEGIN("tautological-compare") 323 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlyMapLike::visitOutputConstraints; 324 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 325 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 326 heapData.outputConstraintSpaces().append(space); 327 IGNORE_WARNINGS_END 328 IGNORE_WARNINGS_END 329 } 330 331 clientSpaces.m_clientSubspaceForTestReadOnlyMapLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 332 return clientSpaces.m_clientSubspaceForTestReadOnlyMapLike.get(); 310 333 } 311 334 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 280 280 JSC::GCClient::IsoSubspace* JSTestReadOnlySetLike::subspaceForImpl(JSC::VM& vm) 281 281 { 282 return subspaceForImpl<JSTestReadOnlySetLike, UseCustomHeapCellType::No>(vm, 283 [] (auto& spaces) { return spaces.m_clientSubspaceForTestReadOnlySetLike.get(); }, 284 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestReadOnlySetLike = WTFMove(space); }, 285 [] (auto& spaces) { return spaces.m_subspaceForTestReadOnlySetLike.get(); }, 286 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestReadOnlySetLike = WTFMove(space); }, 287 nullptr 288 ); 282 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 283 auto& clientSpaces = clientData.clientSubspaces(); 284 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReadOnlySetLike.get()) 285 return clientSpace; 286 287 auto& heapData = clientData.heapData(); 288 Locker locker { heapData.lock() }; 289 290 auto& spaces = heapData.subspaces(); 291 IsoSubspace* space = spaces.m_subspaceForTestReadOnlySetLike.get(); 292 if (!space) { 293 Heap& heap = vm.heap; 294 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike> || !JSTestReadOnlySetLike::needsDestruction); 295 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike>) 296 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReadOnlySetLike); 297 else 298 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReadOnlySetLike); 299 spaces.m_subspaceForTestReadOnlySetLike = std::unique_ptr<IsoSubspace>(space); 300 IGNORE_WARNINGS_BEGIN("unreachable-code") 301 IGNORE_WARNINGS_BEGIN("tautological-compare") 302 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlySetLike::visitOutputConstraints; 303 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 304 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 305 heapData.outputConstraintSpaces().append(space); 306 IGNORE_WARNINGS_END 307 IGNORE_WARNINGS_END 308 } 309 310 clientSpaces.m_clientSubspaceForTestReadOnlySetLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 311 return clientSpaces.m_clientSubspaceForTestReadOnlySetLike.get(); 289 312 } 290 313 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 167 167 JSC::GCClient::IsoSubspace* JSTestReportExtraMemoryCost::subspaceForImpl(JSC::VM& vm) 168 168 { 169 return subspaceForImpl<JSTestReportExtraMemoryCost, UseCustomHeapCellType::No>(vm, 170 [] (auto& spaces) { return spaces.m_clientSubspaceForTestReportExtraMemoryCost.get(); }, 171 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestReportExtraMemoryCost = WTFMove(space); }, 172 [] (auto& spaces) { return spaces.m_subspaceForTestReportExtraMemoryCost.get(); }, 173 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestReportExtraMemoryCost = WTFMove(space); }, 174 nullptr 175 ); 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForTestReportExtraMemoryCost.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost> || !JSTestReportExtraMemoryCost::needsDestruction); 182 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost>) 183 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReportExtraMemoryCost); 184 else 185 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReportExtraMemoryCost); 186 spaces.m_subspaceForTestReportExtraMemoryCost = std::unique_ptr<IsoSubspace>(space); 187 IGNORE_WARNINGS_BEGIN("unreachable-code") 188 IGNORE_WARNINGS_BEGIN("tautological-compare") 189 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReportExtraMemoryCost::visitOutputConstraints; 190 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 191 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 192 heapData.outputConstraintSpaces().append(space); 193 IGNORE_WARNINGS_END 194 IGNORE_WARNINGS_END 195 } 196 197 clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost = makeUnique<JSC::GCClient::IsoSubspace>(*space); 198 return clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost.get(); 176 199 } 177 200 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
r290188 r290193 26 26 27 27 #include "ActiveDOMObject.h" 28 #include " ExtendedDOMClientIsoSubspaces.h"29 #include " ExtendedDOMIsoSubspaces.h"28 #include "DOMClientIsoSubspaces.h" 29 #include "DOMIsoSubspaces.h" 30 30 #include "IDLTypes.h" 31 31 #include "JSDOMAttribute.h" … … 345 345 JSC::GCClient::IsoSubspace* JSTestSerializedScriptValueInterface::subspaceForImpl(JSC::VM& vm) 346 346 { 347 return subspaceForImpl<JSTestSerializedScriptValueInterface, UseCustomHeapCellType::No>(vm, 348 [] (auto& spaces) { return spaces.m_clientSubspaceForTestSerializedScriptValueInterface.get(); }, 349 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestSerializedScriptValueInterface = WTFMove(space); }, 350 [] (auto& spaces) { return spaces.m_subspaceForTestSerializedScriptValueInterface.get(); }, 351 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestSerializedScriptValueInterface = WTFMove(space); }, 352 nullptr 353 ); 347 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 348 auto& clientSpaces = clientData.clientSubspaces(); 349 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface.get()) 350 return clientSpace; 351 352 auto& heapData = clientData.heapData(); 353 Locker locker { heapData.lock() }; 354 355 auto& spaces = heapData.subspaces(); 356 IsoSubspace* space = spaces.m_subspaceForTestSerializedScriptValueInterface.get(); 357 if (!space) { 358 Heap& heap = vm.heap; 359 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface> || !JSTestSerializedScriptValueInterface::needsDestruction); 360 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface>) 361 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSerializedScriptValueInterface); 362 else 363 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSerializedScriptValueInterface); 364 spaces.m_subspaceForTestSerializedScriptValueInterface = std::unique_ptr<IsoSubspace>(space); 365 IGNORE_WARNINGS_BEGIN("unreachable-code") 366 IGNORE_WARNINGS_BEGIN("tautological-compare") 367 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSerializedScriptValueInterface::visitOutputConstraints; 368 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 369 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 370 heapData.outputConstraintSpaces().append(space); 371 IGNORE_WARNINGS_END 372 IGNORE_WARNINGS_END 373 } 374 375 clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 376 return clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface.get(); 354 377 } 355 378 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLike.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 338 338 JSC::GCClient::IsoSubspace* JSTestSetLike::subspaceForImpl(JSC::VM& vm) 339 339 { 340 return subspaceForImpl<JSTestSetLike, UseCustomHeapCellType::No>(vm, 341 [] (auto& spaces) { return spaces.m_clientSubspaceForTestSetLike.get(); }, 342 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestSetLike = WTFMove(space); }, 343 [] (auto& spaces) { return spaces.m_subspaceForTestSetLike.get(); }, 344 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestSetLike = WTFMove(space); }, 345 nullptr 346 ); 340 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 341 auto& clientSpaces = clientData.clientSubspaces(); 342 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSetLike.get()) 343 return clientSpace; 344 345 auto& heapData = clientData.heapData(); 346 Locker locker { heapData.lock() }; 347 348 auto& spaces = heapData.subspaces(); 349 IsoSubspace* space = spaces.m_subspaceForTestSetLike.get(); 350 if (!space) { 351 Heap& heap = vm.heap; 352 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike> || !JSTestSetLike::needsDestruction); 353 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike>) 354 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSetLike); 355 else 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSetLike); 357 spaces.m_subspaceForTestSetLike = std::unique_ptr<IsoSubspace>(space); 358 IGNORE_WARNINGS_BEGIN("unreachable-code") 359 IGNORE_WARNINGS_BEGIN("tautological-compare") 360 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLike::visitOutputConstraints; 361 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 362 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 363 heapData.outputConstraintSpaces().append(space); 364 IGNORE_WARNINGS_END 365 IGNORE_WARNINGS_END 366 } 367 368 clientSpaces.m_clientSubspaceForTestSetLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 369 return clientSpaces.m_clientSubspaceForTestSetLike.get(); 347 370 } 348 371 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAttribute.h" … … 350 350 JSC::GCClient::IsoSubspace* JSTestSetLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm) 351 351 { 352 return subspaceForImpl<JSTestSetLikeWithOverriddenOperations, UseCustomHeapCellType::No>(vm, 353 [] (auto& spaces) { return spaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations.get(); }, 354 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations = WTFMove(space); }, 355 [] (auto& spaces) { return spaces.m_subspaceForTestSetLikeWithOverriddenOperations.get(); }, 356 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestSetLikeWithOverriddenOperations = WTFMove(space); }, 357 nullptr 358 ); 352 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 353 auto& clientSpaces = clientData.clientSubspaces(); 354 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations.get()) 355 return clientSpace; 356 357 auto& heapData = clientData.heapData(); 358 Locker locker { heapData.lock() }; 359 360 auto& spaces = heapData.subspaces(); 361 IsoSubspace* space = spaces.m_subspaceForTestSetLikeWithOverriddenOperations.get(); 362 if (!space) { 363 Heap& heap = vm.heap; 364 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations> || !JSTestSetLikeWithOverriddenOperations::needsDestruction); 365 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations>) 366 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSetLikeWithOverriddenOperations); 367 else 368 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSetLikeWithOverriddenOperations); 369 spaces.m_subspaceForTestSetLikeWithOverriddenOperations = std::unique_ptr<IsoSubspace>(space); 370 IGNORE_WARNINGS_BEGIN("unreachable-code") 371 IGNORE_WARNINGS_BEGIN("tautological-compare") 372 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLikeWithOverriddenOperations::visitOutputConstraints; 373 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 374 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 375 heapData.outputConstraintSpaces().append(space); 376 IGNORE_WARNINGS_END 377 IGNORE_WARNINGS_END 378 } 379 380 clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations = makeUnique<JSC::GCClient::IsoSubspace>(*space); 381 return clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations.get(); 359 382 } 360 383 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 188 188 JSC::GCClient::IsoSubspace* JSTestStringifier::subspaceForImpl(JSC::VM& vm) 189 189 { 190 return subspaceForImpl<JSTestStringifier, UseCustomHeapCellType::No>(vm, 191 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifier.get(); }, 192 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifier = WTFMove(space); }, 193 [] (auto& spaces) { return spaces.m_subspaceForTestStringifier.get(); }, 194 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifier = WTFMove(space); }, 195 nullptr 196 ); 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifier.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForTestStringifier.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier> || !JSTestStringifier::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifier); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifier); 207 spaces.m_subspaceForTestStringifier = std::unique_ptr<IsoSubspace>(space); 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifier::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 214 IGNORE_WARNINGS_END 215 IGNORE_WARNINGS_END 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifier.get(); 197 220 } 198 221 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 188 188 JSC::GCClient::IsoSubspace* JSTestStringifierAnonymousOperation::subspaceForImpl(JSC::VM& vm) 189 189 { 190 return subspaceForImpl<JSTestStringifierAnonymousOperation, UseCustomHeapCellType::No>(vm, 191 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierAnonymousOperation.get(); }, 192 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierAnonymousOperation = WTFMove(space); }, 193 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierAnonymousOperation.get(); }, 194 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierAnonymousOperation = WTFMove(space); }, 195 nullptr 196 ); 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForTestStringifierAnonymousOperation.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation> || !JSTestStringifierAnonymousOperation::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierAnonymousOperation); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierAnonymousOperation); 207 spaces.m_subspaceForTestStringifierAnonymousOperation = std::unique_ptr<IsoSubspace>(space); 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierAnonymousOperation::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 214 IGNORE_WARNINGS_END 215 IGNORE_WARNINGS_END 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation.get(); 197 220 } 198 221 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 205 205 JSC::GCClient::IsoSubspace* JSTestStringifierNamedOperation::subspaceForImpl(JSC::VM& vm) 206 206 { 207 return subspaceForImpl<JSTestStringifierNamedOperation, UseCustomHeapCellType::No>(vm, 208 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierNamedOperation.get(); }, 209 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierNamedOperation = WTFMove(space); }, 210 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierNamedOperation.get(); }, 211 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierNamedOperation = WTFMove(space); }, 212 nullptr 213 ); 207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 208 auto& clientSpaces = clientData.clientSubspaces(); 209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierNamedOperation.get()) 210 return clientSpace; 211 212 auto& heapData = clientData.heapData(); 213 Locker locker { heapData.lock() }; 214 215 auto& spaces = heapData.subspaces(); 216 IsoSubspace* space = spaces.m_subspaceForTestStringifierNamedOperation.get(); 217 if (!space) { 218 Heap& heap = vm.heap; 219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation> || !JSTestStringifierNamedOperation::needsDestruction); 220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation>) 221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierNamedOperation); 222 else 223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierNamedOperation); 224 spaces.m_subspaceForTestStringifierNamedOperation = std::unique_ptr<IsoSubspace>(space); 225 IGNORE_WARNINGS_BEGIN("unreachable-code") 226 IGNORE_WARNINGS_BEGIN("tautological-compare") 227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierNamedOperation::visitOutputConstraints; 228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 230 heapData.outputConstraintSpaces().append(space); 231 IGNORE_WARNINGS_END 232 IGNORE_WARNINGS_END 233 } 234 235 clientSpaces.m_clientSubspaceForTestStringifierNamedOperation = makeUnique<JSC::GCClient::IsoSubspace>(*space); 236 return clientSpaces.m_clientSubspaceForTestStringifierNamedOperation.get(); 214 237 } 215 238 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 205 205 JSC::GCClient::IsoSubspace* JSTestStringifierOperationImplementedAs::subspaceForImpl(JSC::VM& vm) 206 206 { 207 return subspaceForImpl<JSTestStringifierOperationImplementedAs, UseCustomHeapCellType::No>(vm, 208 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierOperationImplementedAs.get(); }, 209 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierOperationImplementedAs = WTFMove(space); }, 210 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierOperationImplementedAs.get(); }, 211 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierOperationImplementedAs = WTFMove(space); }, 212 nullptr 213 ); 207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 208 auto& clientSpaces = clientData.clientSubspaces(); 209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs.get()) 210 return clientSpace; 211 212 auto& heapData = clientData.heapData(); 213 Locker locker { heapData.lock() }; 214 215 auto& spaces = heapData.subspaces(); 216 IsoSubspace* space = spaces.m_subspaceForTestStringifierOperationImplementedAs.get(); 217 if (!space) { 218 Heap& heap = vm.heap; 219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs> || !JSTestStringifierOperationImplementedAs::needsDestruction); 220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs>) 221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierOperationImplementedAs); 222 else 223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierOperationImplementedAs); 224 spaces.m_subspaceForTestStringifierOperationImplementedAs = std::unique_ptr<IsoSubspace>(space); 225 IGNORE_WARNINGS_BEGIN("unreachable-code") 226 IGNORE_WARNINGS_BEGIN("tautological-compare") 227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationImplementedAs::visitOutputConstraints; 228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 230 heapData.outputConstraintSpaces().append(space); 231 IGNORE_WARNINGS_END 232 IGNORE_WARNINGS_END 233 } 234 235 clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs = makeUnique<JSC::GCClient::IsoSubspace>(*space); 236 return clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs.get(); 214 237 } 215 238 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 188 188 JSC::GCClient::IsoSubspace* JSTestStringifierOperationNamedToString::subspaceForImpl(JSC::VM& vm) 189 189 { 190 return subspaceForImpl<JSTestStringifierOperationNamedToString, UseCustomHeapCellType::No>(vm, 191 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierOperationNamedToString.get(); }, 192 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierOperationNamedToString = WTFMove(space); }, 193 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierOperationNamedToString.get(); }, 194 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierOperationNamedToString = WTFMove(space); }, 195 nullptr 196 ); 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForTestStringifierOperationNamedToString.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString> || !JSTestStringifierOperationNamedToString::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierOperationNamedToString); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierOperationNamedToString); 207 spaces.m_subspaceForTestStringifierOperationNamedToString = std::unique_ptr<IsoSubspace>(space); 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationNamedToString::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 214 IGNORE_WARNINGS_END 215 IGNORE_WARNINGS_END 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString.get(); 197 220 } 198 221 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 204 204 JSC::GCClient::IsoSubspace* JSTestStringifierReadOnlyAttribute::subspaceForImpl(JSC::VM& vm) 205 205 { 206 return subspaceForImpl<JSTestStringifierReadOnlyAttribute, UseCustomHeapCellType::No>(vm, 207 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierReadOnlyAttribute.get(); }, 208 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierReadOnlyAttribute = WTFMove(space); }, 209 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierReadOnlyAttribute.get(); }, 210 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierReadOnlyAttribute = WTFMove(space); }, 211 nullptr 212 ); 206 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 207 auto& clientSpaces = clientData.clientSubspaces(); 208 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute.get()) 209 return clientSpace; 210 211 auto& heapData = clientData.heapData(); 212 Locker locker { heapData.lock() }; 213 214 auto& spaces = heapData.subspaces(); 215 IsoSubspace* space = spaces.m_subspaceForTestStringifierReadOnlyAttribute.get(); 216 if (!space) { 217 Heap& heap = vm.heap; 218 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute> || !JSTestStringifierReadOnlyAttribute::needsDestruction); 219 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute>) 220 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierReadOnlyAttribute); 221 else 222 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierReadOnlyAttribute); 223 spaces.m_subspaceForTestStringifierReadOnlyAttribute = std::unique_ptr<IsoSubspace>(space); 224 IGNORE_WARNINGS_BEGIN("unreachable-code") 225 IGNORE_WARNINGS_BEGIN("tautological-compare") 226 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadOnlyAttribute::visitOutputConstraints; 227 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 228 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 229 heapData.outputConstraintSpaces().append(space); 230 IGNORE_WARNINGS_END 231 IGNORE_WARNINGS_END 232 } 233 234 clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 235 return clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute.get(); 213 236 } 214 237 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 223 223 JSC::GCClient::IsoSubspace* JSTestStringifierReadWriteAttribute::subspaceForImpl(JSC::VM& vm) 224 224 { 225 return subspaceForImpl<JSTestStringifierReadWriteAttribute, UseCustomHeapCellType::No>(vm, 226 [] (auto& spaces) { return spaces.m_clientSubspaceForTestStringifierReadWriteAttribute.get(); }, 227 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestStringifierReadWriteAttribute = WTFMove(space); }, 228 [] (auto& spaces) { return spaces.m_subspaceForTestStringifierReadWriteAttribute.get(); }, 229 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestStringifierReadWriteAttribute = WTFMove(space); }, 230 nullptr 231 ); 225 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 226 auto& clientSpaces = clientData.clientSubspaces(); 227 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute.get()) 228 return clientSpace; 229 230 auto& heapData = clientData.heapData(); 231 Locker locker { heapData.lock() }; 232 233 auto& spaces = heapData.subspaces(); 234 IsoSubspace* space = spaces.m_subspaceForTestStringifierReadWriteAttribute.get(); 235 if (!space) { 236 Heap& heap = vm.heap; 237 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute> || !JSTestStringifierReadWriteAttribute::needsDestruction); 238 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute>) 239 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierReadWriteAttribute); 240 else 241 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierReadWriteAttribute); 242 spaces.m_subspaceForTestStringifierReadWriteAttribute = std::unique_ptr<IsoSubspace>(space); 243 IGNORE_WARNINGS_BEGIN("unreachable-code") 244 IGNORE_WARNINGS_BEGIN("tautological-compare") 245 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadWriteAttribute::visitOutputConstraints; 246 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 247 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 248 heapData.outputConstraintSpaces().append(space); 249 IGNORE_WARNINGS_END 250 IGNORE_WARNINGS_END 251 } 252 253 clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 254 return clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute.get(); 232 255 } 233 256 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTaggedWrapper.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMBinding.h" 28 28 #include "JSDOMConstructorNotConstructable.h" … … 166 166 JSC::GCClient::IsoSubspace* JSTestTaggedWrapper::subspaceForImpl(JSC::VM& vm) 167 167 { 168 return subspaceForImpl<JSTestTaggedWrapper, UseCustomHeapCellType::No>(vm, 169 [] (auto& spaces) { return spaces.m_clientSubspaceForTestTaggedWrapper.get(); }, 170 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestTaggedWrapper = WTFMove(space); }, 171 [] (auto& spaces) { return spaces.m_subspaceForTestTaggedWrapper.get(); }, 172 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestTaggedWrapper = WTFMove(space); }, 173 nullptr 174 ); 168 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 169 auto& clientSpaces = clientData.clientSubspaces(); 170 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestTaggedWrapper.get()) 171 return clientSpace; 172 173 auto& heapData = clientData.heapData(); 174 Locker locker { heapData.lock() }; 175 176 auto& spaces = heapData.subspaces(); 177 IsoSubspace* space = spaces.m_subspaceForTestTaggedWrapper.get(); 178 if (!space) { 179 Heap& heap = vm.heap; 180 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper> || !JSTestTaggedWrapper::needsDestruction); 181 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper>) 182 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestTaggedWrapper); 183 else 184 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestTaggedWrapper); 185 spaces.m_subspaceForTestTaggedWrapper = std::unique_ptr<IsoSubspace>(space); 186 IGNORE_WARNINGS_BEGIN("unreachable-code") 187 IGNORE_WARNINGS_BEGIN("tautological-compare") 188 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTaggedWrapper::visitOutputConstraints; 189 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 190 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 191 heapData.outputConstraintSpaces().append(space); 192 IGNORE_WARNINGS_END 193 IGNORE_WARNINGS_END 194 } 195 196 clientSpaces.m_clientSubspaceForTestTaggedWrapper = makeUnique<JSC::GCClient::IsoSubspace>(*space); 197 return clientSpaces.m_clientSubspaceForTestTaggedWrapper.get(); 175 198 } 176 199 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "IDLTypes.h" 28 28 #include "JSDOMAttribute.h" … … 776 776 JSC::GCClient::IsoSubspace* JSTestTypedefs::subspaceForImpl(JSC::VM& vm) 777 777 { 778 return subspaceForImpl<JSTestTypedefs, UseCustomHeapCellType::No>(vm, 779 [] (auto& spaces) { return spaces.m_clientSubspaceForTestTypedefs.get(); }, 780 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForTestTypedefs = WTFMove(space); }, 781 [] (auto& spaces) { return spaces.m_subspaceForTestTypedefs.get(); }, 782 [] (auto& spaces, auto&& space) { spaces.m_subspaceForTestTypedefs = WTFMove(space); }, 783 nullptr 784 ); 778 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 779 auto& clientSpaces = clientData.clientSubspaces(); 780 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestTypedefs.get()) 781 return clientSpace; 782 783 auto& heapData = clientData.heapData(); 784 Locker locker { heapData.lock() }; 785 786 auto& spaces = heapData.subspaces(); 787 IsoSubspace* space = spaces.m_subspaceForTestTypedefs.get(); 788 if (!space) { 789 Heap& heap = vm.heap; 790 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs> || !JSTestTypedefs::needsDestruction); 791 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs>) 792 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestTypedefs); 793 else 794 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestTypedefs); 795 spaces.m_subspaceForTestTypedefs = std::unique_ptr<IsoSubspace>(space); 796 IGNORE_WARNINGS_BEGIN("unreachable-code") 797 IGNORE_WARNINGS_BEGIN("tautological-compare") 798 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTypedefs::visitOutputConstraints; 799 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 800 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 801 heapData.outputConstraintSpaces().append(space); 802 IGNORE_WARNINGS_END 803 IGNORE_WARNINGS_END 804 } 805 806 clientSpaces.m_clientSubspaceForTestTypedefs = makeUnique<JSC::GCClient::IsoSubspace>(*space); 807 return clientSpaces.m_clientSubspaceForTestTypedefs.get(); 785 808 } 786 809 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 247 247 JSC::GCClient::IsoSubspace* JSWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 248 248 { 249 return subspaceForImpl<JSWorkerGlobalScope, UseCustomHeapCellType::Yes>(vm, 250 [] (auto& spaces) { return spaces.m_clientSubspaceForWorkerGlobalScope.get(); }, 251 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForWorkerGlobalScope = WTFMove(space); }, 252 [] (auto& spaces) { return spaces.m_subspaceForWorkerGlobalScope.get(); }, 253 [] (auto& spaces, auto&& space) { spaces.m_subspaceForWorkerGlobalScope = WTFMove(space); }, 254 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSWorkerGlobalScope; } 255 ); 249 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 250 auto& clientSpaces = clientData.clientSubspaces(); 251 if (auto* clientSpace = clientSpaces.m_clientSubspaceForWorkerGlobalScope.get()) 252 return clientSpace; 253 254 auto& heapData = clientData.heapData(); 255 Locker locker { heapData.lock() }; 256 257 auto& spaces = heapData.subspaces(); 258 IsoSubspace* space = spaces.m_subspaceForWorkerGlobalScope.get(); 259 if (!space) { 260 Heap& heap = vm.heap; 261 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSWorkerGlobalScope, JSWorkerGlobalScope); 262 spaces.m_subspaceForWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 263 IGNORE_WARNINGS_BEGIN("unreachable-code") 264 IGNORE_WARNINGS_BEGIN("tautological-compare") 265 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkerGlobalScope::visitOutputConstraints; 266 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 267 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 268 heapData.outputConstraintSpaces().append(space); 269 IGNORE_WARNINGS_END 270 IGNORE_WARNINGS_END 271 } 272 273 clientSpaces.m_clientSubspaceForWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 274 return clientSpaces.m_clientSubspaceForWorkerGlobalScope.get(); 256 275 } 257 276 -
trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.cpp
r290188 r290193 23 23 24 24 #include "ActiveDOMObject.h" 25 #include " ExtendedDOMClientIsoSubspaces.h"26 #include " ExtendedDOMIsoSubspaces.h"25 #include "DOMClientIsoSubspaces.h" 26 #include "DOMIsoSubspaces.h" 27 27 #include "JSDOMAttribute.h" 28 28 #include "JSDOMBinding.h" … … 161 161 JSC::GCClient::IsoSubspace* JSWorkletGlobalScope::subspaceForImpl(JSC::VM& vm) 162 162 { 163 return subspaceForImpl<JSWorkletGlobalScope, UseCustomHeapCellType::Yes>(vm, 164 [] (auto& spaces) { return spaces.m_clientSubspaceForWorkletGlobalScope.get(); }, 165 [] (auto& spaces, auto&& space) { spaces.m_clientSubspaceForWorkletGlobalScope = WTFMove(space); }, 166 [] (auto& spaces) { return spaces.m_subspaceForWorkletGlobalScope.get(); }, 167 [] (auto& spaces, auto&& space) { spaces.m_subspaceForWorkletGlobalScope = WTFMove(space); }, 168 [] (auto& server) -> JSC::HeapCellType& { return server.m_heapCellTypeForJSWorkletGlobalScope; } 169 ); 163 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 164 auto& clientSpaces = clientData.clientSubspaces(); 165 if (auto* clientSpace = clientSpaces.m_clientSubspaceForWorkletGlobalScope.get()) 166 return clientSpace; 167 168 auto& heapData = clientData.heapData(); 169 Locker locker { heapData.lock() }; 170 171 auto& spaces = heapData.subspaces(); 172 IsoSubspace* space = spaces.m_subspaceForWorkletGlobalScope.get(); 173 if (!space) { 174 Heap& heap = vm.heap; 175 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSWorkletGlobalScope, JSWorkletGlobalScope); 176 spaces.m_subspaceForWorkletGlobalScope = std::unique_ptr<IsoSubspace>(space); 177 IGNORE_WARNINGS_BEGIN("unreachable-code") 178 IGNORE_WARNINGS_BEGIN("tautological-compare") 179 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkletGlobalScope::visitOutputConstraints; 180 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 181 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 182 heapData.outputConstraintSpaces().append(space); 183 IGNORE_WARNINGS_END 184 IGNORE_WARNINGS_END 185 } 186 187 clientSpaces.m_clientSubspaceForWorkletGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 188 return clientSpaces.m_clientSubspaceForWorkletGlobalScope.get(); 170 189 } 171 190
Note:
See TracChangeset
for help on using the changeset viewer.