Source/WebCore/ChangeLog

 12020-03-04 Yusuke Suzuki <ysuzuki@apple.com>
 2
 3 Put all generated JSCells in WebCore into IsoSubspace
 4 https://bugs.webkit.org/show_bug.cgi?id=205107
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 This patch automatically generates IsoSubspace per WebCore DOM object type.
 9 In preprocess-idls.pl, we collect all the DOM object types and generate DOMIsoSubspaces class,
 10 which contains all the necessary IsoSubspaces. And it is held by WebCoreJSClientData.
 11
 12 CodeGeneratorJS.pm starts putting `subspaceFor` and `subspaceForImpl` for each JS DOM wrapper classes.
 13 And we dynamically create IsoSubspace and set it to WebCoreJSClientData's DOMIsoSubspaces. At the same
 14 time, we register IsoSubspace to m_outputConstraintSpaces if the class has output constraits callback.
 15
 16 * CMakeLists.txt:
 17 * DerivedSources-output.xcfilelist:
 18 * DerivedSources.make:
 19 * WebCoreMacros.cmake:
 20 * bindings/js/JSDOMWrapper.cpp:
 21 (WebCore::outputConstraintSubspaceFor): Deleted.
 22 * bindings/js/JSDOMWrapper.h:
 23 * bindings/js/WebCoreJSClientData.cpp:
 24 (WebCore::JSVMClientData::JSVMClientData):
 25 * bindings/js/WebCoreJSClientData.h:
 26 (WebCore::JSVMClientData::forEachOutputConstraintSpace):
 27 (WebCore::JSVMClientData::subspaces):
 28 (WebCore::JSVMClientData::outputConstraintSpace): Deleted.
 29 (WebCore::JSVMClientData::subspaceForJSDOMWindow): Deleted.
 30 (WebCore::JSVMClientData::subspaceForJSDedicatedWorkerGlobalScope): Deleted.
 31 (WebCore::JSVMClientData::subspaceForJSRemoteDOMWindow): Deleted.
 32 (WebCore::JSVMClientData::subspaceForJSWorkerGlobalScope): Deleted.
 33 (WebCore::JSVMClientData::subspaceForJSServiceWorkerGlobalScope): Deleted.
 34 (WebCore::JSVMClientData::subspaceForJSPaintWorkletGlobalScope): Deleted.
 35 (WebCore::JSVMClientData::subspaceForJSWorkletGlobalScope): Deleted.
 36 * bindings/scripts/CodeGeneratorJS.pm:
 37 (GenerateHeader):
 38 (GenerateImplementation):
 39 * bindings/scripts/generate-bindings-all.pl:
 40 * bindings/scripts/preprocess-idls.pl:
 41 * bindings/scripts/test/JS/JSInterfaceName.cpp:
 42 (WebCore::JSInterfaceName::subspaceForImpl):
 43 * bindings/scripts/test/JS/JSInterfaceName.h:
 44 (WebCore::JSInterfaceName::subspaceFor):
 45 * bindings/scripts/test/JS/JSMapLike.cpp:
 46 (WebCore::JSMapLike::subspaceForImpl):
 47 * bindings/scripts/test/JS/JSMapLike.h:
 48 (WebCore::JSMapLike::subspaceFor):
 49 * bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:
 50 (WebCore::JSReadOnlyMapLike::subspaceForImpl):
 51 * bindings/scripts/test/JS/JSReadOnlyMapLike.h:
 52 (WebCore::JSReadOnlyMapLike::subspaceFor):
 53 * bindings/scripts/test/JS/JSReadOnlySetLike.cpp:
 54 (WebCore::JSReadOnlySetLike::subspaceForImpl):
 55 * bindings/scripts/test/JS/JSReadOnlySetLike.h:
 56 (WebCore::JSReadOnlySetLike::subspaceFor):
 57 * bindings/scripts/test/JS/JSSetLike.cpp:
 58 (WebCore::JSSetLike::subspaceForImpl):
 59 * bindings/scripts/test/JS/JSSetLike.h:
 60 (WebCore::JSSetLike::subspaceFor):
 61 * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
 62 (WebCore::JSTestActiveDOMObject::subspaceForImpl):
 63 * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
 64 (WebCore::JSTestActiveDOMObject::subspaceFor):
 65 * bindings/scripts/test/JS/JSTestCEReactions.cpp:
 66 (WebCore::JSTestCEReactions::subspaceForImpl):
 67 * bindings/scripts/test/JS/JSTestCEReactions.h:
 68 (WebCore::JSTestCEReactions::subspaceFor):
 69 * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
 70 (WebCore::JSTestCEReactionsStringifier::subspaceForImpl):
 71 * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
 72 (WebCore::JSTestCEReactionsStringifier::subspaceFor):
 73 * bindings/scripts/test/JS/JSTestCallTracer.cpp:
 74 (WebCore::JSTestCallTracer::subspaceForImpl):
 75 * bindings/scripts/test/JS/JSTestCallTracer.h:
 76 (WebCore::JSTestCallTracer::subspaceFor):
 77 * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
 78 (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl):
 79 * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
 80 (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceFor):
 81 * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
 82 (WebCore::JSTestDOMJIT::subspaceForImpl):
 83 * bindings/scripts/test/JS/JSTestDOMJIT.h:
 84 (WebCore::JSTestDOMJIT::subspaceFor):
 85 * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:
 86 (WebCore::JSTestEnabledBySetting::subspaceForImpl):
 87 * bindings/scripts/test/JS/JSTestEnabledBySetting.h:
 88 (WebCore::JSTestEnabledBySetting::subspaceFor):
 89 * bindings/scripts/test/JS/JSTestEnabledForContext.cpp:
 90 (WebCore::JSTestEnabledForContext::subspaceForImpl):
 91 * bindings/scripts/test/JS/JSTestEnabledForContext.h:
 92 (WebCore::JSTestEnabledForContext::subspaceFor):
 93 * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
 94 (WebCore::JSTestEventConstructor::subspaceForImpl):
 95 * bindings/scripts/test/JS/JSTestEventConstructor.h:
 96 (WebCore::JSTestEventConstructor::subspaceFor):
 97 * bindings/scripts/test/JS/JSTestEventTarget.cpp:
 98 (WebCore::JSTestEventTarget::subspaceForImpl):
 99 * bindings/scripts/test/JS/JSTestEventTarget.h:
 100 (WebCore::JSTestEventTarget::subspaceFor):
 101 * bindings/scripts/test/JS/JSTestException.cpp:
 102 (WebCore::JSTestException::subspaceForImpl):
 103 * bindings/scripts/test/JS/JSTestException.h:
 104 (WebCore::JSTestException::subspaceFor):
 105 * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
 106 (WebCore::JSTestGenerateIsReachable::subspaceForImpl):
 107 * bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
 108 (WebCore::JSTestGenerateIsReachable::subspaceFor):
 109 * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
 110 (WebCore::JSTestGlobalObject::subspaceForImpl):
 111 * bindings/scripts/test/JS/JSTestGlobalObject.h:
 112 (WebCore::JSTestGlobalObject::subspaceFor):
 113 * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:
 114 (WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl):
 115 * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
 116 (WebCore::JSTestIndexedSetterNoIdentifier::subspaceFor):
 117 * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:
 118 (WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl):
 119 * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
 120 (WebCore::JSTestIndexedSetterThrowingException::subspaceFor):
 121 * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:
 122 (WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl):
 123 * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
 124 (WebCore::JSTestIndexedSetterWithIdentifier::subspaceFor):
 125 * bindings/scripts/test/JS/JSTestInterface.cpp:
 126 (WebCore::JSTestInterface::subspaceForImpl):
 127 * bindings/scripts/test/JS/JSTestInterface.h:
 128 * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
 129 (WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl):
 130 * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
 131 (WebCore::JSTestInterfaceLeadingUnderscore::subspaceFor):
 132 * bindings/scripts/test/JS/JSTestIterable.cpp:
 133 (WebCore::JSTestIterable::subspaceForImpl):
 134 * bindings/scripts/test/JS/JSTestIterable.h:
 135 (WebCore::JSTestIterable::subspaceFor):
 136 * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
 137 (WebCore::JSTestJSBuiltinConstructor::subspaceForImpl):
 138 * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
 139 (WebCore::JSTestJSBuiltinConstructor::subspaceFor):
 140 * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
 141 (WebCore::JSTestMediaQueryListListener::subspaceForImpl):
 142 * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
 143 (WebCore::JSTestMediaQueryListListener::subspaceFor):
 144 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:
 145 (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl):
 146 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
 147 (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceFor):
 148 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:
 149 (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl):
 150 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
 151 (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceFor):
 152 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:
 153 (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl):
 154 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
 155 (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceFor):
 156 * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
 157 (WebCore::JSTestNamedConstructor::subspaceForImpl):
 158 * bindings/scripts/test/JS/JSTestNamedConstructor.h:
 159 (WebCore::JSTestNamedConstructor::subspaceFor):
 160 * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:
 161 (WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl):
 162 * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
 163 (WebCore::JSTestNamedDeleterNoIdentifier::subspaceFor):
 164 * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:
 165 (WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl):
 166 * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
 167 (WebCore::JSTestNamedDeleterThrowingException::subspaceFor):
 168 * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:
 169 (WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl):
 170 * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
 171 (WebCore::JSTestNamedDeleterWithIdentifier::subspaceFor):
 172 * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:
 173 (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl):
 174 * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
 175 (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceFor):
 176 * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:
 177 (WebCore::JSTestNamedGetterCallWith::subspaceForImpl):
 178 * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
 179 (WebCore::JSTestNamedGetterCallWith::subspaceFor):
 180 * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:
 181 (WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl):
 182 * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
 183 (WebCore::JSTestNamedGetterNoIdentifier::subspaceFor):
 184 * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:
 185 (WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl):
 186 * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
 187 (WebCore::JSTestNamedGetterWithIdentifier::subspaceFor):
 188 * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:
 189 (WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl):
 190 * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
 191 (WebCore::JSTestNamedSetterNoIdentifier::subspaceFor):
 192 * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:
 193 (WebCore::JSTestNamedSetterThrowingException::subspaceForImpl):
 194 * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
 195 (WebCore::JSTestNamedSetterThrowingException::subspaceFor):
 196 * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:
 197 (WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl):
 198 * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
 199 (WebCore::JSTestNamedSetterWithIdentifier::subspaceFor):
 200 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:
 201 (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl):
 202 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
 203 (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceFor):
 204 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:
 205 (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl):
 206 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
 207 (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceFor):
 208 * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:
 209 (WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceForImpl):
 210 * bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:
 211 (WebCore::JSTestNamedSetterWithOverrideBuiltins::subspaceFor):
 212 * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:
 213 (WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceForImpl):
 214 * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:
 215 (WebCore::JSTestNamedSetterWithUnforgableProperties::subspaceFor):
 216 * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:
 217 (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceForImpl):
 218 * bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:
 219 (WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceFor):
 220 * bindings/scripts/test/JS/JSTestNode.cpp:
 221 (WebCore::JSTestNode::subspaceForImpl):
 222 * bindings/scripts/test/JS/JSTestNode.h:
 223 * bindings/scripts/test/JS/JSTestObj.cpp:
 224 (WebCore::JSTestObj::subspaceForImpl):
 225 * bindings/scripts/test/JS/JSTestObj.h:
 226 (WebCore::JSTestObj::subspaceFor):
 227 * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
 228 (WebCore::JSTestOverloadedConstructors::subspaceForImpl):
 229 * bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
 230 (WebCore::JSTestOverloadedConstructors::subspaceFor):
 231 * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
 232 (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl):
 233 * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
 234 (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceFor):
 235 * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
 236 (WebCore::JSTestOverrideBuiltins::subspaceForImpl):
 237 * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
 238 (WebCore::JSTestOverrideBuiltins::subspaceFor):
 239 * bindings/scripts/test/JS/JSTestPluginInterface.cpp:
 240 (WebCore::JSTestPluginInterface::subspaceForImpl):
 241 * bindings/scripts/test/JS/JSTestPluginInterface.h:
 242 (WebCore::JSTestPluginInterface::subspaceFor):
 243 * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:
 244 (WebCore::JSTestPromiseRejectionEvent::subspaceForImpl):
 245 * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:
 246 (WebCore::JSTestPromiseRejectionEvent::subspaceFor):
 247 * bindings/scripts/test/JS/JSTestSerialization.cpp:
 248 (WebCore::JSTestSerialization::subspaceForImpl):
 249 * bindings/scripts/test/JS/JSTestSerialization.h:
 250 (WebCore::JSTestSerialization::subspaceFor):
 251 * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:
 252 (WebCore::JSTestSerializationIndirectInheritance::subspaceForImpl):
 253 * bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h:
 254 (WebCore::JSTestSerializationIndirectInheritance::subspaceFor):
 255 * bindings/scripts/test/JS/JSTestSerializationInherit.cpp:
 256 (WebCore::JSTestSerializationInherit::subspaceForImpl):
 257 * bindings/scripts/test/JS/JSTestSerializationInherit.h:
 258 (WebCore::JSTestSerializationInherit::subspaceFor):
 259 * bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:
 260 (WebCore::JSTestSerializationInheritFinal::subspaceForImpl):
 261 * bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:
 262 (WebCore::JSTestSerializationInheritFinal::subspaceFor):
 263 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
 264 (WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl):
 265 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
 266 (WebCore::JSTestSerializedScriptValueInterface::subspaceFor):
 267 * bindings/scripts/test/JS/JSTestStringifier.cpp:
 268 (WebCore::JSTestStringifier::subspaceForImpl):
 269 * bindings/scripts/test/JS/JSTestStringifier.h:
 270 (WebCore::JSTestStringifier::subspaceFor):
 271 * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:
 272 (WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl):
 273 * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:
 274 (WebCore::JSTestStringifierAnonymousOperation::subspaceFor):
 275 * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:
 276 (WebCore::JSTestStringifierNamedOperation::subspaceForImpl):
 277 * bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:
 278 (WebCore::JSTestStringifierNamedOperation::subspaceFor):
 279 * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:
 280 (WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl):
 281 * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:
 282 (WebCore::JSTestStringifierOperationImplementedAs::subspaceFor):
 283 * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:
 284 (WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl):
 285 * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:
 286 (WebCore::JSTestStringifierOperationNamedToString::subspaceFor):
 287 * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:
 288 (WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl):
 289 * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:
 290 (WebCore::JSTestStringifierReadOnlyAttribute::subspaceFor):
 291 * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:
 292 (WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl):
 293 * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:
 294 (WebCore::JSTestStringifierReadWriteAttribute::subspaceFor):
 295 * bindings/scripts/test/JS/JSTestTypedefs.cpp:
 296 (WebCore::JSTestTypedefs::subspaceForImpl):
 297 * bindings/scripts/test/JS/JSTestTypedefs.h:
 298 (WebCore::JSTestTypedefs::subspaceFor):
 299
13002020-03-04 Antoine Quint <graouts@apple.com>
2301
3302 Add an SPI to allow UserStyleSheet injection to target a specific WKWebView

Source/WebCore/CMakeLists.txt

@@set(MAKE_NAMES_DEPENDENCIES
16361636 ${WEBCORE_DIR}/bindings/scripts/StaticString.pm
16371637)
16381638set(SUPPLEMENTAL_DEPENDENCY_FILE ${WebCore_DERIVED_SOURCES_DIR}/supplemental_dependency.tmp)
 1639set(ISO_SUBSPACES_HEADER_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMIsoSubspaces.h)
16391640set(WINDOW_CONSTRUCTORS_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMWindowConstructors.idl)
16401641set(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE ${WebCore_DERIVED_SOURCES_DIR}/WorkerGlobalScopeConstructors.idl)
16411642set(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE ${WebCore_DERIVED_SOURCES_DIR}/DedicatedWorkerGlobalScopeConstructors.idl)

@@list(APPEND WebCoreTestSupport_IDL_FILES ${WebCore_DERIVED_SOURCES_DIR}/Internal
18041805GENERATE_BINDINGS(WebCoreBindings
18051806 OUTPUT_SOURCE WebCore_SOURCES
18061807 INPUT_FILES ${WebCore_IDL_FILES}
 1808 PP_INPUT_FILES ${WebCore_IDL_FILES} ${WebCoreTestSupport_IDL_FILES}
18071809 BASE_DIR ${WEBCORE_DIR}
18081810 IDL_INCLUDES ${WebCore_IDL_INCLUDES} ${WebCore_DERIVED_SOURCES_DIR}
18091811 FEATURES ${FEATURE_DEFINES_JAVASCRIPT}

@@GENERATE_BINDINGS(WebCoreBindings
18111813 GENERATOR JS
18121814 SUPPLEMENTAL_DEPFILE ${SUPPLEMENTAL_DEPENDENCY_FILE}
18131815 PP_EXTRA_OUTPUT
1814  ${WINDOW_CONSTRUCTORS_FILE} ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE} ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
 1816 ${ISO_SUBSPACES_HEADER_FILE} ${WINDOW_CONSTRUCTORS_FILE} ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE} ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
18151817 PP_EXTRA_ARGS
 1818 --isoSubspacesHeaderFile ${ISO_SUBSPACES_HEADER_FILE}
18161819 --windowConstructorsFile ${WINDOW_CONSTRUCTORS_FILE}
18171820 --workerGlobalScopeConstructorsFile ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE}
18181821 --dedicatedWorkerGlobalScopeConstructorsFile ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}

Source/WebCore/DerivedSources-output.xcfilelist

@@$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/CSSValueKeywords.h
99$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/ColorData.cpp
1010$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/CommandLineAPIModuleSource.h
1111$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/CountQueuingStrategyBuiltins.h
 12$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMIsoSubspaces.h
1213$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMJITAbstractHeapRepository.h
1314$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMWindowConstructors.idl
1415$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DedicatedWorkerGlobalScopeConstructors.idl

Source/WebCore/DerivedSources.make

@@JS_BINDINGS_SCRIPTS = $(COMMON_BINDINGS_SCRIPTS) bindings/scripts/CodeGeneratorJ
17181718
17191719SUPPLEMENTAL_DEPENDENCY_FILE = SupplementalDependencies.txt
17201720SUPPLEMENTAL_MAKEFILE_DEPS = SupplementalDependencies.dep
 1721ISO_SUBSPACES_HEADER_FILE = DOMIsoSubspaces.h
17211722WINDOW_CONSTRUCTORS_FILE = DOMWindowConstructors.idl
17221723WORKERGLOBALSCOPE_CONSTRUCTORS_FILE = WorkerGlobalScopeConstructors.idl
17231724DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE = DedicatedWorkerGlobalScopeConstructors.idl

@@endef
17381739IDL_INTERMEDIATE_FILES = \
17391740 $(SUPPLEMENTAL_MAKEFILE_DEPS) \
17401741 $(SUPPLEMENTAL_DEPENDENCY_FILE) \
 1742 $(ISO_SUBSPACES_HEADER_FILE) \
17411743 $(WINDOW_CONSTRUCTORS_FILE) \
17421744 $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \
17431745 $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) \

@@IDL_INTERMEDIATE_PATTERNS = $(subst .,%,$(IDL_INTERMEDIATE_FILES))
17491751
17501752$(IDL_INTERMEDIATE_PATTERNS) : $(PREPROCESS_IDLS_SCRIPTS) $(JS_BINDING_IDLS) $(PLATFORM_FEATURE_DEFINES) DerivedSources.make
17511753 $(foreach f,$(JS_BINDING_IDLS),@echo $(f)>>$(IDL_FILES_TMP)$(NL))
1752  $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --idlFilesList $(IDL_FILES_TMP) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --windowConstructorsFile $(WINDOW_CONSTRUCTORS_FILE) --workerGlobalScopeConstructorsFile $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --dedicatedWorkerGlobalScopeConstructorsFile $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --serviceWorkerGlobalScopeConstructorsFile $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --workletGlobalScopeConstructorsFile $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --paintWorkletGlobalScopeConstructorsFile $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $(SUPPLEMENTAL_MAKEFILE_DEPS)
 1754 $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) $(ADDITIONAL_IDL_DEFINES) LANGUAGE_JAVASCRIPT" --idlFilesList $(IDL_FILES_TMP) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --isoSubspacesHeaderFile $(ISO_SUBSPACES_HEADER_FILE) --windowConstructorsFile $(WINDOW_CONSTRUCTORS_FILE) --workerGlobalScopeConstructorsFile $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --dedicatedWorkerGlobalScopeConstructorsFile $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --serviceWorkerGlobalScopeConstructorsFile $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --workletGlobalScopeConstructorsFile $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --paintWorkletGlobalScopeConstructorsFile $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $(SUPPLEMENTAL_MAKEFILE_DEPS)
17531755 $(DELETE) $(IDL_FILES_TMP)
17541756
17551757JS%.cpp JS%.h : %.idl $(JS_BINDINGS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(IDL_INTERMEDIATE_FILES) $(PLATFORM_FEATURE_DEFINES)

Source/WebCore/WebCoreMacros.cmake

@@option(SHOW_BINDINGS_GENERATION_PROGRESS "Show progress of generating bindings"
4848# target is a new target name to be added
4949# OUTPUT_SOURCE is a list name which will contain generated sources.(eg. WebCore_SOURCES)
5050# INPUT_FILES are IDL files to generate.
 51# PP_INPUT_FILES are IDL files to preprocess.
5152# BASE_DIR is base directory where script is called.
5253# IDL_INCLUDES is value of --include argument. (eg. ${WEBCORE_DIR}/bindings/js)
5354# FEATURES is a value of --defines argument.

@@option(SHOW_BINDINGS_GENERATION_PROGRESS "Show progress of generating bindings"
5960function(GENERATE_BINDINGS target)
6061 set(options)
6162 set(oneValueArgs OUTPUT_SOURCE BASE_DIR FEATURES DESTINATION GENERATOR SUPPLEMENTAL_DEPFILE)
62  set(multiValueArgs INPUT_FILES IDL_INCLUDES PP_EXTRA_OUTPUT PP_EXTRA_ARGS)
 63 set(multiValueArgs INPUT_FILES PP_INPUT_FILES IDL_INCLUDES PP_EXTRA_OUTPUT PP_EXTRA_ARGS)
6364 cmake_parse_arguments(arg "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
6465 set(binding_generator ${WEBCORE_DIR}/bindings/scripts/generate-bindings-all.pl)
6566 set(idl_attributes_file ${WEBCORE_DIR}/bindings/scripts/IDLAttributes.json)
6667 set(idl_files_list ${CMAKE_CURRENT_BINARY_DIR}/idl_files_${target}.tmp)
 68 set(pp_idl_files_list ${CMAKE_CURRENT_BINARY_DIR}/pp_idl_files_${target}.tmp)
6769 set(_supplemental_dependency)
6870
6971 set(content)

@@function(GENERATE_BINDINGS target)
7577 endforeach ()
7678 file(WRITE ${idl_files_list} ${content})
7779
 80 set(pp_content)
 81 foreach (f ${arg_PP_INPUT_FILES})
 82 if (NOT IS_ABSOLUTE ${f})
 83 set(f ${CMAKE_CURRENT_SOURCE_DIR}/${f})
 84 endif ()
 85 set(pp_content "${pp_content}${f}\n")
 86 endforeach ()
 87 file(WRITE ${pp_idl_files_list} ${pp_content})
 88
7889 set(args
7990 --defines ${arg_FEATURES}
8091 --generator ${arg_GENERATOR}
8192 --outputDir ${arg_DESTINATION}
8293 --idlFilesList ${idl_files_list}
 94 --ppIDLFilesList ${pp_idl_files_list}
8395 --preprocessor "${CODE_GENERATOR_PREPROCESSOR}"
8496 --idlAttributesFile ${idl_attributes_file}
8597 )

Source/WebCore/bindings/js/JSDOMWrapper.cpp

@@JSDOMObject::JSDOMObject(JSC::Structure* structure, JSC::JSGlobalObject& globalO
4444 ASSERT(scriptExecutionContext() || globalObject.classInfo(globalObject.vm()) == JSRemoteDOMWindow::info());
4545}
4646
47 JSC::CompleteSubspace* outputConstraintSubspaceFor(JSC::VM& vm)
48 {
49  return &static_cast<JSVMClientData*>(vm.clientData)->outputConstraintSpace();
50 }
51 
5247JSC::JSValue cloneAcrossWorlds(JSC::JSGlobalObject& lexicalGlobalObject, const JSDOMObject& owner, JSC::JSValue value)
5348{
5449 if (isWorldCompatible(lexicalGlobalObject, value))

Source/WebCore/bindings/js/JSDOMWrapper.h

@@class JSDOMObject : public JSC::JSDestructibleObject {
6666 WEBCORE_EXPORT JSDOMObject(JSC::Structure*, JSC::JSGlobalObject&);
6767};
6868
69 WEBCORE_EXPORT JSC::CompleteSubspace* outputConstraintSubspaceFor(JSC::VM&);
70 
7169template<typename ImplementationClass> class JSDOMWrapper : public JSDOMObject {
7270public:
7371 typedef JSDOMObject Base;

Source/WebCore/bindings/js/WebCoreJSClientData.cpp

2727#include "WebCoreJSClientData.h"
2828
2929#include "DOMGCOutputConstraint.h"
 30#include "DOMIsoSubspaces.h"
3031#include "JSDOMBinding.h"
3132#include "JSDOMBuiltinConstructorBase.h"
3233#include "JSDOMWindow.h"

@@JSVMClientData::JSVMClientData(VM& vm)
7778 , m_runtimeMethodSpace ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), RuntimeMethod) // Hash:0xf70c4a85
7879 , m_runtimeObjectSpace ISO_SUBSPACE_INIT(vm.heap, m_runtimeObjectHeapCellType.get(), JSC::Bindings::RuntimeObject)
7980 , m_windowProxySpace ISO_SUBSPACE_INIT(vm.heap, m_windowProxyHeapCellType.get(), JSWindowProxy)
80  , m_subspaceForJSDOMWindow ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSDOMWindow.get(), JSDOMWindow)
81  , m_subspaceForJSDedicatedWorkerGlobalScope ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSDedicatedWorkerGlobalScope.get(), JSDedicatedWorkerGlobalScope)
82  , m_subspaceForJSRemoteDOMWindow ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSRemoteDOMWindow.get(), JSRemoteDOMWindow)
83  , m_subspaceForJSWorkerGlobalScope ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSWorkerGlobalScope.get(), JSWorkerGlobalScope)
84 #if ENABLE(SERVICE_WORKER)
85  , m_subspaceForJSServiceWorkerGlobalScope ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSServiceWorkerGlobalScope.get(), JSServiceWorkerGlobalScope)
86 #endif
87 #if ENABLE(CSS_PAINTING_API)
88  , m_subspaceForJSPaintWorkletGlobalScope ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSPaintWorkletGlobalScope.get(), JSPaintWorkletGlobalScope)
89  , m_subspaceForJSWorkletGlobalScope ISO_SUBSPACE_INIT(vm.heap, m_heapCellTypeForJSWorkletGlobalScope.get(), JSWorkletGlobalScope)
90 #endif
91  , m_outputConstraintSpace("WebCore Wrapper w/ Output Constraint", vm.heap, vm.destructibleObjectHeapCellType.get(), vm.fastMallocAllocator.get()) // Hash:0x7724c2e4
 81 , m_subspaces(makeUnique<DOMIsoSubspaces>())
9282{
9383}
9484

Source/WebCore/bindings/js/WebCoreJSClientData.h

2929
3030namespace WebCore {
3131
 32class DOMIsoSubspaces;
 33
3234class JSVMClientData : public JSC::VM::ClientData {
3335 WTF_MAKE_NONCOPYABLE(JSVMClientData); WTF_MAKE_FAST_ALLOCATED;
3436 friend class VMWorldIterator;

@@class JSVMClientData : public JSC::VM::ClientData {
6769 JSC::IsoSubspace& runtimeObjectSpace() { return m_runtimeObjectSpace; }
6870 JSC::IsoSubspace& windowProxySpace() { return m_windowProxySpace; }
6971
70  JSC::CompleteSubspace& outputConstraintSpace() { return m_outputConstraintSpace; }
 72 Vector<JSC::IsoSubspace*> outputConstraintSpaces() { return m_outputConstraintSpaces; }
7173
72  JSC::IsoSubspace& subspaceForJSDOMWindow() { return m_subspaceForJSDOMWindow; }
73  JSC::IsoSubspace& subspaceForJSDedicatedWorkerGlobalScope() { return m_subspaceForJSDedicatedWorkerGlobalScope; }
74  JSC::IsoSubspace& subspaceForJSRemoteDOMWindow() { return m_subspaceForJSRemoteDOMWindow; }
75  JSC::IsoSubspace& subspaceForJSWorkerGlobalScope() { return m_subspaceForJSWorkerGlobalScope; }
76 #if ENABLE(SERVICE_WORKER)
77  JSC::IsoSubspace& subspaceForJSServiceWorkerGlobalScope() { return m_subspaceForJSServiceWorkerGlobalScope; }
78 #endif
79 #if ENABLE(CSS_PAINTING_API)
80  JSC::IsoSubspace& subspaceForJSPaintWorkletGlobalScope() { return m_subspaceForJSPaintWorkletGlobalScope; }
81  JSC::IsoSubspace& subspaceForJSWorkletGlobalScope() { return m_subspaceForJSWorkletGlobalScope; }
82 #endif
83 
8474 template<typename Func>
8575 void forEachOutputConstraintSpace(const Func& func)
8676 {
87  func(m_outputConstraintSpace);
88  func(m_subspaceForJSDOMWindow);
89  func(m_subspaceForJSDedicatedWorkerGlobalScope);
90  func(m_subspaceForJSRemoteDOMWindow);
91  func(m_subspaceForJSWorkerGlobalScope);
92 #if ENABLE(SERVICE_WORKER)
93  func(m_subspaceForJSServiceWorkerGlobalScope);
94 #endif
95 #if ENABLE(CSS_PAINTING_API)
96  func(m_subspaceForJSPaintWorkletGlobalScope);
97  func(m_subspaceForJSWorkletGlobalScope);
98 #endif
 77 for (auto* space : m_outputConstraintSpaces)
 78 func(*space);
9979 }
10080
 81 DOMIsoSubspaces& subspaces() { return *m_subspaces.get(); }
 82
10183private:
10284 HashSet<DOMWrapperWorld*> m_worldSet;
10385 RefPtr<DOMWrapperWorld> m_normalWorld;

@@class JSVMClientData : public JSC::VM::ClientData {
10890 std::unique_ptr<JSC::HeapCellType> m_runtimeArrayHeapCellType;
10991 std::unique_ptr<JSC::HeapCellType> m_runtimeObjectHeapCellType;
11092 std::unique_ptr<JSC::HeapCellType> m_windowProxyHeapCellType;
111 
 93public:
11294 std::unique_ptr<JSC::HeapCellType> m_heapCellTypeForJSDOMWindow;
11395 std::unique_ptr<JSC::HeapCellType> m_heapCellTypeForJSDedicatedWorkerGlobalScope;
11496 std::unique_ptr<JSC::HeapCellType> m_heapCellTypeForJSRemoteDOMWindow;

@@class JSVMClientData : public JSC::VM::ClientData {
120102 std::unique_ptr<JSC::HeapCellType> m_heapCellTypeForJSPaintWorkletGlobalScope;
121103 std::unique_ptr<JSC::HeapCellType> m_heapCellTypeForJSWorkletGlobalScope;
122104#endif
123 
 105private:
124106 JSC::IsoSubspace m_domBuiltinConstructorSpace;
125107 JSC::IsoSubspace m_domConstructorSpace;
126108 JSC::IsoSubspace m_domWindowPropertiesSpace;

@@class JSVMClientData : public JSC::VM::ClientData {
128110 JSC::IsoSubspace m_runtimeMethodSpace;
129111 JSC::IsoSubspace m_runtimeObjectSpace;
130112 JSC::IsoSubspace m_windowProxySpace;
131 
132  JSC::IsoSubspace m_subspaceForJSDOMWindow;
133  JSC::IsoSubspace m_subspaceForJSDedicatedWorkerGlobalScope;
134  JSC::IsoSubspace m_subspaceForJSRemoteDOMWindow;
135  JSC::IsoSubspace m_subspaceForJSWorkerGlobalScope;
136 #if ENABLE(SERVICE_WORKER)
137  JSC::IsoSubspace m_subspaceForJSServiceWorkerGlobalScope;
138 #endif
139 #if ENABLE(CSS_PAINTING_API)
140  JSC::IsoSubspace m_subspaceForJSPaintWorkletGlobalScope;
141  JSC::IsoSubspace m_subspaceForJSWorkletGlobalScope;
142 #endif
143 
144  JSC::CompleteSubspace m_outputConstraintSpace;
 113 std::unique_ptr<DOMIsoSubspaces> m_subspaces;
 114 Vector<JSC::IsoSubspace*> m_outputConstraintSpaces;
145115};
146116
147117} // namespace WebCore

Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

@@sub GenerateHeader
27952795 }
27962796 }
27972797
2798  # FIXME: We put this unconditionally to put all the WebCore JS wrappers in each IsoSubspace.
2799  # https://bugs.webkit.org/show_bug.cgi?id=205107
2800  if (IsDOMGlobalObject($interface)) {
2801  push(@headerContent, " template<typename, JSC::SubspaceAccess> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm) { return subspaceForImpl(vm); }\n");
2802  push(@headerContent, " static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);\n");
2803  }
 2798 push(@headerContent, " template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)\n");
 2799 push(@headerContent, " {\n");
 2800 push(@headerContent, " if constexpr (mode == JSC::SubspaceAccess::Concurrently)\n");
 2801 push(@headerContent, " return nullptr;\n");
 2802 push(@headerContent, " return subspaceForImpl(vm);\n");
 2803 push(@headerContent, " }\n");
 2804 push(@headerContent, " static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);\n");
28042805
28052806 # visit function
28062807 if ($needsVisitChildren) {

@@sub GenerateHeader
28212822 # program resumed since the last call to visitChildren or visitOutputConstraints. Since
28222823 # this just calls visitAdditionalChildren, you usually don't have to worry about this.
28232824 push(@headerContent, " static void visitOutputConstraints(JSCell*, JSC::SlotVisitor&);\n");
2824  if (!IsDOMGlobalObject($interface)) {
2825  push(@headerContent, " template<typename, JSC::SubspaceAccess> static JSC::CompleteSubspace* subspaceFor(JSC::VM& vm) { return outputConstraintSubspaceFor(vm); }\n");
2826  }
28272825 }
28282826 }
28292827

@@sub GenerateImplementation
46624660 GenerateIterableDefinition($interface) if $interface->iterable;
46634661 GenerateSerializerDefinition($interface, $className) if $interface->serializable;
46644662
 4663 AddToImplIncludes("DOMIsoSubspaces.h");
 4664 AddToImplIncludes("WebCoreJSClientData.h");
 4665 AddToImplIncludes("<JavaScriptCore/JSDestructibleObjectHeapCellType.h>");
 4666 AddToImplIncludes("<JavaScriptCore/SubspaceInlines.h>");
 4667 push(@implContent, "JSC::IsoSubspace* ${className}::subspaceForImpl(JSC::VM& vm)\n");
 4668 push(@implContent, "{\n");
 4669 push(@implContent, " auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);\n");
 4670 push(@implContent, " auto& spaces = clientData.subspaces();\n");
 4671 push(@implContent, " if (auto* space = spaces.m_subspaceFor${interfaceName}.get())\n");
 4672 push(@implContent, " return space;\n");
46654673 if (IsDOMGlobalObject($interface)) {
4666  AddToImplIncludes("WebCoreJSClientData.h");
4667  push(@implContent, "JSC::IsoSubspace* ${className}::subspaceForImpl(JSC::VM& vm)\n");
4668  push(@implContent, "{\n");
4669  push(@implContent, " return &static_cast<JSVMClientData*>(vm.clientData)->subspaceFor${className}();\n");
4670  push(@implContent, "}\n\n");
4671  }
 4674 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeFor${className}.get(), ${className});\n");
 4675 } else {
 4676 push(@implContent, " if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${className}>)\n");
 4677 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), ${className});\n");
 4678 push(@implContent, " else\n");
 4679 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), ${className});\n");
 4680 }
 4681 push(@implContent, " auto* space = spaces.m_subspaceFor${interfaceName}.get();\n");
 4682 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"unreachable-code\")\n");
 4683 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"tautological-compare\")\n");
 4684 push(@implContent, " if (&${className}::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)\n");
 4685 push(@implContent, " clientData.outputConstraintSpaces().append(space);\n");
 4686 push(@implContent, "IGNORE_WARNINGS_END\n");
 4687 push(@implContent, "IGNORE_WARNINGS_END\n");
 4688 push(@implContent, " return space;\n");
 4689 push(@implContent, "}\n\n");
46724690
46734691 if ($needsVisitChildren) {
46744692 push(@implContent, "void ${className}::visitChildren(JSCell* cell, SlotVisitor& visitor)\n");

Source/WebCore/bindings/scripts/generate-bindings-all.pl

3838my @idlDirectories;
3939my $outputDirectory;
4040my $idlFilesList;
 41my $ppIDLFilesList;
4142my $generator;
4243my @generatorDependency;
4344my $defines;

5253GetOptions('include=s@' => \@idlDirectories,
5354 'outputDir=s' => \$outputDirectory,
5455 'idlFilesList=s' => \$idlFilesList,
 56 'ppIDLFilesList=s' => \$ppIDLFilesList,
5557 'generator=s' => \$generator,
5658 'generatorDependency=s@' => \@generatorDependency,
5759 'defines=s' => \$defines,

6971@idlFiles = map { CygwinPathIfNeeded(s/\r?\n?$//r) } <$fh>;
7072close($fh) or die;
7173
 74my @ppIDLFiles;
 75open(my $fh, '<', $ppIDLFilesList) or die "Cannot open $ppIDLFilesList";
 76@ppIDLFiles = map { CygwinPathIfNeeded(s/\r?\n?$//r) } <$fh>;
 77close($fh) or die;
 78
7279my %oldSupplements;
7380my %newSupplements;
7481if ($supplementalDependencyFile) {
7582 my @output = ($supplementalDependencyFile, @ppExtraOutput);
76  my @deps = ($idlFilesList, @idlFiles, @generatorDependency);
 83 my @deps = ($ppIDLFilesList, @ppIDLFiles, @generatorDependency);
7784 if (needsUpdate(\@output, \@deps)) {
7885 readSupplementalDependencyFile($supplementalDependencyFile, \%oldSupplements) if -e $supplementalDependencyFile;
7986 my @args = (File::Spec->catfile($scriptDir, 'preprocess-idls.pl'),
8087 '--defines', $defines,
81  '--idlFilesList', $idlFilesList,
 88 '--idlFilesList', $ppIDLFilesList,
8289 '--supplementalDependencyFile', $supplementalDependencyFile,
8390 @ppExtraArgs);
8491 printProgress("Preprocess IDL");

Source/WebCore/bindings/scripts/preprocess-idls.pl

3333my $idlFilesList;
3434my $testGlobalContextName;
3535my $supplementalDependencyFile;
 36my $isoSubspacesHeaderFile;
3637my $windowConstructorsFile;
3738my $workerGlobalScopeConstructorsFile;
3839my $dedicatedWorkerGlobalScopeConstructorsFile;

4748 'idlFilesList=s' => \$idlFilesList,
4849 'testGlobalContextName=s' => \$testGlobalContextName,
4950 'supplementalDependencyFile=s' => \$supplementalDependencyFile,
 51 'isoSubspacesHeaderFile=s' => \$isoSubspacesHeaderFile,
5052 'windowConstructorsFile=s' => \$windowConstructorsFile,
5153 'workerGlobalScopeConstructorsFile=s' => \$workerGlobalScopeConstructorsFile,
5254 'dedicatedWorkerGlobalScopeConstructorsFile=s' => \$dedicatedWorkerGlobalScopeConstructorsFile,

6870die('Must specify the file listing all IDLs using --idlFilesList.') unless defined($idlFilesList);
6971
7072$supplementalDependencyFile = CygwinPathIfNeeded($supplementalDependencyFile);
 73$isoSubspacesHeaderFile = CygwinPathIfNeeded($isoSubspacesHeaderFile);
7174$windowConstructorsFile = CygwinPathIfNeeded($windowConstructorsFile);
7275$workerGlobalScopeConstructorsFile = CygwinPathIfNeeded($workerGlobalScopeConstructorsFile);
7376$dedicatedWorkerGlobalScopeConstructorsFile = CygwinPathIfNeeded($dedicatedWorkerGlobalScopeConstructorsFile);

9396my $paintWorkletGlobalScopeConstructorsCode = "";
9497my $testGlobalScopeConstructorsCode = "";
9598
 99my $isoSubspacesHeaderCode = <<END;
 100#include <wtf/FastMalloc.h>
 101#include <wtf/Noncopyable.h>
 102
 103#pragma once
 104
 105namespace WebCore {
 106
 107class DOMIsoSubspaces {
 108 WTF_MAKE_NONCOPYABLE(DOMIsoSubspaces);
 109 WTF_MAKE_FAST_ALLOCATED(DOMIsoSubspaces);
 110public:
 111 DOMIsoSubspaces() = default;
 112END
 113
96114# Get rid of duplicates in idlFiles array.
97115my %idlFileHash = map { $_, 1 } @idlFiles;
98116

134152 }
135153 }
136154
 155 if (!isCallbackInterfaceFromIDL($idlFileContents)) {
 156 $isoSubspacesHeaderCode .= " std::unique_ptr<JSC::IsoSubspace> m_subspaceFor${interfaceName};\n"
 157 }
 158
137159 # For every interface that is exposed in a given ECMAScript global environment and:
138160 # - is a callback interface that has constants declared on it, or
139161 # - is a non-callback interface that is not declared with the [NoInterfaceObject] extended attribute, a corresponding

189211 delete $supplementals{$idlFile};
190212}
191213
 214if ($isoSubspacesHeaderFile) {
 215 $isoSubspacesHeaderCode .= "};\n";
 216 $isoSubspacesHeaderCode .= "} // namespace WebCore\n";
 217 WriteFileIfChanged($isoSubspacesHeaderFile, $isoSubspacesHeaderCode);
 218}
 219
192220# Outputs the dependency.
193221# The format of a supplemental dependency file:
194222#

Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp

2222#include "JSInterfaceName.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMExceptionHandling.h"
2829#include "JSDOMWrapperCache.h"
2930#include "ScriptExecutionContext.h"
 31#include "WebCoreJSClientData.h"
3032#include <JavaScriptCore/FunctionPrototype.h>
3133#include <JavaScriptCore/HeapAnalyzer.h>
3234#include <JavaScriptCore/JSCInlines.h>
 35#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 36#include <JavaScriptCore/SubspaceInlines.h>
3337#include <wtf/GetPtr.h>
3438#include <wtf/PointerPreparations.h>
3539#include <wtf/URL.h>

@@bool setJSInterfaceNameConstructor(JSGlobalObject* lexicalGlobalObject, EncodedJ
161165 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
162166}
163167
 168JSC::IsoSubspace* JSInterfaceName::subspaceForImpl(JSC::VM& vm)
 169{
 170 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 171 auto& spaces = clientData.subspaces();
 172 if (auto* space = spaces.m_subspaceForInterfaceName.get())
 173 return space;
 174 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSInterfaceName>)
 175 spaces.m_subspaceForInterfaceName = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSInterfaceName);
 176 else
 177 spaces.m_subspaceForInterfaceName = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSInterfaceName);
 178 auto* space = spaces.m_subspaceForInterfaceName.get();
 179IGNORE_WARNINGS_BEGIN("unreachable-code")
 180IGNORE_WARNINGS_BEGIN("tautological-compare")
 181 if (&JSInterfaceName::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 182 clientData.outputConstraintSpaces().append(space);
 183IGNORE_WARNINGS_END
 184IGNORE_WARNINGS_END
 185 return space;
 186}
 187
164188void JSInterfaceName::visitChildren(JSCell* cell, SlotVisitor& visitor)
165189{
166190 auto* thisObject = jsCast<JSInterfaceName*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h

@@class JSInterfaceName : public JSDOMWrapper<InterfaceName> {
5050 }
5151
5252 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 53 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 54 {
 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 56 return nullptr;
 57 return subspaceForImpl(vm);
 58 }
 59 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5360 static void visitChildren(JSCell*, JSC::SlotVisitor&);
5461
5562 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);

Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp

2222#include "JSMapLike.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3233#include "JSDOMOperation.h"
3334#include "JSDOMWrapperCache.h"
3435#include "ScriptExecutionContext.h"
 36#include "WebCoreJSClientData.h"
3537#include <JavaScriptCore/BuiltinNames.h>
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsMapLikePrototypeFunctionDelete(JSGlobalObject* le
354358 return IDLOperation<JSMapLike>::call<jsMapLikePrototypeFunctionDeleteBody>(*lexicalGlobalObject, *callFrame, "delete");
355359}
356360
 361JSC::IsoSubspace* JSMapLike::subspaceForImpl(JSC::VM& vm)
 362{
 363 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 364 auto& spaces = clientData.subspaces();
 365 if (auto* space = spaces.m_subspaceForMapLike.get())
 366 return space;
 367 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSMapLike>)
 368 spaces.m_subspaceForMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSMapLike);
 369 else
 370 spaces.m_subspaceForMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSMapLike);
 371 auto* space = spaces.m_subspaceForMapLike.get();
 372IGNORE_WARNINGS_BEGIN("unreachable-code")
 373IGNORE_WARNINGS_BEGIN("tautological-compare")
 374 if (&JSMapLike::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 375 clientData.outputConstraintSpaces().append(space);
 376IGNORE_WARNINGS_END
 377IGNORE_WARNINGS_END
 378 return space;
 379}
 380
357381void JSMapLike::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
358382{
359383 auto* thisObject = jsCast<JSMapLike*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSMapLike.h

@@class JSMapLike : public JSDOMWrapper<MapLike> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSMapLike(JSC::Structure*, JSDOMGlobalObject&, Ref<MapLike>&&);

Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp

2222#include "JSReadOnlyMapLike.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3233#include "JSDOMOperation.h"
3334#include "JSDOMWrapperCache.h"
3435#include "ScriptExecutionContext.h"
 36#include "WebCoreJSClientData.h"
3537#include <JavaScriptCore/BuiltinNames.h>
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsReadOnlyMapLikePrototypeFunctionForEach(JSGlobalO
298302 return IDLOperation<JSReadOnlyMapLike>::call<jsReadOnlyMapLikePrototypeFunctionForEachBody>(*lexicalGlobalObject, *callFrame, "forEach");
299303}
300304
 305JSC::IsoSubspace* JSReadOnlyMapLike::subspaceForImpl(JSC::VM& vm)
 306{
 307 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 308 auto& spaces = clientData.subspaces();
 309 if (auto* space = spaces.m_subspaceForReadOnlyMapLike.get())
 310 return space;
 311 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSReadOnlyMapLike>)
 312 spaces.m_subspaceForReadOnlyMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSReadOnlyMapLike);
 313 else
 314 spaces.m_subspaceForReadOnlyMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSReadOnlyMapLike);
 315 auto* space = spaces.m_subspaceForReadOnlyMapLike.get();
 316IGNORE_WARNINGS_BEGIN("unreachable-code")
 317IGNORE_WARNINGS_BEGIN("tautological-compare")
 318 if (&JSReadOnlyMapLike::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 319 clientData.outputConstraintSpaces().append(space);
 320IGNORE_WARNINGS_END
 321IGNORE_WARNINGS_END
 322 return space;
 323}
 324
301325void JSReadOnlyMapLike::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
302326{
303327 auto* thisObject = jsCast<JSReadOnlyMapLike*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.h

@@class JSReadOnlyMapLike : public JSDOMWrapper<ReadOnlyMapLike> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSReadOnlyMapLike(JSC::Structure*, JSDOMGlobalObject&, Ref<ReadOnlyMapLike>&&);

Source/WebCore/bindings/scripts/test/JS/JSReadOnlySetLike.cpp

2222#include "JSReadOnlySetLike.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3233#include "JSDOMSetLike.h"
3334#include "JSDOMWrapperCache.h"
3435#include "ScriptExecutionContext.h"
 36#include "WebCoreJSClientData.h"
3537#include <JavaScriptCore/BuiltinNames.h>
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsReadOnlySetLikePrototypeFunctionForEach(JSGlobalO
279283 return IDLOperation<JSReadOnlySetLike>::call<jsReadOnlySetLikePrototypeFunctionForEachBody>(*lexicalGlobalObject, *callFrame, "forEach");
280284}
281285
 286JSC::IsoSubspace* JSReadOnlySetLike::subspaceForImpl(JSC::VM& vm)
 287{
 288 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 289 auto& spaces = clientData.subspaces();
 290 if (auto* space = spaces.m_subspaceForReadOnlySetLike.get())
 291 return space;
 292 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSReadOnlySetLike>)
 293 spaces.m_subspaceForReadOnlySetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSReadOnlySetLike);
 294 else
 295 spaces.m_subspaceForReadOnlySetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSReadOnlySetLike);
 296 auto* space = spaces.m_subspaceForReadOnlySetLike.get();
 297IGNORE_WARNINGS_BEGIN("unreachable-code")
 298IGNORE_WARNINGS_BEGIN("tautological-compare")
 299 if (&JSReadOnlySetLike::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 300 clientData.outputConstraintSpaces().append(space);
 301IGNORE_WARNINGS_END
 302IGNORE_WARNINGS_END
 303 return space;
 304}
 305
282306void JSReadOnlySetLike::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
283307{
284308 auto* thisObject = jsCast<JSReadOnlySetLike*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSReadOnlySetLike.h

@@class JSReadOnlySetLike : public JSDOMWrapper<ReadOnlySetLike> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSReadOnlySetLike(JSC::Structure*, JSDOMGlobalObject&, Ref<ReadOnlySetLike>&&);

Source/WebCore/bindings/scripts/test/JS/JSSetLike.cpp

2222#include "JSSetLike.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3233#include "JSDOMSetLike.h"
3334#include "JSDOMWrapperCache.h"
3435#include "ScriptExecutionContext.h"
 36#include "WebCoreJSClientData.h"
3537#include <JavaScriptCore/BuiltinNames.h>
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsSetLikePrototypeFunctionDelete(JSGlobalObject* le
333337 return IDLOperation<JSSetLike>::call<jsSetLikePrototypeFunctionDeleteBody>(*lexicalGlobalObject, *callFrame, "delete");
334338}
335339
 340JSC::IsoSubspace* JSSetLike::subspaceForImpl(JSC::VM& vm)
 341{
 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 343 auto& spaces = clientData.subspaces();
 344 if (auto* space = spaces.m_subspaceForSetLike.get())
 345 return space;
 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSSetLike>)
 347 spaces.m_subspaceForSetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSSetLike);
 348 else
 349 spaces.m_subspaceForSetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSSetLike);
 350 auto* space = spaces.m_subspaceForSetLike.get();
 351IGNORE_WARNINGS_BEGIN("unreachable-code")
 352IGNORE_WARNINGS_BEGIN("tautological-compare")
 353 if (&JSSetLike::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 354 clientData.outputConstraintSpaces().append(space);
 355IGNORE_WARNINGS_END
 356IGNORE_WARNINGS_END
 357 return space;
 358}
 359
336360void JSSetLike::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
337361{
338362 auto* thisObject = jsCast<JSSetLike*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSSetLike.h

@@class JSSetLike : public JSDOMWrapper<SetLike> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSSetLike(JSC::Structure*, JSDOMGlobalObject&, Ref<SetLike>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp

2323
2424#include "ActiveDOMObject.h"
2525#include "CustomElementReactionQueue.h"
 26#include "DOMIsoSubspaces.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"
2829#include "JSDOMBindingSecurity.h"

3536#include "JSDOMWrapperCache.h"
3637#include "JSNode.h"
3738#include "ScriptExecutionContext.h"
 39#include "WebCoreJSClientData.h"
3840#include <JavaScriptCore/FunctionPrototype.h>
3941#include <JavaScriptCore/HeapAnalyzer.h>
4042#include <JavaScriptCore/JSCInlines.h>
 43#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 44#include <JavaScriptCore/SubspaceInlines.h>
4145#include <wtf/GetPtr.h>
4246#include <wtf/PointerPreparations.h>
4347#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestActiveDOMObjectPrototypeFunctionOverloadedMet
310314 return IDLOperation<JSTestActiveDOMObject>::call<jsTestActiveDOMObjectPrototypeFunctionOverloadedMethodOverloadDispatcher>(*lexicalGlobalObject, *callFrame, "overloadedMethod");
311315}
312316
 317JSC::IsoSubspace* JSTestActiveDOMObject::subspaceForImpl(JSC::VM& vm)
 318{
 319 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 320 auto& spaces = clientData.subspaces();
 321 if (auto* space = spaces.m_subspaceForTestActiveDOMObject.get())
 322 return space;
 323 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestActiveDOMObject>)
 324 spaces.m_subspaceForTestActiveDOMObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestActiveDOMObject);
 325 else
 326 spaces.m_subspaceForTestActiveDOMObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestActiveDOMObject);
 327 auto* space = spaces.m_subspaceForTestActiveDOMObject.get();
 328IGNORE_WARNINGS_BEGIN("unreachable-code")
 329IGNORE_WARNINGS_BEGIN("tautological-compare")
 330 if (&JSTestActiveDOMObject::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 331 clientData.outputConstraintSpaces().append(space);
 332IGNORE_WARNINGS_END
 333IGNORE_WARNINGS_END
 334 return space;
 335}
 336
313337void JSTestActiveDOMObject::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
314338{
315339 auto* thisObject = jsCast<JSTestActiveDOMObject*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h

@@class JSTestActiveDOMObject : public JSDOMWrapper<TestActiveDOMObject> {
5050 }
5151
5252 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 53 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 54 {
 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 56 return nullptr;
 57 return subspaceForImpl(vm);
 58 }
 59 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5360 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5461public:
5562 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::HasPutPropertySecurityCheck | JSC::HasStaticPropertyTable;

Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp

2323
2424#include "ActiveDOMObject.h"
2525#include "CustomElementReactionQueue.h"
 26#include "DOMIsoSubspaces.h"
2627#include "HTMLNames.h"
2728#include "JSDOMAttribute.h"
2829#include "JSDOMBinding.h"

3536#include "JSDOMWrapperCache.h"
3637#include "JSTestCEReactionsStringifier.h"
3738#include "ScriptExecutionContext.h"
 39#include "WebCoreJSClientData.h"
3840#include <JavaScriptCore/FunctionPrototype.h>
3941#include <JavaScriptCore/HeapAnalyzer.h>
4042#include <JavaScriptCore/JSCInlines.h>
 43#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 44#include <JavaScriptCore/SubspaceInlines.h>
4145#include <wtf/GetPtr.h>
4246#include <wtf/PointerPreparations.h>
4347#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestCEReactionsPrototypeFunctionMethodWithCEReact
442446 return IDLOperation<JSTestCEReactions>::call<jsTestCEReactionsPrototypeFunctionMethodWithCEReactionsNotNeededBody>(*lexicalGlobalObject, *callFrame, "methodWithCEReactionsNotNeeded");
443447}
444448
 449JSC::IsoSubspace* JSTestCEReactions::subspaceForImpl(JSC::VM& vm)
 450{
 451 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 452 auto& spaces = clientData.subspaces();
 453 if (auto* space = spaces.m_subspaceForTestCEReactions.get())
 454 return space;
 455 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions>)
 456 spaces.m_subspaceForTestCEReactions = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestCEReactions);
 457 else
 458 spaces.m_subspaceForTestCEReactions = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestCEReactions);
 459 auto* space = spaces.m_subspaceForTestCEReactions.get();
 460IGNORE_WARNINGS_BEGIN("unreachable-code")
 461IGNORE_WARNINGS_BEGIN("tautological-compare")
 462 if (&JSTestCEReactions::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 463 clientData.outputConstraintSpaces().append(space);
 464IGNORE_WARNINGS_END
 465IGNORE_WARNINGS_END
 466 return space;
 467}
 468
445469void JSTestCEReactions::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
446470{
447471 auto* thisObject = jsCast<JSTestCEReactions*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h

@@class JSTestCEReactions : public JSDOMWrapper<TestCEReactions> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestCEReactions(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCEReactions>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp

2323
2424#include "ActiveDOMObject.h"
2525#include "CustomElementReactionQueue.h"
 26#include "DOMIsoSubspaces.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"
2829#include "JSDOMConstructorNotConstructable.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3741#include <wtf/GetPtr.h>
3842#include <wtf/PointerPreparations.h>
3943#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestCEReactionsStringifierPrototypeFunctionToStri
266270 return IDLOperation<JSTestCEReactionsStringifier>::call<jsTestCEReactionsStringifierPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
267271}
268272
 273JSC::IsoSubspace* JSTestCEReactionsStringifier::subspaceForImpl(JSC::VM& vm)
 274{
 275 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 276 auto& spaces = clientData.subspaces();
 277 if (auto* space = spaces.m_subspaceForTestCEReactionsStringifier.get())
 278 return space;
 279 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier>)
 280 spaces.m_subspaceForTestCEReactionsStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestCEReactionsStringifier);
 281 else
 282 spaces.m_subspaceForTestCEReactionsStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestCEReactionsStringifier);
 283 auto* space = spaces.m_subspaceForTestCEReactionsStringifier.get();
 284IGNORE_WARNINGS_BEGIN("unreachable-code")
 285IGNORE_WARNINGS_BEGIN("tautological-compare")
 286 if (&JSTestCEReactionsStringifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 287 clientData.outputConstraintSpaces().append(space);
 288IGNORE_WARNINGS_END
 289IGNORE_WARNINGS_END
 290 return space;
 291}
 292
269293void JSTestCEReactionsStringifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
270294{
271295 auto* thisObject = jsCast<JSTestCEReactionsStringifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h

@@class JSTestCEReactionsStringifier : public JSDOMWrapper<TestCEReactionsStringif
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestCEReactionsStringifier(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCEReactionsStringifier>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp

2323
2424#include "ActiveDOMObject.h"
2525#include "CallTracer.h"
 26#include "DOMIsoSubspaces.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"
2829#include "JSDOMConstructorNotConstructable.h"

3839#include "JSDOMWrapperCache.h"
3940#include "JSNode.h"
4041#include "ScriptExecutionContext.h"
 42#include "WebCoreJSClientData.h"
4143#include <JavaScriptCore/FunctionPrototype.h>
4244#include <JavaScriptCore/HeapAnalyzer.h>
4345#include <JavaScriptCore/JSCInlines.h>
 46#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 47#include <JavaScriptCore/SubspaceInlines.h>
4448#include <wtf/GetPtr.h>
4549#include <wtf/PointerPreparations.h>
4650#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestCallTracerPrototypeFunctionTestOperationWithD
506510 return IDLOperation<JSTestCallTracer>::call<jsTestCallTracerPrototypeFunctionTestOperationWithDefaultVariantArgumentBody>(*lexicalGlobalObject, *callFrame, "testOperationWithDefaultVariantArgument");
507511}
508512
 513JSC::IsoSubspace* JSTestCallTracer::subspaceForImpl(JSC::VM& vm)
 514{
 515 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 516 auto& spaces = clientData.subspaces();
 517 if (auto* space = spaces.m_subspaceForTestCallTracer.get())
 518 return space;
 519 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer>)
 520 spaces.m_subspaceForTestCallTracer = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestCallTracer);
 521 else
 522 spaces.m_subspaceForTestCallTracer = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestCallTracer);
 523 auto* space = spaces.m_subspaceForTestCallTracer.get();
 524IGNORE_WARNINGS_BEGIN("unreachable-code")
 525IGNORE_WARNINGS_BEGIN("tautological-compare")
 526 if (&JSTestCallTracer::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 527 clientData.outputConstraintSpaces().append(space);
 528IGNORE_WARNINGS_END
 529IGNORE_WARNINGS_END
 530 return space;
 531}
 532
509533void JSTestCallTracer::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
510534{
511535 auto* thisObject = jsCast<JSTestCallTracer*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.h

@@class JSTestCallTracer : public JSDOMWrapper<TestCallTracer> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestCallTracer(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCallTracer>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp

2222#include "JSTestClassWithJSBuiltinConstructor.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMBuiltinConstructor.h"
2728#include "JSDOMExceptionHandling.h"
2829#include "JSDOMWrapperCache.h"
2930#include "ScriptExecutionContext.h"
3031#include "TestClassWithJSBuiltinConstructorBuiltins.h"
 32#include "WebCoreJSClientData.h"
3133#include <JavaScriptCore/FunctionPrototype.h>
3234#include <JavaScriptCore/HeapAnalyzer.h>
3335#include <JavaScriptCore/JSCInlines.h>
 36#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 37#include <JavaScriptCore/SubspaceInlines.h>
3438#include <wtf/GetPtr.h>
3539#include <wtf/PointerPreparations.h>
3640#include <wtf/URL.h>

@@bool setJSTestClassWithJSBuiltinConstructorConstructor(JSGlobalObject* lexicalGl
167171 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
168172}
169173
 174JSC::IsoSubspace* JSTestClassWithJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm)
 175{
 176 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 177 auto& spaces = clientData.subspaces();
 178 if (auto* space = spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get())
 179 return space;
 180 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor>)
 181 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestClassWithJSBuiltinConstructor);
 182 else
 183 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestClassWithJSBuiltinConstructor);
 184 auto* space = spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get();
 185IGNORE_WARNINGS_BEGIN("unreachable-code")
 186IGNORE_WARNINGS_BEGIN("tautological-compare")
 187 if (&JSTestClassWithJSBuiltinConstructor::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 188 clientData.outputConstraintSpaces().append(space);
 189IGNORE_WARNINGS_END
 190IGNORE_WARNINGS_END
 191 return space;
 192}
 193
170194void JSTestClassWithJSBuiltinConstructor::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
171195{
172196 auto* thisObject = jsCast<JSTestClassWithJSBuiltinConstructor*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h

@@class JSTestClassWithJSBuiltinConstructor : public JSDOMWrapper<TestClassWithJSB
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestClassWithJSBuiltinConstructor(JSC::Structure*, JSDOMGlobalObject&, Ref<TestClassWithJSBuiltinConstructor>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp

2222#include "JSTestDOMJIT.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "DOMJITAbstractHeapRepository.h"
2627#include "DOMJITIDLConvert.h"
2728#include "DOMJITIDLType.h"

4243#include "JSElement.h"
4344#include "JSNodeList.h"
4445#include "ScriptExecutionContext.h"
 46#include "WebCoreJSClientData.h"
4547#include <JavaScriptCore/FrameTracers.h>
4648#include <JavaScriptCore/HeapAnalyzer.h>
4749#include <JavaScriptCore/JSCInlines.h>
 50#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 51#include <JavaScriptCore/SubspaceInlines.h>
4852#include <wtf/GetPtr.h>
4953#include <wtf/PointerPreparations.h>
5054#include <wtf/URL.h>

@@JSC::EncodedJSValue JIT_OPERATION jsTestDOMJITPrototypeFunctionGetElementsByName
12851289 return JSValue::encode(toJS<IDLInterface<NodeList>>(*lexicalGlobalObject, *castedThis->globalObject(), impl.getElementsByName(WTFMove(elementName))));
12861290}
12871291
 1292JSC::IsoSubspace* JSTestDOMJIT::subspaceForImpl(JSC::VM& vm)
 1293{
 1294 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 1295 auto& spaces = clientData.subspaces();
 1296 if (auto* space = spaces.m_subspaceForTestDOMJIT.get())
 1297 return space;
 1298 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT>)
 1299 spaces.m_subspaceForTestDOMJIT = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestDOMJIT);
 1300 else
 1301 spaces.m_subspaceForTestDOMJIT = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestDOMJIT);
 1302 auto* space = spaces.m_subspaceForTestDOMJIT.get();
 1303IGNORE_WARNINGS_BEGIN("unreachable-code")
 1304IGNORE_WARNINGS_BEGIN("tautological-compare")
 1305 if (&JSTestDOMJIT::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 1306 clientData.outputConstraintSpaces().append(space);
 1307IGNORE_WARNINGS_END
 1308IGNORE_WARNINGS_END
 1309 return space;
 1310}
 1311
12881312void JSTestDOMJIT::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
12891313{
12901314 auto* thisObject = jsCast<JSTestDOMJIT*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h

@@class JSTestDOMJIT : public JSNode {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestDOMJIT& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp

2222#include "JSTestEnabledBySetting.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "Document.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

3637#include <JavaScriptCore/FunctionPrototype.h>
3738#include <JavaScriptCore/HeapAnalyzer.h>
3839#include <JavaScriptCore/JSCInlines.h>
 40#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3942#include <wtf/GetPtr.h>
4043#include <wtf/PointerPreparations.h>
4144#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestEnabledBySettingPrototypeFunctionEnabledBySet
311314
312315#endif
313316
 317JSC::IsoSubspace* JSTestEnabledBySetting::subspaceForImpl(JSC::VM& vm)
 318{
 319 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 320 auto& spaces = clientData.subspaces();
 321 if (auto* space = spaces.m_subspaceForTestEnabledBySetting.get())
 322 return space;
 323 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting>)
 324 spaces.m_subspaceForTestEnabledBySetting = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestEnabledBySetting);
 325 else
 326 spaces.m_subspaceForTestEnabledBySetting = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestEnabledBySetting);
 327 auto* space = spaces.m_subspaceForTestEnabledBySetting.get();
 328IGNORE_WARNINGS_BEGIN("unreachable-code")
 329IGNORE_WARNINGS_BEGIN("tautological-compare")
 330 if (&JSTestEnabledBySetting::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 331 clientData.outputConstraintSpaces().append(space);
 332IGNORE_WARNINGS_END
 333IGNORE_WARNINGS_END
 334 return space;
 335}
 336
314337void JSTestEnabledBySetting::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
315338{
316339 auto* thisObject = jsCast<JSTestEnabledBySetting*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.h

@@class JSTestEnabledBySetting : public JSDOMWrapper<TestEnabledBySetting> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360public:
5461 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;

Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp

2222#include "JSTestEnabledForContext.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "Document.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

3536#include <JavaScriptCore/FunctionPrototype.h>
3637#include <JavaScriptCore/HeapAnalyzer.h>
3738#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3841#include <wtf/GetPtr.h>
3942#include <wtf/PointerPreparations.h>
4043#include <wtf/URL.h>

@@bool setJSTestEnabledForContextTestSubObjEnabledForContextConstructor(JSGlobalOb
200203 return IDLAttribute<JSTestEnabledForContext>::set<setJSTestEnabledForContextTestSubObjEnabledForContextConstructorSetter>(*lexicalGlobalObject, thisValue, encodedValue, "TestSubObjEnabledForContext");
201204}
202205
 206JSC::IsoSubspace* JSTestEnabledForContext::subspaceForImpl(JSC::VM& vm)
 207{
 208 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 209 auto& spaces = clientData.subspaces();
 210 if (auto* space = spaces.m_subspaceForTestEnabledForContext.get())
 211 return space;
 212 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext>)
 213 spaces.m_subspaceForTestEnabledForContext = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestEnabledForContext);
 214 else
 215 spaces.m_subspaceForTestEnabledForContext = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestEnabledForContext);
 216 auto* space = spaces.m_subspaceForTestEnabledForContext.get();
 217IGNORE_WARNINGS_BEGIN("unreachable-code")
 218IGNORE_WARNINGS_BEGIN("tautological-compare")
 219 if (&JSTestEnabledForContext::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 220 clientData.outputConstraintSpaces().append(space);
 221IGNORE_WARNINGS_END
 222IGNORE_WARNINGS_END
 223 return space;
 224}
 225
203226void JSTestEnabledForContext::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
204227{
205228 auto* thisObject = jsCast<JSTestEnabledForContext*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.h

@@class JSTestEnabledForContext : public JSDOMWrapper<TestEnabledForContext> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360public:
5461 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;

Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp

2222#include "JSTestEventConstructor.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructor.h"

3132#include "JSDOMExceptionHandling.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue jsTestEventConstructorAttr3(JSGlobalObject* lexicalGlobalObject,
314318
315319#endif
316320
 321JSC::IsoSubspace* JSTestEventConstructor::subspaceForImpl(JSC::VM& vm)
 322{
 323 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 324 auto& spaces = clientData.subspaces();
 325 if (auto* space = spaces.m_subspaceForTestEventConstructor.get())
 326 return space;
 327 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor>)
 328 spaces.m_subspaceForTestEventConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestEventConstructor);
 329 else
 330 spaces.m_subspaceForTestEventConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestEventConstructor);
 331 auto* space = spaces.m_subspaceForTestEventConstructor.get();
 332IGNORE_WARNINGS_BEGIN("unreachable-code")
 333IGNORE_WARNINGS_BEGIN("tautological-compare")
 334 if (&JSTestEventConstructor::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 335 clientData.outputConstraintSpaces().append(space);
 336IGNORE_WARNINGS_END
 337IGNORE_WARNINGS_END
 338 return space;
 339}
 340
317341void JSTestEventConstructor::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
318342{
319343 auto* thisObject = jsCast<JSTestEventConstructor*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h

@@class JSTestEventConstructor : public JSEvent {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestEventConstructor& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp

2222#include "JSTestEventTarget.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3334#include "JSDOMWrapperCache.h"
3435#include "JSNode.h"
3536#include "ScriptExecutionContext.h"
 37#include "WebCoreJSClientData.h"
3638#include <JavaScriptCore/HeapAnalyzer.h>
3739#include <JavaScriptCore/JSCInlines.h>
 40#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3841#include <JavaScriptCore/PropertyNameArray.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionItem(JSGlobalObje
256260 return IDLOperation<JSTestEventTarget>::call<jsTestEventTargetPrototypeFunctionItemBody>(*lexicalGlobalObject, *callFrame, "item");
257261}
258262
 263JSC::IsoSubspace* JSTestEventTarget::subspaceForImpl(JSC::VM& vm)
 264{
 265 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 266 auto& spaces = clientData.subspaces();
 267 if (auto* space = spaces.m_subspaceForTestEventTarget.get())
 268 return space;
 269 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget>)
 270 spaces.m_subspaceForTestEventTarget = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestEventTarget);
 271 else
 272 spaces.m_subspaceForTestEventTarget = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestEventTarget);
 273 auto* space = spaces.m_subspaceForTestEventTarget.get();
 274IGNORE_WARNINGS_BEGIN("unreachable-code")
 275IGNORE_WARNINGS_BEGIN("tautological-compare")
 276 if (&JSTestEventTarget::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 277 clientData.outputConstraintSpaces().append(space);
 278IGNORE_WARNINGS_END
 279IGNORE_WARNINGS_END
 280 return space;
 281}
 282
259283void JSTestEventTarget::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
260284{
261285 auto* thisObject = jsCast<JSTestEventTarget*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h

@@class JSTestEventTarget : public JSEventTarget {
5353 }
5454
5555 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 56 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 57 {
 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 59 return nullptr;
 60 return subspaceForImpl(vm);
 61 }
 62 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5663 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5764 TestEventTarget& wrapped() const
5865 {

Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp

2222#include "JSTestException.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue jsTestExceptionName(JSGlobalObject* lexicalGlobalObject, EncodedJ
184188 return IDLAttribute<JSTestException>::get<jsTestExceptionNameGetter, CastedThisErrorBehavior::Assert>(*lexicalGlobalObject, thisValue, "name");
185189}
186190
 191JSC::IsoSubspace* JSTestException::subspaceForImpl(JSC::VM& vm)
 192{
 193 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 194 auto& spaces = clientData.subspaces();
 195 if (auto* space = spaces.m_subspaceForTestException.get())
 196 return space;
 197 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestException>)
 198 spaces.m_subspaceForTestException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestException);
 199 else
 200 spaces.m_subspaceForTestException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestException);
 201 auto* space = spaces.m_subspaceForTestException.get();
 202IGNORE_WARNINGS_BEGIN("unreachable-code")
 203IGNORE_WARNINGS_BEGIN("tautological-compare")
 204 if (&JSTestException::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 205 clientData.outputConstraintSpaces().append(space);
 206IGNORE_WARNINGS_END
 207IGNORE_WARNINGS_END
 208 return space;
 209}
 210
187211void JSTestException::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
188212{
189213 auto* thisObject = jsCast<JSTestException*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestException.h

@@class JSTestException : public JSDOMWrapper<TestException> {
5050 }
5151
5252 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 53 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 54 {
 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 56 return nullptr;
 57 return subspaceForImpl(vm);
 58 }
 59 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5360 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5461protected:
5562 JSTestException(JSC::Structure*, JSDOMGlobalObject&, Ref<TestException>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp

2222#include "JSTestGenerateIsReachable.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue jsTestGenerateIsReachableASecretAttribute(JSGlobalObject* lexical
194198 return IDLAttribute<JSTestGenerateIsReachable>::get<jsTestGenerateIsReachableASecretAttributeGetter, CastedThisErrorBehavior::Assert>(*lexicalGlobalObject, thisValue, "aSecretAttribute");
195199}
196200
 201JSC::IsoSubspace* JSTestGenerateIsReachable::subspaceForImpl(JSC::VM& vm)
 202{
 203 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 204 auto& spaces = clientData.subspaces();
 205 if (auto* space = spaces.m_subspaceForTestGenerateIsReachable.get())
 206 return space;
 207 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable>)
 208 spaces.m_subspaceForTestGenerateIsReachable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestGenerateIsReachable);
 209 else
 210 spaces.m_subspaceForTestGenerateIsReachable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestGenerateIsReachable);
 211 auto* space = spaces.m_subspaceForTestGenerateIsReachable.get();
 212IGNORE_WARNINGS_BEGIN("unreachable-code")
 213IGNORE_WARNINGS_BEGIN("tautological-compare")
 214 if (&JSTestGenerateIsReachable::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 215 clientData.outputConstraintSpaces().append(space);
 216IGNORE_WARNINGS_END
 217IGNORE_WARNINGS_END
 218 return space;
 219}
 220
197221void JSTestGenerateIsReachable::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
198222{
199223 auto* thisObject = jsCast<JSTestGenerateIsReachable*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h

@@class JSTestGenerateIsReachable : public JSDOMWrapper<TestGenerateIsReachable> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestGenerateIsReachable(JSC::Structure*, JSDOMGlobalObject&, Ref<TestGenerateIsReachable>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp

2222#include "JSTestGlobalObject.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "DOMWrapperWorld.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

100101#include <JavaScriptCore/FunctionPrototype.h>
101102#include <JavaScriptCore/HeapAnalyzer.h>
102103#include <JavaScriptCore/JSCInlines.h>
 104#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 105#include <JavaScriptCore/SubspaceInlines.h>
103106#include <wtf/GetPtr.h>
104107#include <wtf/PointerPreparations.h>
105108#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestGlobalObjectInstanceFunctionTestFeatureGetSec
27792782
27802783JSC::IsoSubspace* JSTestGlobalObject::subspaceForImpl(JSC::VM& vm)
27812784{
2782  return &static_cast<JSVMClientData*>(vm.clientData)->subspaceForJSTestGlobalObject();
 2785 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 2786 auto& spaces = clientData.subspaces();
 2787 if (auto* space = spaces.m_subspaceForTestGlobalObject.get())
 2788 return space;
 2789 spaces.m_subspaceForTestGlobalObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSTestGlobalObject.get(), JSTestGlobalObject);
 2790 auto* space = spaces.m_subspaceForTestGlobalObject.get();
 2791IGNORE_WARNINGS_BEGIN("unreachable-code")
 2792IGNORE_WARNINGS_BEGIN("tautological-compare")
 2793 if (&JSTestGlobalObject::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 2794 clientData.outputConstraintSpaces().append(space);
 2795IGNORE_WARNINGS_END
 2796IGNORE_WARNINGS_END
 2797 return space;
27832798}
27842799
27852800void JSTestGlobalObject::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)

Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h

@@class JSTestGlobalObject : public JSDOMWrapper<TestGlobalObject> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
52  template<typename, JSC::SubspaceAccess> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm) { return subspaceForImpl(vm); }
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
5358 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5459 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5560public:

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp

2222#include "JSTestIndexedSetterNoIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"
2829#include "JSDOMExceptionHandling.h"
2930#include "JSDOMWrapperCache.h"
3031#include "ScriptExecutionContext.h"
 32#include "WebCoreJSClientData.h"
3133#include <JavaScriptCore/FunctionPrototype.h>
3234#include <JavaScriptCore/HeapAnalyzer.h>
3335#include <JavaScriptCore/JSCInlines.h>
 36#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3437#include <JavaScriptCore/PropertyNameArray.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestIndexedSetterNoIdentifierConstructor(JSGlobalObject* lexicalGlobal
253257 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
254258}
255259
 260JSC::IsoSubspace* JSTestIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)
 261{
 262 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 263 auto& spaces = clientData.subspaces();
 264 if (auto* space = spaces.m_subspaceForTestIndexedSetterNoIdentifier.get())
 265 return space;
 266 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier>)
 267 spaces.m_subspaceForTestIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestIndexedSetterNoIdentifier);
 268 else
 269 spaces.m_subspaceForTestIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestIndexedSetterNoIdentifier);
 270 auto* space = spaces.m_subspaceForTestIndexedSetterNoIdentifier.get();
 271IGNORE_WARNINGS_BEGIN("unreachable-code")
 272IGNORE_WARNINGS_BEGIN("tautological-compare")
 273 if (&JSTestIndexedSetterNoIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 274 clientData.outputConstraintSpaces().append(space);
 275IGNORE_WARNINGS_END
 276IGNORE_WARNINGS_END
 277 return space;
 278}
 279
256280void JSTestIndexedSetterNoIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
257281{
258282 auto* thisObject = jsCast<JSTestIndexedSetterNoIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h

@@class JSTestIndexedSetterNoIdentifier : public JSDOMWrapper<TestIndexedSetterNoI
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp

2222#include "JSTestIndexedSetterThrowingException.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"
2829#include "JSDOMExceptionHandling.h"
2930#include "JSDOMWrapperCache.h"
3031#include "ScriptExecutionContext.h"
 32#include "WebCoreJSClientData.h"
3133#include <JavaScriptCore/FunctionPrototype.h>
3234#include <JavaScriptCore/HeapAnalyzer.h>
3335#include <JavaScriptCore/JSCInlines.h>
 36#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3437#include <JavaScriptCore/PropertyNameArray.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestIndexedSetterThrowingExceptionConstructor(JSGlobalObject* lexicalG
253257 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
254258}
255259
 260JSC::IsoSubspace* JSTestIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm)
 261{
 262 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 263 auto& spaces = clientData.subspaces();
 264 if (auto* space = spaces.m_subspaceForTestIndexedSetterThrowingException.get())
 265 return space;
 266 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException>)
 267 spaces.m_subspaceForTestIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestIndexedSetterThrowingException);
 268 else
 269 spaces.m_subspaceForTestIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestIndexedSetterThrowingException);
 270 auto* space = spaces.m_subspaceForTestIndexedSetterThrowingException.get();
 271IGNORE_WARNINGS_BEGIN("unreachable-code")
 272IGNORE_WARNINGS_BEGIN("tautological-compare")
 273 if (&JSTestIndexedSetterThrowingException::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 274 clientData.outputConstraintSpaces().append(space);
 275IGNORE_WARNINGS_END
 276IGNORE_WARNINGS_END
 277 return space;
 278}
 279
256280void JSTestIndexedSetterThrowingException::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
257281{
258282 auto* thisObject = jsCast<JSTestIndexedSetterThrowingException*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h

@@class JSTestIndexedSetterThrowingException : public JSDOMWrapper<TestIndexedSett
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp

2222#include "JSTestIndexedSetterWithIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertNumbers.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3639#include <JavaScriptCore/PropertyNameArray.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3741#include <wtf/GetPtr.h>
3842#include <wtf/PointerPreparations.h>
3943#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestIndexedSetterWithIdentifierPrototypeFunctionI
286290 return IDLOperation<JSTestIndexedSetterWithIdentifier>::call<jsTestIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody>(*lexicalGlobalObject, *callFrame, "indexedSetter");
287291}
288292
 293JSC::IsoSubspace* JSTestIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)
 294{
 295 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 296 auto& spaces = clientData.subspaces();
 297 if (auto* space = spaces.m_subspaceForTestIndexedSetterWithIdentifier.get())
 298 return space;
 299 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier>)
 300 spaces.m_subspaceForTestIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestIndexedSetterWithIdentifier);
 301 else
 302 spaces.m_subspaceForTestIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestIndexedSetterWithIdentifier);
 303 auto* space = spaces.m_subspaceForTestIndexedSetterWithIdentifier.get();
 304IGNORE_WARNINGS_BEGIN("unreachable-code")
 305IGNORE_WARNINGS_BEGIN("tautological-compare")
 306 if (&JSTestIndexedSetterWithIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 307 clientData.outputConstraintSpaces().append(space);
 308IGNORE_WARNINGS_END
 309IGNORE_WARNINGS_END
 310 return space;
 311}
 312
289313void JSTestIndexedSetterWithIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
290314{
291315 auto* thisObject = jsCast<JSTestIndexedSetterWithIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h

@@class JSTestIndexedSetterWithIdentifier : public JSDOMWrapper<TestIndexedSetterW
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp

2525#include "JSTestInterface.h"
2626
2727#include "ActiveDOMObject.h"
 28#include "DOMIsoSubspaces.h"
2829#include "HTMLNames.h"
2930#include "JSDOMAttribute.h"
3031#include "JSDOMBinding.h"

3839#include "JSTestObj.h"
3940#include "ScriptExecutionContext.h"
4041#include "TestSupplemental.h"
 42#include "WebCoreJSClientData.h"
4143#include <JavaScriptCore/BuiltinNames.h>
4244#include <JavaScriptCore/FunctionPrototype.h>
4345#include <JavaScriptCore/HeapAnalyzer.h>
4446#include <JavaScriptCore/JSCInlines.h>
 47#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 48#include <JavaScriptCore/SubspaceInlines.h>
4549#include <wtf/GetPtr.h>
4650#include <wtf/PointerPreparations.h>
4751#include <wtf/URL.h>

@@JSC::EncodedJSValue JSC_HOST_CALL jsTestInterfacePrototypeFunctionForEach(JSC::J
11101114 return IDLOperation<JSTestInterface>::call<jsTestInterfacePrototypeFunctionForEachCaller>(*lexicalGlobalObject, *callFrame, "forEach");
11111115}
11121116
 1117JSC::IsoSubspace* JSTestInterface::subspaceForImpl(JSC::VM& vm)
 1118{
 1119 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 1120 auto& spaces = clientData.subspaces();
 1121 if (auto* space = spaces.m_subspaceForTestInterface.get())
 1122 return space;
 1123 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface>)
 1124 spaces.m_subspaceForTestInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestInterface);
 1125 else
 1126 spaces.m_subspaceForTestInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestInterface);
 1127 auto* space = spaces.m_subspaceForTestInterface.get();
 1128IGNORE_WARNINGS_BEGIN("unreachable-code")
 1129IGNORE_WARNINGS_BEGIN("tautological-compare")
 1130 if (&JSTestInterface::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 1131 clientData.outputConstraintSpaces().append(space);
 1132IGNORE_WARNINGS_END
 1133IGNORE_WARNINGS_END
 1134 return space;
 1135}
 1136
11131137void JSTestInterface::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
11141138{
11151139 auto* thisObject = jsCast<JSTestInterface*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h

@@class WEBCORE_EXPORT JSTestInterface : public JSDOMWrapper<TestInterface> {
5353 }
5454
5555 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 56 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 57 {
 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 59 return nullptr;
 60 return subspaceForImpl(vm);
 61 }
 62 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5663 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5764
5865 // Custom attributes

Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp

2222#include "JSTestInterfaceLeadingUnderscore.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue jsTestInterfaceLeadingUnderscoreReadonly(JSGlobalObject* lexicalG
184188 return IDLAttribute<JSTestInterfaceLeadingUnderscore>::get<jsTestInterfaceLeadingUnderscoreReadonlyGetter, CastedThisErrorBehavior::Assert>(*lexicalGlobalObject, thisValue, "readonly");
185189}
186190
 191JSC::IsoSubspace* JSTestInterfaceLeadingUnderscore::subspaceForImpl(JSC::VM& vm)
 192{
 193 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 194 auto& spaces = clientData.subspaces();
 195 if (auto* space = spaces.m_subspaceForTestInterfaceLeadingUnderscore.get())
 196 return space;
 197 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore>)
 198 spaces.m_subspaceForTestInterfaceLeadingUnderscore = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestInterfaceLeadingUnderscore);
 199 else
 200 spaces.m_subspaceForTestInterfaceLeadingUnderscore = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestInterfaceLeadingUnderscore);
 201 auto* space = spaces.m_subspaceForTestInterfaceLeadingUnderscore.get();
 202IGNORE_WARNINGS_BEGIN("unreachable-code")
 203IGNORE_WARNINGS_BEGIN("tautological-compare")
 204 if (&JSTestInterfaceLeadingUnderscore::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 205 clientData.outputConstraintSpaces().append(space);
 206IGNORE_WARNINGS_END
 207IGNORE_WARNINGS_END
 208 return space;
 209}
 210
187211void JSTestInterfaceLeadingUnderscore::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
188212{
189213 auto* thisObject = jsCast<JSTestInterfaceLeadingUnderscore*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h

@@class JSTestInterfaceLeadingUnderscore : public JSDOMWrapper<TestInterfaceLeadin
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestInterfaceLeadingUnderscore(JSC::Structure*, JSDOMGlobalObject&, Ref<TestInterfaceLeadingUnderscore>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp

2222#include "JSTestIterable.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertInterface.h"

3132#include "JSDOMWrapperCache.h"
3233#include "JSTestNode.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/BuiltinNames.h>
3537#include <JavaScriptCore/FunctionPrototype.h>
3638#include <JavaScriptCore/HeapAnalyzer.h>
3739#include <JavaScriptCore/JSCInlines.h>
 40#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3842#include <wtf/GetPtr.h>
3943#include <wtf/PointerPreparations.h>
4044#include <wtf/URL.h>

@@JSC::EncodedJSValue JSC_HOST_CALL jsTestIterablePrototypeFunctionForEach(JSC::JS
239243 return IDLOperation<JSTestIterable>::call<jsTestIterablePrototypeFunctionForEachCaller>(*lexicalGlobalObject, *callFrame, "forEach");
240244}
241245
 246JSC::IsoSubspace* JSTestIterable::subspaceForImpl(JSC::VM& vm)
 247{
 248 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 249 auto& spaces = clientData.subspaces();
 250 if (auto* space = spaces.m_subspaceForTestIterable.get())
 251 return space;
 252 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable>)
 253 spaces.m_subspaceForTestIterable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestIterable);
 254 else
 255 spaces.m_subspaceForTestIterable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestIterable);
 256 auto* space = spaces.m_subspaceForTestIterable.get();
 257IGNORE_WARNINGS_BEGIN("unreachable-code")
 258IGNORE_WARNINGS_BEGIN("tautological-compare")
 259 if (&JSTestIterable::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 260 clientData.outputConstraintSpaces().append(space);
 261IGNORE_WARNINGS_END
 262IGNORE_WARNINGS_END
 263 return space;
 264}
 265
242266void JSTestIterable::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
243267{
244268 auto* thisObject = jsCast<JSTestIterable*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h

@@class JSTestIterable : public JSDOMWrapper<TestIterable> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestIterable(JSC::Structure*, JSDOMGlobalObject&, Ref<TestIterable>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp

2121#include "config.h"
2222#include "JSTestJSBuiltinConstructor.h"
2323
 24#include "DOMIsoSubspaces.h"
2425#include "JSDOMAttribute.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMBuiltinConstructor.h"

2829#include "JSDOMOperation.h"
2930#include "JSDOMWrapperCache.h"
3031#include "TestJSBuiltinConstructorBuiltins.h"
 32#include "WebCoreJSClientData.h"
3133#include <JavaScriptCore/FunctionPrototype.h>
3234#include <JavaScriptCore/JSCInlines.h>
 35#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 36#include <JavaScriptCore/SubspaceInlines.h>
3337#include <wtf/GetPtr.h>
3438#include <wtf/PointerPreparations.h>
3539

@@EncodedJSValue JSC_HOST_CALL jsTestJSBuiltinConstructorPrototypeFunctionTestCust
233237 return IDLOperation<JSTestJSBuiltinConstructor>::call<jsTestJSBuiltinConstructorPrototypeFunctionTestCustomFunctionBody>(*lexicalGlobalObject, *callFrame, "testCustomFunction");
234238}
235239
 240JSC::IsoSubspace* JSTestJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm)
 241{
 242 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 243 auto& spaces = clientData.subspaces();
 244 if (auto* space = spaces.m_subspaceForTestJSBuiltinConstructor.get())
 245 return space;
 246 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor>)
 247 spaces.m_subspaceForTestJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestJSBuiltinConstructor);
 248 else
 249 spaces.m_subspaceForTestJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestJSBuiltinConstructor);
 250 auto* space = spaces.m_subspaceForTestJSBuiltinConstructor.get();
 251IGNORE_WARNINGS_BEGIN("unreachable-code")
 252IGNORE_WARNINGS_BEGIN("tautological-compare")
 253 if (&JSTestJSBuiltinConstructor::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 254 clientData.outputConstraintSpaces().append(space);
 255IGNORE_WARNINGS_END
 256IGNORE_WARNINGS_END
 257 return space;
 258}
 259
236260
237261}

Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h

@@class JSTestJSBuiltinConstructor : public JSDOMObject {
4646 }
4747
4848 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 49 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 50 {
 51 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 52 return nullptr;
 53 return subspaceForImpl(vm);
 54 }
 55 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
4956
5057 // Custom attributes
5158 JSC::JSValue testAttributeCustom(JSC::JSGlobalObject&) const;

Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp

2222#include "JSTestMediaQueryListListener.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertCallbacks.h"

3132#include "JSDOMWrapperCache.h"
3233#include "JSMediaQueryListListener.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3741#include <wtf/GetPtr.h>
3842#include <wtf/PointerPreparations.h>
3943#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestMediaQueryListListenerPrototypeFunctionMethod
194198 return IDLOperation<JSTestMediaQueryListListener>::call<jsTestMediaQueryListListenerPrototypeFunctionMethodBody>(*lexicalGlobalObject, *callFrame, "method");
195199}
196200
 201JSC::IsoSubspace* JSTestMediaQueryListListener::subspaceForImpl(JSC::VM& vm)
 202{
 203 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 204 auto& spaces = clientData.subspaces();
 205 if (auto* space = spaces.m_subspaceForTestMediaQueryListListener.get())
 206 return space;
 207 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMediaQueryListListener>)
 208 spaces.m_subspaceForTestMediaQueryListListener = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestMediaQueryListListener);
 209 else
 210 spaces.m_subspaceForTestMediaQueryListListener = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestMediaQueryListListener);
 211 auto* space = spaces.m_subspaceForTestMediaQueryListListener.get();
 212IGNORE_WARNINGS_BEGIN("unreachable-code")
 213IGNORE_WARNINGS_BEGIN("tautological-compare")
 214 if (&JSTestMediaQueryListListener::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 215 clientData.outputConstraintSpaces().append(space);
 216IGNORE_WARNINGS_END
 217IGNORE_WARNINGS_END
 218 return space;
 219}
 220
197221void JSTestMediaQueryListListener::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
198222{
199223 auto* thisObject = jsCast<JSTestMediaQueryListListener*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h

@@class JSTestMediaQueryListListener : public JSDOMWrapper<TestMediaQueryListListe
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestMediaQueryListListener(JSC::Structure*, JSDOMGlobalObject&, Ref<TestMediaQueryListListener>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp

2222#include "JSTestNamedAndIndexedSetterNoIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3538#include <JavaScriptCore/PropertyNameArray.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@bool setJSTestNamedAndIndexedSetterNoIdentifierConstructor(JSGlobalObject* lexic
321325 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
322326}
323327
 328JSC::IsoSubspace* JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)
 329{
 330 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 331 auto& spaces = clientData.subspaces();
 332 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get())
 333 return space;
 334 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier>)
 335 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedAndIndexedSetterNoIdentifier);
 336 else
 337 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedAndIndexedSetterNoIdentifier);
 338 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get();
 339IGNORE_WARNINGS_BEGIN("unreachable-code")
 340IGNORE_WARNINGS_BEGIN("tautological-compare")
 341 if (&JSTestNamedAndIndexedSetterNoIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 342 clientData.outputConstraintSpaces().append(space);
 343IGNORE_WARNINGS_END
 344IGNORE_WARNINGS_END
 345 return space;
 346}
 347
324348void JSTestNamedAndIndexedSetterNoIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
325349{
326350 auto* thisObject = jsCast<JSTestNamedAndIndexedSetterNoIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h

@@class JSTestNamedAndIndexedSetterNoIdentifier : public JSDOMWrapper<TestNamedAnd
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp

2222#include "JSTestNamedAndIndexedSetterThrowingException.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3538#include <JavaScriptCore/PropertyNameArray.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@bool setJSTestNamedAndIndexedSetterThrowingExceptionConstructor(JSGlobalObject*
321325 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
322326}
323327
 328JSC::IsoSubspace* JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm)
 329{
 330 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 331 auto& spaces = clientData.subspaces();
 332 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get())
 333 return space;
 334 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException>)
 335 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedAndIndexedSetterThrowingException);
 336 else
 337 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedAndIndexedSetterThrowingException);
 338 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get();
 339IGNORE_WARNINGS_BEGIN("unreachable-code")
 340IGNORE_WARNINGS_BEGIN("tautological-compare")
 341 if (&JSTestNamedAndIndexedSetterThrowingException::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 342 clientData.outputConstraintSpaces().append(space);
 343IGNORE_WARNINGS_END
 344IGNORE_WARNINGS_END
 345 return space;
 346}
 347
324348void JSTestNamedAndIndexedSetterThrowingException::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
325349{
326350 auto* thisObject = jsCast<JSTestNamedAndIndexedSetterThrowingException*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h

@@class JSTestNamedAndIndexedSetterThrowingException : public JSDOMWrapper<TestNam
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp

2222#include "JSTestNamedAndIndexedSetterWithIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3740#include <JavaScriptCore/PropertyNameArray.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3842#include <wtf/GetPtr.h>
3943#include <wtf/PointerPreparations.h>
4044#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedAndIndexedSetterWithIdentifierPrototypeF
377381 return IDLOperation<JSTestNamedAndIndexedSetterWithIdentifier>::call<jsTestNamedAndIndexedSetterWithIdentifierPrototypeFunctionIndexedSetterBody>(*lexicalGlobalObject, *callFrame, "indexedSetter");
378382}
379383
 384JSC::IsoSubspace* JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)
 385{
 386 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 387 auto& spaces = clientData.subspaces();
 388 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get())
 389 return space;
 390 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier>)
 391 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedAndIndexedSetterWithIdentifier);
 392 else
 393 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedAndIndexedSetterWithIdentifier);
 394 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get();
 395IGNORE_WARNINGS_BEGIN("unreachable-code")
 396IGNORE_WARNINGS_BEGIN("tautological-compare")
 397 if (&JSTestNamedAndIndexedSetterWithIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 398 clientData.outputConstraintSpaces().append(space);
 399IGNORE_WARNINGS_END
 400IGNORE_WARNINGS_END
 401 return space;
 402}
 403
380404void JSTestNamedAndIndexedSetterWithIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
381405{
382406 auto* thisObject = jsCast<JSTestNamedAndIndexedSetterWithIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h

@@class JSTestNamedAndIndexedSetterWithIdentifier : public JSDOMWrapper<TestNamedA
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp

2222#include "JSTestNamedConstructor.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertInterface.h"

3031#include "JSDOMNamedConstructor.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@bool setJSTestNamedConstructorConstructor(JSGlobalObject* lexicalGlobalObject, E
207211 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
208212}
209213
 214JSC::IsoSubspace* JSTestNamedConstructor::subspaceForImpl(JSC::VM& vm)
 215{
 216 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 217 auto& spaces = clientData.subspaces();
 218 if (auto* space = spaces.m_subspaceForTestNamedConstructor.get())
 219 return space;
 220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedConstructor>)
 221 spaces.m_subspaceForTestNamedConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedConstructor);
 222 else
 223 spaces.m_subspaceForTestNamedConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedConstructor);
 224 auto* space = spaces.m_subspaceForTestNamedConstructor.get();
 225IGNORE_WARNINGS_BEGIN("unreachable-code")
 226IGNORE_WARNINGS_BEGIN("tautological-compare")
 227 if (&JSTestNamedConstructor::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 228 clientData.outputConstraintSpaces().append(space);
 229IGNORE_WARNINGS_END
 230IGNORE_WARNINGS_END
 231 return space;
 232}
 233
210234void JSTestNamedConstructor::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
211235{
212236 auto* thisObject = jsCast<JSTestNamedConstructor*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h

@@class JSTestNamedConstructor : public JSDOMWrapper<TestNamedConstructor> {
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5252 static JSC::JSValue getNamedConstructor(JSC::VM&, JSC::JSGlobalObject*);
 53 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 54 {
 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 56 return nullptr;
 57 return subspaceForImpl(vm);
 58 }
 59 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5360 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5461protected:
5562 JSTestNamedConstructor(JSC::Structure*, JSDOMGlobalObject&, Ref<TestNamedConstructor>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp

2222#include "JSTestNamedDeleterNoIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedDeleterNoIdentifierConstructor(JSGlobalObject* lexicalGlobalO
235239 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
236240}
237241
 242JSC::IsoSubspace* JSTestNamedDeleterNoIdentifier::subspaceForImpl(JSC::VM& vm)
 243{
 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 245 auto& spaces = clientData.subspaces();
 246 if (auto* space = spaces.m_subspaceForTestNamedDeleterNoIdentifier.get())
 247 return space;
 248 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier>)
 249 spaces.m_subspaceForTestNamedDeleterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedDeleterNoIdentifier);
 250 else
 251 spaces.m_subspaceForTestNamedDeleterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedDeleterNoIdentifier);
 252 auto* space = spaces.m_subspaceForTestNamedDeleterNoIdentifier.get();
 253IGNORE_WARNINGS_BEGIN("unreachable-code")
 254IGNORE_WARNINGS_BEGIN("tautological-compare")
 255 if (&JSTestNamedDeleterNoIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 256 clientData.outputConstraintSpaces().append(space);
 257IGNORE_WARNINGS_END
 258IGNORE_WARNINGS_END
 259 return space;
 260}
 261
238262void JSTestNamedDeleterNoIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
239263{
240264 auto* thisObject = jsCast<JSTestNamedDeleterNoIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h

@@class JSTestNamedDeleterNoIdentifier : public JSDOMWrapper<TestNamedDeleterNoIde
5454 }
5555
5656 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 57 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 58 {
 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 60 return nullptr;
 61 return subspaceForImpl(vm);
 62 }
 63 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5764 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5865public:
5966 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp

2222#include "JSTestNamedDeleterThrowingException.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedDeleterThrowingExceptionConstructor(JSGlobalObject* lexicalGl
249253 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
250254}
251255
 256JSC::IsoSubspace* JSTestNamedDeleterThrowingException::subspaceForImpl(JSC::VM& vm)
 257{
 258 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 259 auto& spaces = clientData.subspaces();
 260 if (auto* space = spaces.m_subspaceForTestNamedDeleterThrowingException.get())
 261 return space;
 262 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException>)
 263 spaces.m_subspaceForTestNamedDeleterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedDeleterThrowingException);
 264 else
 265 spaces.m_subspaceForTestNamedDeleterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedDeleterThrowingException);
 266 auto* space = spaces.m_subspaceForTestNamedDeleterThrowingException.get();
 267IGNORE_WARNINGS_BEGIN("unreachable-code")
 268IGNORE_WARNINGS_BEGIN("tautological-compare")
 269 if (&JSTestNamedDeleterThrowingException::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 270 clientData.outputConstraintSpaces().append(space);
 271IGNORE_WARNINGS_END
 272IGNORE_WARNINGS_END
 273 return space;
 274}
 275
252276void JSTestNamedDeleterThrowingException::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
253277{
254278 auto* thisObject = jsCast<JSTestNamedDeleterThrowingException*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h

@@class JSTestNamedDeleterThrowingException : public JSDOMWrapper<TestNamedDeleter
5454 }
5555
5656 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 57 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 58 {
 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 60 return nullptr;
 61 return subspaceForImpl(vm);
 62 }
 63 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5764 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5865public:
5966 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp

2222#include "JSTestNamedDeleterWithIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedDeleterWithIdentifierPrototypeFunctionNa
267271 return IDLOperation<JSTestNamedDeleterWithIdentifier>::call<jsTestNamedDeleterWithIdentifierPrototypeFunctionNamedDeleterBody>(*lexicalGlobalObject, *callFrame, "namedDeleter");
268272}
269273
 274JSC::IsoSubspace* JSTestNamedDeleterWithIdentifier::subspaceForImpl(JSC::VM& vm)
 275{
 276 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 277 auto& spaces = clientData.subspaces();
 278 if (auto* space = spaces.m_subspaceForTestNamedDeleterWithIdentifier.get())
 279 return space;
 280 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier>)
 281 spaces.m_subspaceForTestNamedDeleterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedDeleterWithIdentifier);
 282 else
 283 spaces.m_subspaceForTestNamedDeleterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedDeleterWithIdentifier);
 284 auto* space = spaces.m_subspaceForTestNamedDeleterWithIdentifier.get();
 285IGNORE_WARNINGS_BEGIN("unreachable-code")
 286IGNORE_WARNINGS_BEGIN("tautological-compare")
 287 if (&JSTestNamedDeleterWithIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 288 clientData.outputConstraintSpaces().append(space);
 289IGNORE_WARNINGS_END
 290IGNORE_WARNINGS_END
 291 return space;
 292}
 293
270294void JSTestNamedDeleterWithIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
271295{
272296 auto* thisObject = jsCast<JSTestNamedDeleterWithIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h

@@class JSTestNamedDeleterWithIdentifier : public JSDOMWrapper<TestNamedDeleterWit
5454 }
5555
5656 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 57 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 58 {
 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 60 return nullptr;
 61 return subspaceForImpl(vm);
 62 }
 63 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5764 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5865public:
5966 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp

2222#include "JSTestNamedDeleterWithIndexedGetter.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3538#include <JavaScriptCore/PropertyNameArray.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@bool setJSTestNamedDeleterWithIndexedGetterConstructor(JSGlobalObject* lexicalGl
251255 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
252256}
253257
 258JSC::IsoSubspace* JSTestNamedDeleterWithIndexedGetter::subspaceForImpl(JSC::VM& vm)
 259{
 260 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 261 auto& spaces = clientData.subspaces();
 262 if (auto* space = spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get())
 263 return space;
 264 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter>)
 265 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedDeleterWithIndexedGetter);
 266 else
 267 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedDeleterWithIndexedGetter);
 268 auto* space = spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get();
 269IGNORE_WARNINGS_BEGIN("unreachable-code")
 270IGNORE_WARNINGS_BEGIN("tautological-compare")
 271 if (&JSTestNamedDeleterWithIndexedGetter::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 272 clientData.outputConstraintSpaces().append(space);
 273IGNORE_WARNINGS_END
 274IGNORE_WARNINGS_END
 275 return space;
 276}
 277
254278void JSTestNamedDeleterWithIndexedGetter::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
255279{
256280 auto* thisObject = jsCast<JSTestNamedDeleterWithIndexedGetter*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h

@@class JSTestNamedDeleterWithIndexedGetter : public JSDOMWrapper<TestNamedDeleter
5454 }
5555
5656 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 57 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 58 {
 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 60 return nullptr;
 61 return subspaceForImpl(vm);
 62 }
 63 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5764 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5865public:
5966 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp

2222#include "JSTestNamedGetterCallWith.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedGetterCallWithConstructor(JSGlobalObject* lexicalGlobalObject
213217 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
214218}
215219
 220JSC::IsoSubspace* JSTestNamedGetterCallWith::subspaceForImpl(JSC::VM& vm)
 221{
 222 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 223 auto& spaces = clientData.subspaces();
 224 if (auto* space = spaces.m_subspaceForTestNamedGetterCallWith.get())
 225 return space;
 226 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith>)
 227 spaces.m_subspaceForTestNamedGetterCallWith = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedGetterCallWith);
 228 else
 229 spaces.m_subspaceForTestNamedGetterCallWith = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedGetterCallWith);
 230 auto* space = spaces.m_subspaceForTestNamedGetterCallWith.get();
 231IGNORE_WARNINGS_BEGIN("unreachable-code")
 232IGNORE_WARNINGS_BEGIN("tautological-compare")
 233 if (&JSTestNamedGetterCallWith::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 234 clientData.outputConstraintSpaces().append(space);
 235IGNORE_WARNINGS_END
 236IGNORE_WARNINGS_END
 237 return space;
 238}
 239
216240void JSTestNamedGetterCallWith::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
217241{
218242 auto* thisObject = jsCast<JSTestNamedGetterCallWith*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.h

@@class JSTestNamedGetterCallWith : public JSDOMWrapper<TestNamedGetterCallWith> {
5252 }
5353
5454 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 55 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 56 {
 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 58 return nullptr;
 59 return subspaceForImpl(vm);
 60 }
 61 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5562 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5663public:
5764 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp

2222#include "JSTestNamedGetterNoIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedGetterNoIdentifierConstructor(JSGlobalObject* lexicalGlobalOb
213217 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
214218}
215219
 220JSC::IsoSubspace* JSTestNamedGetterNoIdentifier::subspaceForImpl(JSC::VM& vm)
 221{
 222 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 223 auto& spaces = clientData.subspaces();
 224 if (auto* space = spaces.m_subspaceForTestNamedGetterNoIdentifier.get())
 225 return space;
 226 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier>)
 227 spaces.m_subspaceForTestNamedGetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedGetterNoIdentifier);
 228 else
 229 spaces.m_subspaceForTestNamedGetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedGetterNoIdentifier);
 230 auto* space = spaces.m_subspaceForTestNamedGetterNoIdentifier.get();
 231IGNORE_WARNINGS_BEGIN("unreachable-code")
 232IGNORE_WARNINGS_BEGIN("tautological-compare")
 233 if (&JSTestNamedGetterNoIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 234 clientData.outputConstraintSpaces().append(space);
 235IGNORE_WARNINGS_END
 236IGNORE_WARNINGS_END
 237 return space;
 238}
 239
216240void JSTestNamedGetterNoIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
217241{
218242 auto* thisObject = jsCast<JSTestNamedGetterNoIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h

@@class JSTestNamedGetterNoIdentifier : public JSDOMWrapper<TestNamedGetterNoIdent
5252 }
5353
5454 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 55 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 56 {
 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 58 return nullptr;
 59 return subspaceForImpl(vm);
 60 }
 61 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5562 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5663public:
5764 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp

2222#include "JSTestNamedGetterWithIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedGetterWithIdentifierPrototypeFunctionGet
242246 return IDLOperation<JSTestNamedGetterWithIdentifier>::call<jsTestNamedGetterWithIdentifierPrototypeFunctionGetterNameBody>(*lexicalGlobalObject, *callFrame, "getterName");
243247}
244248
 249JSC::IsoSubspace* JSTestNamedGetterWithIdentifier::subspaceForImpl(JSC::VM& vm)
 250{
 251 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 252 auto& spaces = clientData.subspaces();
 253 if (auto* space = spaces.m_subspaceForTestNamedGetterWithIdentifier.get())
 254 return space;
 255 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier>)
 256 spaces.m_subspaceForTestNamedGetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedGetterWithIdentifier);
 257 else
 258 spaces.m_subspaceForTestNamedGetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedGetterWithIdentifier);
 259 auto* space = spaces.m_subspaceForTestNamedGetterWithIdentifier.get();
 260IGNORE_WARNINGS_BEGIN("unreachable-code")
 261IGNORE_WARNINGS_BEGIN("tautological-compare")
 262 if (&JSTestNamedGetterWithIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 263 clientData.outputConstraintSpaces().append(space);
 264IGNORE_WARNINGS_END
 265IGNORE_WARNINGS_END
 266 return space;
 267}
 268
245269void JSTestNamedGetterWithIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
246270{
247271 auto* thisObject = jsCast<JSTestNamedGetterWithIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h

@@class JSTestNamedGetterWithIdentifier : public JSDOMWrapper<TestNamedGetterWithI
5252 }
5353
5454 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 55 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 56 {
 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 58 return nullptr;
 59 return subspaceForImpl(vm);
 60 }
 61 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5562 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5663public:
5764 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp

2222#include "JSTestNamedSetterNoIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedSetterNoIdentifierConstructor(JSGlobalObject* lexicalGlobalOb
276280 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
277281}
278282
 283JSC::IsoSubspace* JSTestNamedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)
 284{
 285 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 286 auto& spaces = clientData.subspaces();
 287 if (auto* space = spaces.m_subspaceForTestNamedSetterNoIdentifier.get())
 288 return space;
 289 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier>)
 290 spaces.m_subspaceForTestNamedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterNoIdentifier);
 291 else
 292 spaces.m_subspaceForTestNamedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterNoIdentifier);
 293 auto* space = spaces.m_subspaceForTestNamedSetterNoIdentifier.get();
 294IGNORE_WARNINGS_BEGIN("unreachable-code")
 295IGNORE_WARNINGS_BEGIN("tautological-compare")
 296 if (&JSTestNamedSetterNoIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 297 clientData.outputConstraintSpaces().append(space);
 298IGNORE_WARNINGS_END
 299IGNORE_WARNINGS_END
 300 return space;
 301}
 302
279303void JSTestNamedSetterNoIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
280304{
281305 auto* thisObject = jsCast<JSTestNamedSetterNoIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h

@@class JSTestNamedSetterNoIdentifier : public JSDOMWrapper<TestNamedSetterNoIdent
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp

2222#include "JSTestNamedSetterThrowingException.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedSetterThrowingExceptionConstructor(JSGlobalObject* lexicalGlo
276280 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
277281}
278282
 283JSC::IsoSubspace* JSTestNamedSetterThrowingException::subspaceForImpl(JSC::VM& vm)
 284{
 285 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 286 auto& spaces = clientData.subspaces();
 287 if (auto* space = spaces.m_subspaceForTestNamedSetterThrowingException.get())
 288 return space;
 289 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException>)
 290 spaces.m_subspaceForTestNamedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterThrowingException);
 291 else
 292 spaces.m_subspaceForTestNamedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterThrowingException);
 293 auto* space = spaces.m_subspaceForTestNamedSetterThrowingException.get();
 294IGNORE_WARNINGS_BEGIN("unreachable-code")
 295IGNORE_WARNINGS_BEGIN("tautological-compare")
 296 if (&JSTestNamedSetterThrowingException::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 297 clientData.outputConstraintSpaces().append(space);
 298IGNORE_WARNINGS_END
 299IGNORE_WARNINGS_END
 300 return space;
 301}
 302
279303void JSTestNamedSetterThrowingException::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
280304{
281305 auto* thisObject = jsCast<JSTestNamedSetterThrowingException*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h

@@class JSTestNamedSetterThrowingException : public JSDOMWrapper<TestNamedSetterTh
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp

2222#include "JSTestNamedSetterWithIdentifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedSetterWithIdentifierPrototypeFunctionNam
308312 return IDLOperation<JSTestNamedSetterWithIdentifier>::call<jsTestNamedSetterWithIdentifierPrototypeFunctionNamedSetterBody>(*lexicalGlobalObject, *callFrame, "namedSetter");
309313}
310314
 315JSC::IsoSubspace* JSTestNamedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)
 316{
 317 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 318 auto& spaces = clientData.subspaces();
 319 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIdentifier.get())
 320 return space;
 321 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier>)
 322 spaces.m_subspaceForTestNamedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithIdentifier);
 323 else
 324 spaces.m_subspaceForTestNamedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithIdentifier);
 325 auto* space = spaces.m_subspaceForTestNamedSetterWithIdentifier.get();
 326IGNORE_WARNINGS_BEGIN("unreachable-code")
 327IGNORE_WARNINGS_BEGIN("tautological-compare")
 328 if (&JSTestNamedSetterWithIdentifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 329 clientData.outputConstraintSpaces().append(space);
 330IGNORE_WARNINGS_END
 331IGNORE_WARNINGS_END
 332 return space;
 333}
 334
311335void JSTestNamedSetterWithIdentifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
312336{
313337 auto* thisObject = jsCast<JSTestNamedSetterWithIdentifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h

@@class JSTestNamedSetterWithIdentifier : public JSDOMWrapper<TestNamedSetterWithI
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp

2222#include "JSTestNamedSetterWithIndexedGetter.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3740#include <JavaScriptCore/PropertyNameArray.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3842#include <wtf/GetPtr.h>
3943#include <wtf/PointerPreparations.h>
4044#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedSetterWithIndexedGetterPrototypeFunction
351355 return IDLOperation<JSTestNamedSetterWithIndexedGetter>::call<jsTestNamedSetterWithIndexedGetterPrototypeFunctionIndexedSetterBody>(*lexicalGlobalObject, *callFrame, "indexedSetter");
352356}
353357
 358JSC::IsoSubspace* JSTestNamedSetterWithIndexedGetter::subspaceForImpl(JSC::VM& vm)
 359{
 360 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 361 auto& spaces = clientData.subspaces();
 362 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get())
 363 return space;
 364 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter>)
 365 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithIndexedGetter);
 366 else
 367 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithIndexedGetter);
 368 auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get();
 369IGNORE_WARNINGS_BEGIN("unreachable-code")
 370IGNORE_WARNINGS_BEGIN("tautological-compare")
 371 if (&JSTestNamedSetterWithIndexedGetter::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 372 clientData.outputConstraintSpaces().append(space);
 373IGNORE_WARNINGS_END
 374IGNORE_WARNINGS_END
 375 return space;
 376}
 377
354378void JSTestNamedSetterWithIndexedGetter::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
355379{
356380 auto* thisObject = jsCast<JSTestNamedSetterWithIndexedGetter*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h

@@class JSTestNamedSetterWithIndexedGetter : public JSDOMWrapper<TestNamedSetterWi
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp

2222#include "JSTestNamedSetterWithIndexedGetterAndSetter.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3740#include <JavaScriptCore/PropertyNameArray.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3842#include <wtf/GetPtr.h>
3943#include <wtf/PointerPreparations.h>
4044#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedSetterWithIndexedGetterAndSetterPrototyp
403407 return IDLOperation<JSTestNamedSetterWithIndexedGetterAndSetter>::call<jsTestNamedSetterWithIndexedGetterAndSetterPrototypeFunctionIndexedSetterOverloadDispatcher>(*lexicalGlobalObject, *callFrame, "indexedSetter");
404408}
405409
 410JSC::IsoSubspace* JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl(JSC::VM& vm)
 411{
 412 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 413 auto& spaces = clientData.subspaces();
 414 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get())
 415 return space;
 416 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter>)
 417 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithIndexedGetterAndSetter);
 418 else
 419 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithIndexedGetterAndSetter);
 420 auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get();
 421IGNORE_WARNINGS_BEGIN("unreachable-code")
 422IGNORE_WARNINGS_BEGIN("tautological-compare")
 423 if (&JSTestNamedSetterWithIndexedGetterAndSetter::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 424 clientData.outputConstraintSpaces().append(space);
 425IGNORE_WARNINGS_END
 426IGNORE_WARNINGS_END
 427 return space;
 428}
 429
406430void JSTestNamedSetterWithIndexedGetterAndSetter::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
407431{
408432 auto* thisObject = jsCast<JSTestNamedSetterWithIndexedGetterAndSetter*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h

@@class JSTestNamedSetterWithIndexedGetterAndSetter : public JSDOMWrapper<TestName
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp

2222#include "JSTestNamedSetterWithOverrideBuiltins.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

2930#include "JSDOMExceptionHandling.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@bool setJSTestNamedSetterWithOverrideBuiltinsConstructor(JSGlobalObject* lexical
263267 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
264268}
265269
 270JSC::IsoSubspace* JSTestNamedSetterWithOverrideBuiltins::subspaceForImpl(JSC::VM& vm)
 271{
 272 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 273 auto& spaces = clientData.subspaces();
 274 if (auto* space = spaces.m_subspaceForTestNamedSetterWithOverrideBuiltins.get())
 275 return space;
 276 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithOverrideBuiltins>)
 277 spaces.m_subspaceForTestNamedSetterWithOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithOverrideBuiltins);
 278 else
 279 spaces.m_subspaceForTestNamedSetterWithOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithOverrideBuiltins);
 280 auto* space = spaces.m_subspaceForTestNamedSetterWithOverrideBuiltins.get();
 281IGNORE_WARNINGS_BEGIN("unreachable-code")
 282IGNORE_WARNINGS_BEGIN("tautological-compare")
 283 if (&JSTestNamedSetterWithOverrideBuiltins::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 284 clientData.outputConstraintSpaces().append(space);
 285IGNORE_WARNINGS_END
 286IGNORE_WARNINGS_END
 287 return space;
 288}
 289
266290void JSTestNamedSetterWithOverrideBuiltins::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
267291{
268292 auto* thisObject = jsCast<JSTestNamedSetterWithOverrideBuiltins*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h

@@class JSTestNamedSetterWithOverrideBuiltins : public JSDOMWrapper<TestNamedSette
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpure | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp

2222#include "JSTestNamedSetterWithUnforgableProperties.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3741#include <wtf/GetPtr.h>
3842#include <wtf/PointerPreparations.h>
3943#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedSetterWithUnforgablePropertiesInstanceFu
346350 return IDLOperation<JSTestNamedSetterWithUnforgableProperties>::call<jsTestNamedSetterWithUnforgablePropertiesInstanceFunctionUnforgeableOperationBody>(*lexicalGlobalObject, *callFrame, "unforgeableOperation");
347351}
348352
 353JSC::IsoSubspace* JSTestNamedSetterWithUnforgableProperties::subspaceForImpl(JSC::VM& vm)
 354{
 355 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 356 auto& spaces = clientData.subspaces();
 357 if (auto* space = spaces.m_subspaceForTestNamedSetterWithUnforgableProperties.get())
 358 return space;
 359 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithUnforgableProperties>)
 360 spaces.m_subspaceForTestNamedSetterWithUnforgableProperties = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithUnforgableProperties);
 361 else
 362 spaces.m_subspaceForTestNamedSetterWithUnforgableProperties = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithUnforgableProperties);
 363 auto* space = spaces.m_subspaceForTestNamedSetterWithUnforgableProperties.get();
 364IGNORE_WARNINGS_BEGIN("unreachable-code")
 365IGNORE_WARNINGS_BEGIN("tautological-compare")
 366 if (&JSTestNamedSetterWithUnforgableProperties::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 367 clientData.outputConstraintSpaces().append(space);
 368IGNORE_WARNINGS_END
 369IGNORE_WARNINGS_END
 370 return space;
 371}
 372
349373void JSTestNamedSetterWithUnforgableProperties::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
350374{
351375 auto* thisObject = jsCast<JSTestNamedSetterWithUnforgableProperties*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h

@@class JSTestNamedSetterWithUnforgableProperties : public JSDOMWrapper<TestNamedS
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpureForPropertyAbsence | JSC::HasStaticPropertyTable | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp

2222#include "JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

3132#include "JSDOMOperation.h"
3233#include "JSDOMWrapperCache.h"
3334#include "ScriptExecutionContext.h"
 35#include "WebCoreJSClientData.h"
3436#include <JavaScriptCore/FunctionPrototype.h>
3537#include <JavaScriptCore/HeapAnalyzer.h>
3638#include <JavaScriptCore/JSCInlines.h>
 39#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 40#include <JavaScriptCore/SubspaceInlines.h>
3741#include <wtf/GetPtr.h>
3842#include <wtf/PointerPreparations.h>
3943#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNamedSetterWithUnforgablePropertiesAndOverrid
333337 return IDLOperation<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::call<jsTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsInstanceFunctionUnforgeableOperationBody>(*lexicalGlobalObject, *callFrame, "unforgeableOperation");
334338}
335339
 340JSC::IsoSubspace* JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::subspaceForImpl(JSC::VM& vm)
 341{
 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 343 auto& spaces = clientData.subspaces();
 344 if (auto* space = spaces.m_subspaceForTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.get())
 345 return space;
 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>)
 347 spaces.m_subspaceForTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins);
 348 else
 349 spaces.m_subspaceForTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins);
 350 auto* space = spaces.m_subspaceForTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.get();
 351IGNORE_WARNINGS_BEGIN("unreachable-code")
 352IGNORE_WARNINGS_BEGIN("tautological-compare")
 353 if (&JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 354 clientData.outputConstraintSpaces().append(space);
 355IGNORE_WARNINGS_END
 356IGNORE_WARNINGS_END
 357 return space;
 358}
 359
336360void JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
337361{
338362 auto* thisObject = jsCast<JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h

@@class JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins : public JSDO
5555 }
5656
5757 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 58 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 59 {
 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 61 return nullptr;
 62 return subspaceForImpl(vm);
 63 }
 64 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5966public:
6067 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpure | JSC::HasStaticPropertyTable | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp

2222#include "JSTestNode.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructor.h"

3637#include "JSTestNode.h"
3738#include "RuntimeEnabledFeatures.h"
3839#include "ScriptExecutionContext.h"
 40#include "WebCoreJSClientData.h"
3941#include <JavaScriptCore/BuiltinNames.h>
4042#include <JavaScriptCore/HeapAnalyzer.h>
4143#include <JavaScriptCore/JSCInlines.h>
 44#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
4245#include <JavaScriptCore/ObjectConstructor.h>
 46#include <JavaScriptCore/SubspaceInlines.h>
4347#include <wtf/GetPtr.h>
4448#include <wtf/PointerPreparations.h>
4549#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestNodePrototypeFunctionToJSON(JSGlobalObject* l
443447 return IDLOperation<JSTestNode>::call<jsTestNodePrototypeFunctionToJSONBody>(*lexicalGlobalObject, *callFrame, "toJSON");
444448}
445449
 450JSC::IsoSubspace* JSTestNode::subspaceForImpl(JSC::VM& vm)
 451{
 452 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 453 auto& spaces = clientData.subspaces();
 454 if (auto* space = spaces.m_subspaceForTestNode.get())
 455 return space;
 456 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode>)
 457 spaces.m_subspaceForTestNode = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestNode);
 458 else
 459 spaces.m_subspaceForTestNode = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestNode);
 460 auto* space = spaces.m_subspaceForTestNode.get();
 461IGNORE_WARNINGS_BEGIN("unreachable-code")
 462IGNORE_WARNINGS_BEGIN("tautological-compare")
 463 if (&JSTestNode::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 464 clientData.outputConstraintSpaces().append(space);
 465IGNORE_WARNINGS_END
 466IGNORE_WARNINGS_END
 467 return space;
 468}
 469
446470void JSTestNode::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
447471{
448472 auto* thisObject = jsCast<JSTestNode*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestNode.h

@@class WEBCORE_EXPORT JSTestNode : public JSNode {
4949
5050 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5151 static JSC::JSObject* serialize(JSC::JSGlobalObject&, JSTestNode& thisObject, JSDOMGlobalObject&, JSC::ThrowScope&);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestNode& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp

2222#include "JSTestObj.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "DOMPromiseProxy.h"
2627#include "DOMWindow.h"
2728#include "DOMWrapperWorld.h"

8990#include <JavaScriptCore/IteratorOperations.h>
9091#include <JavaScriptCore/JSArray.h>
9192#include <JavaScriptCore/JSCInlines.h>
 93#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
9294#include <JavaScriptCore/JSString.h>
9395#include <JavaScriptCore/ObjectConstructor.h>
9496#include <JavaScriptCore/PropertyNameArray.h>
 97#include <JavaScriptCore/SubspaceInlines.h>
9598#include <wtf/GetPtr.h>
9699#include <wtf/PointerPreparations.h>
97100#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionToJSON(JSGlobalObject* le
89498952 return IDLOperation<JSTestObj>::call<jsTestObjPrototypeFunctionToJSONBody>(*lexicalGlobalObject, *callFrame, "toJSON");
89508953}
89518954
 8955JSC::IsoSubspace* JSTestObj::subspaceForImpl(JSC::VM& vm)
 8956{
 8957 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 8958 auto& spaces = clientData.subspaces();
 8959 if (auto* space = spaces.m_subspaceForTestObj.get())
 8960 return space;
 8961 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj>)
 8962 spaces.m_subspaceForTestObj = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestObj);
 8963 else
 8964 spaces.m_subspaceForTestObj = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestObj);
 8965 auto* space = spaces.m_subspaceForTestObj.get();
 8966IGNORE_WARNINGS_BEGIN("unreachable-code")
 8967IGNORE_WARNINGS_BEGIN("tautological-compare")
 8968 if (&JSTestObj::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 8969 clientData.outputConstraintSpaces().append(space);
 8970IGNORE_WARNINGS_END
 8971IGNORE_WARNINGS_END
 8972 return space;
 8973}
 8974
89528975void JSTestObj::visitChildren(JSCell* cell, SlotVisitor& visitor)
89538976{
89548977 auto* thisObject = jsCast<JSTestObj*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestObj.h

@@class JSTestObj : public JSDOMWrapper<TestObj> {
6363#if ENABLE(CONDITION)
6464 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute3;
6565#endif
 66 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 67 {
 68 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 69 return nullptr;
 70 return subspaceForImpl(vm);
 71 }
 72 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
6673 static void visitChildren(JSCell*, JSC::SlotVisitor&);
6774
6875 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);

Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp

2222#include "JSTestOverloadedConstructors.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSBlob.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructor.h"

3334#include "JSDOMExceptionHandling.h"
3435#include "JSDOMWrapperCache.h"
3536#include "ScriptExecutionContext.h"
 37#include "WebCoreJSClientData.h"
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@bool setJSTestOverloadedConstructorsConstructor(JSGlobalObject* lexicalGlobalObj
266270 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
267271}
268272
 273JSC::IsoSubspace* JSTestOverloadedConstructors::subspaceForImpl(JSC::VM& vm)
 274{
 275 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 276 auto& spaces = clientData.subspaces();
 277 if (auto* space = spaces.m_subspaceForTestOverloadedConstructors.get())
 278 return space;
 279 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors>)
 280 spaces.m_subspaceForTestOverloadedConstructors = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestOverloadedConstructors);
 281 else
 282 spaces.m_subspaceForTestOverloadedConstructors = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestOverloadedConstructors);
 283 auto* space = spaces.m_subspaceForTestOverloadedConstructors.get();
 284IGNORE_WARNINGS_BEGIN("unreachable-code")
 285IGNORE_WARNINGS_BEGIN("tautological-compare")
 286 if (&JSTestOverloadedConstructors::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 287 clientData.outputConstraintSpaces().append(space);
 288IGNORE_WARNINGS_END
 289IGNORE_WARNINGS_END
 290 return space;
 291}
 292
269293void JSTestOverloadedConstructors::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
270294{
271295 auto* thisObject = jsCast<JSTestOverloadedConstructors*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h

@@class JSTestOverloadedConstructors : public JSDOMWrapper<TestOverloadedConstruct
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestOverloadedConstructors(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOverloadedConstructors>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp

2222#include "JSTestOverloadedConstructorsWithSequence.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructor.h"
2728#include "JSDOMConvertInterface.h"

3031#include "JSDOMExceptionHandling.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/IteratorOperations.h>
3638#include <JavaScriptCore/JSArray.h>
3739#include <JavaScriptCore/JSCInlines.h>
 40#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 41#include <JavaScriptCore/SubspaceInlines.h>
3842#include <wtf/GetPtr.h>
3943#include <wtf/PointerPreparations.h>
4044#include <wtf/URL.h>

@@bool setJSTestOverloadedConstructorsWithSequenceConstructor(JSGlobalObject* lexi
216220 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
217221}
218222
 223JSC::IsoSubspace* JSTestOverloadedConstructorsWithSequence::subspaceForImpl(JSC::VM& vm)
 224{
 225 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 226 auto& spaces = clientData.subspaces();
 227 if (auto* space = spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get())
 228 return space;
 229 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence>)
 230 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestOverloadedConstructorsWithSequence);
 231 else
 232 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestOverloadedConstructorsWithSequence);
 233 auto* space = spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get();
 234IGNORE_WARNINGS_BEGIN("unreachable-code")
 235IGNORE_WARNINGS_BEGIN("tautological-compare")
 236 if (&JSTestOverloadedConstructorsWithSequence::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 237 clientData.outputConstraintSpaces().append(space);
 238IGNORE_WARNINGS_END
 239IGNORE_WARNINGS_END
 240 return space;
 241}
 242
219243void JSTestOverloadedConstructorsWithSequence::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
220244{
221245 auto* thisObject = jsCast<JSTestOverloadedConstructorsWithSequence*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h

@@class JSTestOverloadedConstructorsWithSequence : public JSDOMWrapper<TestOverloa
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestOverloadedConstructorsWithSequence(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOverloadedConstructorsWithSequence>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp

2222#include "JSTestOverrideBuiltins.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAbstractOperations.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3334#include "JSDOMWrapperCache.h"
3435#include "JSNode.h"
3536#include "ScriptExecutionContext.h"
 37#include "WebCoreJSClientData.h"
3638#include <JavaScriptCore/FunctionPrototype.h>
3739#include <JavaScriptCore/HeapAnalyzer.h>
3840#include <JavaScriptCore/JSCInlines.h>
 41#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 42#include <JavaScriptCore/SubspaceInlines.h>
3943#include <wtf/GetPtr.h>
4044#include <wtf/PointerPreparations.h>
4145#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestOverrideBuiltinsPrototypeFunctionNamedItem(JS
245249 return IDLOperation<JSTestOverrideBuiltins>::call<jsTestOverrideBuiltinsPrototypeFunctionNamedItemBody>(*lexicalGlobalObject, *callFrame, "namedItem");
246250}
247251
 252JSC::IsoSubspace* JSTestOverrideBuiltins::subspaceForImpl(JSC::VM& vm)
 253{
 254 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 255 auto& spaces = clientData.subspaces();
 256 if (auto* space = spaces.m_subspaceForTestOverrideBuiltins.get())
 257 return space;
 258 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverrideBuiltins>)
 259 spaces.m_subspaceForTestOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestOverrideBuiltins);
 260 else
 261 spaces.m_subspaceForTestOverrideBuiltins = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestOverrideBuiltins);
 262 auto* space = spaces.m_subspaceForTestOverrideBuiltins.get();
 263IGNORE_WARNINGS_BEGIN("unreachable-code")
 264IGNORE_WARNINGS_BEGIN("tautological-compare")
 265 if (&JSTestOverrideBuiltins::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 266 clientData.outputConstraintSpaces().append(space);
 267IGNORE_WARNINGS_END
 268IGNORE_WARNINGS_END
 269 return space;
 270}
 271
248272void JSTestOverrideBuiltins::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
249273{
250274 auto* thisObject = jsCast<JSTestOverrideBuiltins*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h

@@class JSTestOverrideBuiltins : public JSDOMWrapper<TestOverrideBuiltins> {
5252 }
5353
5454 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 55 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 56 {
 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 58 return nullptr;
 59 return subspaceForImpl(vm);
 60 }
 61 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5562 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5663public:
5764 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::GetOwnPropertySlotIsImpure | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames;

Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp

2222#include "JSTestPluginInterface.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMExceptionHandling.h"
2829#include "JSDOMWrapperCache.h"
2930#include "JSPluginElementFunctions.h"
3031#include "ScriptExecutionContext.h"
 32#include "WebCoreJSClientData.h"
3133#include <JavaScriptCore/FunctionPrototype.h>
3234#include <JavaScriptCore/HeapAnalyzer.h>
3335#include <JavaScriptCore/JSCInlines.h>
 36#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 37#include <JavaScriptCore/SubspaceInlines.h>
3438#include <wtf/GetPtr.h>
3539#include <wtf/PointerPreparations.h>
3640#include <wtf/URL.h>

@@bool setJSTestPluginInterfaceConstructor(JSGlobalObject* lexicalGlobalObject, En
217221 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
218222}
219223
 224JSC::IsoSubspace* JSTestPluginInterface::subspaceForImpl(JSC::VM& vm)
 225{
 226 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 227 auto& spaces = clientData.subspaces();
 228 if (auto* space = spaces.m_subspaceForTestPluginInterface.get())
 229 return space;
 230 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface>)
 231 spaces.m_subspaceForTestPluginInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestPluginInterface);
 232 else
 233 spaces.m_subspaceForTestPluginInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestPluginInterface);
 234 auto* space = spaces.m_subspaceForTestPluginInterface.get();
 235IGNORE_WARNINGS_BEGIN("unreachable-code")
 236IGNORE_WARNINGS_BEGIN("tautological-compare")
 237 if (&JSTestPluginInterface::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 238 clientData.outputConstraintSpaces().append(space);
 239IGNORE_WARNINGS_END
 240IGNORE_WARNINGS_END
 241 return space;
 242}
 243
220244void JSTestPluginInterface::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
221245{
222246 auto* thisObject = jsCast<JSTestPluginInterface*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.h

@@class JSTestPluginInterface : public JSDOMWrapper<TestPluginInterface> {
5656 }
5757
5858 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 59 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 60 {
 61 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 62 return nullptr;
 63 return subspaceForImpl(vm);
 64 }
 65 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5966 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
6067public:
6168 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::InterceptsGetOwnPropertySlotByIndexEvenWhenLengthIsNotZero | JSC::OverridesGetCallData | JSC::OverridesGetOwnPropertySlot | JSC::ProhibitsPropertyCaching;

Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp

2222#include "JSTestPromiseRejectionEvent.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "DOMPromiseProxy.h"
2627#include "JSDOMAttribute.h"
2728#include "JSDOMBinding.h"

3536#include "JSDOMGlobalObject.h"
3637#include "JSDOMWrapperCache.h"
3738#include "ScriptExecutionContext.h"
 39#include "WebCoreJSClientData.h"
3840#include <JavaScriptCore/HeapAnalyzer.h>
3941#include <JavaScriptCore/JSCInlines.h>
 42#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 43#include <JavaScriptCore/SubspaceInlines.h>
4044#include <wtf/GetPtr.h>
4145#include <wtf/PointerPreparations.h>
4246#include <wtf/URL.h>

@@EncodedJSValue jsTestPromiseRejectionEventReason(JSGlobalObject* lexicalGlobalOb
293297 return IDLAttribute<JSTestPromiseRejectionEvent>::get<jsTestPromiseRejectionEventReasonGetter, CastedThisErrorBehavior::Assert>(*lexicalGlobalObject, thisValue, "reason");
294298}
295299
 300JSC::IsoSubspace* JSTestPromiseRejectionEvent::subspaceForImpl(JSC::VM& vm)
 301{
 302 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 303 auto& spaces = clientData.subspaces();
 304 if (auto* space = spaces.m_subspaceForTestPromiseRejectionEvent.get())
 305 return space;
 306 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent>)
 307 spaces.m_subspaceForTestPromiseRejectionEvent = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestPromiseRejectionEvent);
 308 else
 309 spaces.m_subspaceForTestPromiseRejectionEvent = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestPromiseRejectionEvent);
 310 auto* space = spaces.m_subspaceForTestPromiseRejectionEvent.get();
 311IGNORE_WARNINGS_BEGIN("unreachable-code")
 312IGNORE_WARNINGS_BEGIN("tautological-compare")
 313 if (&JSTestPromiseRejectionEvent::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 314 clientData.outputConstraintSpaces().append(space);
 315IGNORE_WARNINGS_END
 316IGNORE_WARNINGS_END
 317 return space;
 318}
 319
296320void JSTestPromiseRejectionEvent::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
297321{
298322 auto* thisObject = jsCast<JSTestPromiseRejectionEvent*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h

@@class JSTestPromiseRejectionEvent : public JSEvent {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestPromiseRejectionEvent& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp

2222#include "JSTestSerialization.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3940#include "JSTestSerializationIndirectInheritance.h"
4041#include "JSTestSerializationInheritFinal.h"
4142#include "ScriptExecutionContext.h"
 43#include "WebCoreJSClientData.h"
4244#include <JavaScriptCore/FunctionPrototype.h>
4345#include <JavaScriptCore/HeapAnalyzer.h>
4446#include <JavaScriptCore/JSArray.h>
4547#include <JavaScriptCore/JSCInlines.h>
 48#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
4649#include <JavaScriptCore/ObjectConstructor.h>
 50#include <JavaScriptCore/SubspaceInlines.h>
4751#include <wtf/GetPtr.h>
4852#include <wtf/PointerPreparations.h>
4953#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestSerializationPrototypeFunctionToJSON(JSGlobal
674678 return IDLOperation<JSTestSerialization>::call<jsTestSerializationPrototypeFunctionToJSONBody>(*lexicalGlobalObject, *callFrame, "toJSON");
675679}
676680
 681JSC::IsoSubspace* JSTestSerialization::subspaceForImpl(JSC::VM& vm)
 682{
 683 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 684 auto& spaces = clientData.subspaces();
 685 if (auto* space = spaces.m_subspaceForTestSerialization.get())
 686 return space;
 687 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerialization>)
 688 spaces.m_subspaceForTestSerialization = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestSerialization);
 689 else
 690 spaces.m_subspaceForTestSerialization = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestSerialization);
 691 auto* space = spaces.m_subspaceForTestSerialization.get();
 692IGNORE_WARNINGS_BEGIN("unreachable-code")
 693IGNORE_WARNINGS_BEGIN("tautological-compare")
 694 if (&JSTestSerialization::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 695 clientData.outputConstraintSpaces().append(space);
 696IGNORE_WARNINGS_END
 697IGNORE_WARNINGS_END
 698 return space;
 699}
 700
677701void JSTestSerialization::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
678702{
679703 auto* thisObject = jsCast<JSTestSerialization*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h

@@class JSTestSerialization : public JSDOMWrapper<TestSerialization> {
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5252 static JSC::JSObject* serialize(JSC::JSGlobalObject&, JSTestSerialization& thisObject, JSDOMGlobalObject&, JSC::ThrowScope&);
 53 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 54 {
 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 56 return nullptr;
 57 return subspaceForImpl(vm);
 58 }
 59 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5360 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5461protected:
5562 JSTestSerialization(JSC::Structure*, JSDOMGlobalObject&, Ref<TestSerialization>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp

2222#include "JSTestSerializationIndirectInheritance.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMExceptionHandling.h"
2829#include "JSDOMWrapperCache.h"
2930#include "ScriptExecutionContext.h"
 31#include "WebCoreJSClientData.h"
3032#include <JavaScriptCore/HeapAnalyzer.h>
3133#include <JavaScriptCore/JSCInlines.h>
 34#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 35#include <JavaScriptCore/SubspaceInlines.h>
3236#include <wtf/GetPtr.h>
3337#include <wtf/PointerPreparations.h>
3438#include <wtf/URL.h>

@@bool setJSTestSerializationIndirectInheritanceConstructor(JSGlobalObject* lexica
153157 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
154158}
155159
 160JSC::IsoSubspace* JSTestSerializationIndirectInheritance::subspaceForImpl(JSC::VM& vm)
 161{
 162 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 163 auto& spaces = clientData.subspaces();
 164 if (auto* space = spaces.m_subspaceForTestSerializationIndirectInheritance.get())
 165 return space;
 166 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializationIndirectInheritance>)
 167 spaces.m_subspaceForTestSerializationIndirectInheritance = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestSerializationIndirectInheritance);
 168 else
 169 spaces.m_subspaceForTestSerializationIndirectInheritance = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestSerializationIndirectInheritance);
 170 auto* space = spaces.m_subspaceForTestSerializationIndirectInheritance.get();
 171IGNORE_WARNINGS_BEGIN("unreachable-code")
 172IGNORE_WARNINGS_BEGIN("tautological-compare")
 173 if (&JSTestSerializationIndirectInheritance::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 174 clientData.outputConstraintSpaces().append(space);
 175IGNORE_WARNINGS_END
 176IGNORE_WARNINGS_END
 177 return space;
 178}
 179
156180void JSTestSerializationIndirectInheritance::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
157181{
158182 auto* thisObject = jsCast<JSTestSerializationIndirectInheritance*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h

@@class JSTestSerializationIndirectInheritance : public JSTestSerializationInherit
4848 }
4949
5050 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 51 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 52 {
 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 54 return nullptr;
 55 return subspaceForImpl(vm);
 56 }
 57 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5158 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5259 TestSerializationIndirectInheritance& wrapped() const
5360 {

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp

2222#include "JSTestSerializationInherit.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3538#include <JavaScriptCore/ObjectConstructor.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestSerializationInheritPrototypeFunctionToJSON(J
229233 return IDLOperation<JSTestSerializationInherit>::call<jsTestSerializationInheritPrototypeFunctionToJSONBody>(*lexicalGlobalObject, *callFrame, "toJSON");
230234}
231235
 236JSC::IsoSubspace* JSTestSerializationInherit::subspaceForImpl(JSC::VM& vm)
 237{
 238 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 239 auto& spaces = clientData.subspaces();
 240 if (auto* space = spaces.m_subspaceForTestSerializationInherit.get())
 241 return space;
 242 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializationInherit>)
 243 spaces.m_subspaceForTestSerializationInherit = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestSerializationInherit);
 244 else
 245 spaces.m_subspaceForTestSerializationInherit = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestSerializationInherit);
 246 auto* space = spaces.m_subspaceForTestSerializationInherit.get();
 247IGNORE_WARNINGS_BEGIN("unreachable-code")
 248IGNORE_WARNINGS_BEGIN("tautological-compare")
 249 if (&JSTestSerializationInherit::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 250 clientData.outputConstraintSpaces().append(space);
 251IGNORE_WARNINGS_END
 252IGNORE_WARNINGS_END
 253 return space;
 254}
 255
232256void JSTestSerializationInherit::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
233257{
234258 auto* thisObject = jsCast<JSTestSerializationInherit*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.h

@@class JSTestSerializationInherit : public JSTestSerialization {
4949
5050 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5151 static JSC::JSObject* serialize(JSC::JSGlobalObject&, JSTestSerializationInherit& thisObject, JSDOMGlobalObject&, JSC::ThrowScope&);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestSerializationInherit& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp

2222#include "JSTestSerializationInheritFinal.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
3538#include <JavaScriptCore/ObjectConstructor.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestSerializationInheritFinalPrototypeFunctionToJ
264268 return IDLOperation<JSTestSerializationInheritFinal>::call<jsTestSerializationInheritFinalPrototypeFunctionToJSONBody>(*lexicalGlobalObject, *callFrame, "toJSON");
265269}
266270
 271JSC::IsoSubspace* JSTestSerializationInheritFinal::subspaceForImpl(JSC::VM& vm)
 272{
 273 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 274 auto& spaces = clientData.subspaces();
 275 if (auto* space = spaces.m_subspaceForTestSerializationInheritFinal.get())
 276 return space;
 277 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializationInheritFinal>)
 278 spaces.m_subspaceForTestSerializationInheritFinal = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestSerializationInheritFinal);
 279 else
 280 spaces.m_subspaceForTestSerializationInheritFinal = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestSerializationInheritFinal);
 281 auto* space = spaces.m_subspaceForTestSerializationInheritFinal.get();
 282IGNORE_WARNINGS_BEGIN("unreachable-code")
 283IGNORE_WARNINGS_BEGIN("tautological-compare")
 284 if (&JSTestSerializationInheritFinal::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 285 clientData.outputConstraintSpaces().append(space);
 286IGNORE_WARNINGS_END
 287IGNORE_WARNINGS_END
 288 return space;
 289}
 290
267291void JSTestSerializationInheritFinal::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
268292{
269293 auto* thisObject = jsCast<JSTestSerializationInheritFinal*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.h

@@class JSTestSerializationInheritFinal : public JSTestSerializationInherit {
4949
5050 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5151 static JSC::JSObject* serialize(JSC::JSGlobalObject&, JSTestSerializationInheritFinal& thisObject, JSDOMGlobalObject&, JSC::ThrowScope&);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360 TestSerializationInheritFinal& wrapped() const
5461 {

Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp

2525#include "JSTestSerializedScriptValueInterface.h"
2626
2727#include "ActiveDOMObject.h"
 28#include "DOMIsoSubspaces.h"
2829#include "JSDOMAttribute.h"
2930#include "JSDOMBinding.h"
3031#include "JSDOMConstructorNotConstructable.h"

3839#include "JSMessagePort.h"
3940#include "ScriptExecutionContext.h"
4041#include "SerializedScriptValue.h"
 42#include "WebCoreJSClientData.h"
4143#include <JavaScriptCore/FunctionPrototype.h>
4244#include <JavaScriptCore/HeapAnalyzer.h>
4345#include <JavaScriptCore/JSArray.h>
4446#include <JavaScriptCore/JSCInlines.h>
 47#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 48#include <JavaScriptCore/SubspaceInlines.h>
4549#include <wtf/GetPtr.h>
4650#include <wtf/PointerPreparations.h>
4751#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestSerializedScriptValueInterfacePrototypeFuncti
347351 return IDLOperation<JSTestSerializedScriptValueInterface>::call<jsTestSerializedScriptValueInterfacePrototypeFunctionFunctionReturningBody>(*lexicalGlobalObject, *callFrame, "functionReturning");
348352}
349353
 354JSC::IsoSubspace* JSTestSerializedScriptValueInterface::subspaceForImpl(JSC::VM& vm)
 355{
 356 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 357 auto& spaces = clientData.subspaces();
 358 if (auto* space = spaces.m_subspaceForTestSerializedScriptValueInterface.get())
 359 return space;
 360 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface>)
 361 spaces.m_subspaceForTestSerializedScriptValueInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestSerializedScriptValueInterface);
 362 else
 363 spaces.m_subspaceForTestSerializedScriptValueInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestSerializedScriptValueInterface);
 364 auto* space = spaces.m_subspaceForTestSerializedScriptValueInterface.get();
 365IGNORE_WARNINGS_BEGIN("unreachable-code")
 366IGNORE_WARNINGS_BEGIN("tautological-compare")
 367 if (&JSTestSerializedScriptValueInterface::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 368 clientData.outputConstraintSpaces().append(space);
 369IGNORE_WARNINGS_END
 370IGNORE_WARNINGS_END
 371 return space;
 372}
 373
350374void JSTestSerializedScriptValueInterface::visitChildren(JSCell* cell, SlotVisitor& visitor)
351375{
352376 auto* thisObject = jsCast<JSTestSerializedScriptValueInterface*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h

@@class JSTestSerializedScriptValueInterface : public JSDOMWrapper<TestSerializedS
5353 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
5454 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedValue;
5555 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedReadonlyValue;
 56 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 57 {
 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 59 return nullptr;
 60 return subspaceForImpl(vm);
 61 }
 62 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5663 static void visitChildren(JSCell*, JSC::SlotVisitor&);
5764
5865 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp

2222#include "JSTestStringifier.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"

2930#include "JSDOMOperation.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierPrototypeFunctionToString(JSGlobal
187191 return IDLOperation<JSTestStringifier>::call<jsTestStringifierPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
188192}
189193
 194JSC::IsoSubspace* JSTestStringifier::subspaceForImpl(JSC::VM& vm)
 195{
 196 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 197 auto& spaces = clientData.subspaces();
 198 if (auto* space = spaces.m_subspaceForTestStringifier.get())
 199 return space;
 200 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier>)
 201 spaces.m_subspaceForTestStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifier);
 202 else
 203 spaces.m_subspaceForTestStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifier);
 204 auto* space = spaces.m_subspaceForTestStringifier.get();
 205IGNORE_WARNINGS_BEGIN("unreachable-code")
 206IGNORE_WARNINGS_BEGIN("tautological-compare")
 207 if (&JSTestStringifier::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 208 clientData.outputConstraintSpaces().append(space);
 209IGNORE_WARNINGS_END
 210IGNORE_WARNINGS_END
 211 return space;
 212}
 213
190214void JSTestStringifier::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
191215{
192216 auto* thisObject = jsCast<JSTestStringifier*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.h

@@class JSTestStringifier : public JSDOMWrapper<TestStringifier> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifier(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifier>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp

2222#include "JSTestStringifierAnonymousOperation.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"

2930#include "JSDOMOperation.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierAnonymousOperationPrototypeFunctio
187191 return IDLOperation<JSTestStringifierAnonymousOperation>::call<jsTestStringifierAnonymousOperationPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
188192}
189193
 194JSC::IsoSubspace* JSTestStringifierAnonymousOperation::subspaceForImpl(JSC::VM& vm)
 195{
 196 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 197 auto& spaces = clientData.subspaces();
 198 if (auto* space = spaces.m_subspaceForTestStringifierAnonymousOperation.get())
 199 return space;
 200 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation>)
 201 spaces.m_subspaceForTestStringifierAnonymousOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierAnonymousOperation);
 202 else
 203 spaces.m_subspaceForTestStringifierAnonymousOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierAnonymousOperation);
 204 auto* space = spaces.m_subspaceForTestStringifierAnonymousOperation.get();
 205IGNORE_WARNINGS_BEGIN("unreachable-code")
 206IGNORE_WARNINGS_BEGIN("tautological-compare")
 207 if (&JSTestStringifierAnonymousOperation::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 208 clientData.outputConstraintSpaces().append(space);
 209IGNORE_WARNINGS_END
 210IGNORE_WARNINGS_END
 211 return space;
 212}
 213
190214void JSTestStringifierAnonymousOperation::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
191215{
192216 auto* thisObject = jsCast<JSTestStringifierAnonymousOperation*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h

@@class JSTestStringifierAnonymousOperation : public JSDOMWrapper<TestStringifierA
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierAnonymousOperation(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierAnonymousOperation>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp

2222#include "JSTestStringifierNamedOperation.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"

2930#include "JSDOMOperation.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierNamedOperationPrototypeFunctionToS
203207 return IDLOperation<JSTestStringifierNamedOperation>::call<jsTestStringifierNamedOperationPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
204208}
205209
 210JSC::IsoSubspace* JSTestStringifierNamedOperation::subspaceForImpl(JSC::VM& vm)
 211{
 212 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 213 auto& spaces = clientData.subspaces();
 214 if (auto* space = spaces.m_subspaceForTestStringifierNamedOperation.get())
 215 return space;
 216 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation>)
 217 spaces.m_subspaceForTestStringifierNamedOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierNamedOperation);
 218 else
 219 spaces.m_subspaceForTestStringifierNamedOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierNamedOperation);
 220 auto* space = spaces.m_subspaceForTestStringifierNamedOperation.get();
 221IGNORE_WARNINGS_BEGIN("unreachable-code")
 222IGNORE_WARNINGS_BEGIN("tautological-compare")
 223 if (&JSTestStringifierNamedOperation::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 224 clientData.outputConstraintSpaces().append(space);
 225IGNORE_WARNINGS_END
 226IGNORE_WARNINGS_END
 227 return space;
 228}
 229
206230void JSTestStringifierNamedOperation::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
207231{
208232 auto* thisObject = jsCast<JSTestStringifierNamedOperation*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.h

@@class JSTestStringifierNamedOperation : public JSDOMWrapper<TestStringifierNamed
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierNamedOperation(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierNamedOperation>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp

2222#include "JSTestStringifierOperationImplementedAs.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"

2930#include "JSDOMOperation.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierOperationImplementedAsPrototypeFun
203207 return IDLOperation<JSTestStringifierOperationImplementedAs>::call<jsTestStringifierOperationImplementedAsPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
204208}
205209
 210JSC::IsoSubspace* JSTestStringifierOperationImplementedAs::subspaceForImpl(JSC::VM& vm)
 211{
 212 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 213 auto& spaces = clientData.subspaces();
 214 if (auto* space = spaces.m_subspaceForTestStringifierOperationImplementedAs.get())
 215 return space;
 216 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs>)
 217 spaces.m_subspaceForTestStringifierOperationImplementedAs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierOperationImplementedAs);
 218 else
 219 spaces.m_subspaceForTestStringifierOperationImplementedAs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierOperationImplementedAs);
 220 auto* space = spaces.m_subspaceForTestStringifierOperationImplementedAs.get();
 221IGNORE_WARNINGS_BEGIN("unreachable-code")
 222IGNORE_WARNINGS_BEGIN("tautological-compare")
 223 if (&JSTestStringifierOperationImplementedAs::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 224 clientData.outputConstraintSpaces().append(space);
 225IGNORE_WARNINGS_END
 226IGNORE_WARNINGS_END
 227 return space;
 228}
 229
206230void JSTestStringifierOperationImplementedAs::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
207231{
208232 auto* thisObject = jsCast<JSTestStringifierOperationImplementedAs*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h

@@class JSTestStringifierOperationImplementedAs : public JSDOMWrapper<TestStringif
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierOperationImplementedAs(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierOperationImplementedAs>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp

2222#include "JSTestStringifierOperationNamedToString.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMBinding.h"
2627#include "JSDOMConstructorNotConstructable.h"
2728#include "JSDOMConvertStrings.h"

2930#include "JSDOMOperation.h"
3031#include "JSDOMWrapperCache.h"
3132#include "ScriptExecutionContext.h"
 33#include "WebCoreJSClientData.h"
3234#include <JavaScriptCore/FunctionPrototype.h>
3335#include <JavaScriptCore/HeapAnalyzer.h>
3436#include <JavaScriptCore/JSCInlines.h>
 37#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 38#include <JavaScriptCore/SubspaceInlines.h>
3539#include <wtf/GetPtr.h>
3640#include <wtf/PointerPreparations.h>
3741#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierOperationNamedToStringPrototypeFun
187191 return IDLOperation<JSTestStringifierOperationNamedToString>::call<jsTestStringifierOperationNamedToStringPrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
188192}
189193
 194JSC::IsoSubspace* JSTestStringifierOperationNamedToString::subspaceForImpl(JSC::VM& vm)
 195{
 196 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 197 auto& spaces = clientData.subspaces();
 198 if (auto* space = spaces.m_subspaceForTestStringifierOperationNamedToString.get())
 199 return space;
 200 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString>)
 201 spaces.m_subspaceForTestStringifierOperationNamedToString = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierOperationNamedToString);
 202 else
 203 spaces.m_subspaceForTestStringifierOperationNamedToString = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierOperationNamedToString);
 204 auto* space = spaces.m_subspaceForTestStringifierOperationNamedToString.get();
 205IGNORE_WARNINGS_BEGIN("unreachable-code")
 206IGNORE_WARNINGS_BEGIN("tautological-compare")
 207 if (&JSTestStringifierOperationNamedToString::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 208 clientData.outputConstraintSpaces().append(space);
 209IGNORE_WARNINGS_END
 210IGNORE_WARNINGS_END
 211 return space;
 212}
 213
190214void JSTestStringifierOperationNamedToString::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
191215{
192216 auto* thisObject = jsCast<JSTestStringifierOperationNamedToString*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h

@@class JSTestStringifierOperationNamedToString : public JSDOMWrapper<TestStringif
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierOperationNamedToString(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierOperationNamedToString>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp

2222#include "JSTestStringifierReadOnlyAttribute.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierReadOnlyAttributePrototypeFunction
209213 return IDLOperation<JSTestStringifierReadOnlyAttribute>::call<jsTestStringifierReadOnlyAttributePrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
210214}
211215
 216JSC::IsoSubspace* JSTestStringifierReadOnlyAttribute::subspaceForImpl(JSC::VM& vm)
 217{
 218 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 219 auto& spaces = clientData.subspaces();
 220 if (auto* space = spaces.m_subspaceForTestStringifierReadOnlyAttribute.get())
 221 return space;
 222 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute>)
 223 spaces.m_subspaceForTestStringifierReadOnlyAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierReadOnlyAttribute);
 224 else
 225 spaces.m_subspaceForTestStringifierReadOnlyAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierReadOnlyAttribute);
 226 auto* space = spaces.m_subspaceForTestStringifierReadOnlyAttribute.get();
 227IGNORE_WARNINGS_BEGIN("unreachable-code")
 228IGNORE_WARNINGS_BEGIN("tautological-compare")
 229 if (&JSTestStringifierReadOnlyAttribute::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 230 clientData.outputConstraintSpaces().append(space);
 231IGNORE_WARNINGS_END
 232IGNORE_WARNINGS_END
 233 return space;
 234}
 235
212236void JSTestStringifierReadOnlyAttribute::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
213237{
214238 auto* thisObject = jsCast<JSTestStringifierReadOnlyAttribute*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h

@@class JSTestStringifierReadOnlyAttribute : public JSDOMWrapper<TestStringifierRe
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierReadOnlyAttribute(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierReadOnlyAttribute>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp

2222#include "JSTestStringifierReadWriteAttribute.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructorNotConstructable.h"

3031#include "JSDOMOperation.h"
3132#include "JSDOMWrapperCache.h"
3233#include "ScriptExecutionContext.h"
 34#include "WebCoreJSClientData.h"
3335#include <JavaScriptCore/FunctionPrototype.h>
3436#include <JavaScriptCore/HeapAnalyzer.h>
3537#include <JavaScriptCore/JSCInlines.h>
 38#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 39#include <JavaScriptCore/SubspaceInlines.h>
3640#include <wtf/GetPtr.h>
3741#include <wtf/PointerPreparations.h>
3842#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestStringifierReadWriteAttributePrototypeFunctio
228232 return IDLOperation<JSTestStringifierReadWriteAttribute>::call<jsTestStringifierReadWriteAttributePrototypeFunctionToStringBody>(*lexicalGlobalObject, *callFrame, "toString");
229233}
230234
 235JSC::IsoSubspace* JSTestStringifierReadWriteAttribute::subspaceForImpl(JSC::VM& vm)
 236{
 237 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 238 auto& spaces = clientData.subspaces();
 239 if (auto* space = spaces.m_subspaceForTestStringifierReadWriteAttribute.get())
 240 return space;
 241 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute>)
 242 spaces.m_subspaceForTestStringifierReadWriteAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestStringifierReadWriteAttribute);
 243 else
 244 spaces.m_subspaceForTestStringifierReadWriteAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestStringifierReadWriteAttribute);
 245 auto* space = spaces.m_subspaceForTestStringifierReadWriteAttribute.get();
 246IGNORE_WARNINGS_BEGIN("unreachable-code")
 247IGNORE_WARNINGS_BEGIN("tautological-compare")
 248 if (&JSTestStringifierReadWriteAttribute::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 249 clientData.outputConstraintSpaces().append(space);
 250IGNORE_WARNINGS_END
 251IGNORE_WARNINGS_END
 252 return space;
 253}
 254
231255void JSTestStringifierReadWriteAttribute::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
232256{
233257 auto* thisObject = jsCast<JSTestStringifierReadWriteAttribute*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h

@@class JSTestStringifierReadWriteAttribute : public JSDOMWrapper<TestStringifierR
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360protected:
5461 JSTestStringifierReadWriteAttribute(JSC::Structure*, JSDOMGlobalObject&, Ref<TestStringifierReadWriteAttribute>&&);

Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp

2222#include "JSTestTypedefs.h"
2323
2424#include "ActiveDOMObject.h"
 25#include "DOMIsoSubspaces.h"
2526#include "JSDOMAttribute.h"
2627#include "JSDOMBinding.h"
2728#include "JSDOMConstructor.h"

4647#include "JSTestSubObj.h"
4748#include "ScriptExecutionContext.h"
4849#include "SerializedScriptValue.h"
 50#include "WebCoreJSClientData.h"
4951#include <JavaScriptCore/FunctionPrototype.h>
5052#include <JavaScriptCore/HeapAnalyzer.h>
5153#include <JavaScriptCore/JSArray.h>
5254#include <JavaScriptCore/JSCInlines.h>
 55#include <JavaScriptCore/JSDestructibleObjectHeapCellType.h>
 56#include <JavaScriptCore/SubspaceInlines.h>
5357#include <wtf/GetPtr.h>
5458#include <wtf/PointerPreparations.h>
5559#include <wtf/URL.h>

@@EncodedJSValue JSC_HOST_CALL jsTestTypedefsPrototypeFunctionMethodWithException(
771775 return IDLOperation<JSTestTypedefs>::call<jsTestTypedefsPrototypeFunctionMethodWithExceptionBody>(*lexicalGlobalObject, *callFrame, "methodWithException");
772776}
773777
 778JSC::IsoSubspace* JSTestTypedefs::subspaceForImpl(JSC::VM& vm)
 779{
 780 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);
 781 auto& spaces = clientData.subspaces();
 782 if (auto* space = spaces.m_subspaceForTestTypedefs.get())
 783 return space;
 784 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs>)
 785 spaces.m_subspaceForTestTypedefs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType.get(), JSTestTypedefs);
 786 else
 787 spaces.m_subspaceForTestTypedefs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType.get(), JSTestTypedefs);
 788 auto* space = spaces.m_subspaceForTestTypedefs.get();
 789IGNORE_WARNINGS_BEGIN("unreachable-code")
 790IGNORE_WARNINGS_BEGIN("tautological-compare")
 791 if (&JSTestTypedefs::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)
 792 clientData.outputConstraintSpaces().append(space);
 793IGNORE_WARNINGS_END
 794IGNORE_WARNINGS_END
 795 return space;
 796}
 797
774798void JSTestTypedefs::analyzeHeap(JSCell* cell, HeapAnalyzer& analyzer)
775799{
776800 auto* thisObject = jsCast<JSTestTypedefs*>(cell);

Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h

@@class JSTestTypedefs : public JSDOMWrapper<TestTypedefs> {
4949 }
5050
5151 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);
 52 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)
 53 {
 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently)
 55 return nullptr;
 56 return subspaceForImpl(vm);
 57 }
 58 static JSC::IsoSubspace* subspaceForImpl(JSC::VM& vm);
5259 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&);
5360public:
5461 static constexpr unsigned StructureFlags = Base::StructureFlags | JSC::HasStaticPropertyTable;