Changeset 290129 in webkit
- Timestamp:
- Feb 18, 2022, 8:43:58 AM (3 years ago)
- Location:
- trunk/Source
- Files:
-
- 416 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/Source/JavaScriptCore/API/JSAPIGlobalObject.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 static constexpr bool needsDestruction = true; 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.apiGlobalObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/API/JSAPIValueWrapper.h ¶
r285730 r290129 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 3 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.4 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 5 5 * 6 6 * This library is free software; you can redistribute it and/or … … 37 37 38 38 template<typename CellType, SubspaceAccess mode> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 return vm.apiValueWrapperSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/API/JSAPIWrapperObject.mm ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 140 140 141 141 template <> 142 IsoSubspace* JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl(VM& vm, SubspaceAccess mode)142 GCClient::IsoSubspace* JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl(VM& vm, SubspaceAccess mode) 143 143 { 144 144 switch (mode) { -
TabularUnified trunk/Source/JavaScriptCore/API/JSCallbackConstructor.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2006-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2006-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return vm.callbackConstructorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/API/JSCallbackFunction.h ¶
r242123 r290129 1 1 /* 2 * Copyright (C) 2006-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2006-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.callbackFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/API/JSCallbackObject.cpp ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2006-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2006-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4 4 * … … 121 121 122 122 template <> 123 IsoSubspace* JSCallbackObject<JSNonFinalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode)123 GCClient::IsoSubspace* JSCallbackObject<JSNonFinalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode) 124 124 { 125 125 switch (mode) { … … 134 134 135 135 template <> 136 IsoSubspace* JSCallbackObject<JSGlobalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode)136 GCClient::IsoSubspace* JSCallbackObject<JSGlobalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode) 137 137 { 138 138 switch (mode) { -
TabularUnified trunk/Source/JavaScriptCore/API/JSCallbackObject.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2006-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2006-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 4 4 * … … 153 153 154 154 template<typename CellType, SubspaceAccess mode> 155 static IsoSubspace* subspaceFor(VM& vm)155 static GCClient::IsoSubspace* subspaceFor(VM& vm) 156 156 { 157 157 return subspaceForImpl(vm, mode); … … 200 200 void finishCreation(VM&); 201 201 202 static IsoSubspace* subspaceForImpl(VM&, SubspaceAccess);202 static GCClient::IsoSubspace* subspaceForImpl(VM&, SubspaceAccess); 203 203 static EncodedJSValue JSC_HOST_CALL_ATTRIBUTES customToPrimitive(JSGlobalObject*, CallFrame*); 204 204 -
TabularUnified trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h ¶
r252875 r290129 1 1 /* 2 * Copyright (C) 2013 , 2016Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 50 50 51 51 template<typename CellType, SubspaceAccess mode> 52 static IsoSubspace* subspaceFor(VM& vm)52 static GCClient::IsoSubspace* subspaceFor(VM& vm) 53 53 { 54 54 return vm.objCCallbackFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/API/glib/JSAPIWrapperGlobalObject.cpp ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2018 Igalia S.L. 3 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 90 91 91 92 template <> 92 IsoSubspace* JSCallbackObject<JSAPIWrapperGlobalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode)93 GCClient::IsoSubspace* JSCallbackObject<JSAPIWrapperGlobalObject>::subspaceForImpl(VM& vm, SubspaceAccess mode) 93 94 { 94 95 switch (mode) { -
TabularUnified trunk/Source/JavaScriptCore/API/glib/JSAPIWrapperObjectGLib.cpp ¶
r273138 r290129 1 1 /* 2 2 * Copyright (C) 2018 Igalia S.L. 3 * Copyright (C) 2013-20 18Apple Inc. All rights reserved.3 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 104 104 105 105 template <> 106 IsoSubspace* JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl(VM& vm, SubspaceAccess mode)106 GCClient::IsoSubspace* JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl(VM& vm, SubspaceAccess mode) 107 107 { 108 108 switch (mode) { -
TabularUnified trunk/Source/JavaScriptCore/API/glib/JSCCallbackFunction.h ¶
r278253 r290129 1 1 /* 2 2 * Copyright (C) 2018 Igalia S.L. 3 * Copyright (C) 2006-20 18Apple Inc. All rights reserved.3 * Copyright (C) 2006-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess mode> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return vm.jscCallbackFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/ChangeLog ¶
r290119 r290129 1 2022-02-18 Mark Lam <mark.lam@apple.com> 2 3 Split IsoSubspace into a GCClient allocator used by VM and a backend managed by Heap. 4 https://bugs.webkit.org/show_bug.cgi?id=233878 5 rdar://problem/86108394 6 7 Reviewed by Yusuke Suzuki. 8 9 1. Add a useGlobalGC option. We're currently only using this to guard some code 10 for GlobalGC. We're not ready to run with GlobalGC enabled yet. 11 12 2. Create a new GCClient namespace in JSC. The Heap is now split into 2 parts: 13 a. VM / GCClient / client side: JSC::GCClient::Heap 14 b. GlobalGC / server side: JSC::Heap 15 16 The eventual goal is to have many GCClient Heaps backed by a singleton server 17 Heap. Currently, we still have a 1 to 1 correspondence between the client and 18 server side i.e. VM embeds both one instance each of GCClient::Heap and Heap. 19 20 3. Split IsoSubspace into: 21 a. VM / GCClient / client side: JSC::GCClient::IsoSubspace 22 b. GlobalGC / server side: JSC::IsoSubspace 23 24 The client side will now manage a LocalAllocator for the IsoSubspace. 25 26 The eventual goal is to have many GCClient::IsoSubspace allocators fed from 27 a server IsoSubspace. Currently, we still have a 1 to 1 correspondence 28 between the client and server side. GCClient::IsoSubspace instances will be 29 managed by GCClient::Heap. Server side IsoSubspaces continue to be managed 30 by Heap. 31 32 3. IsoSubspacePerVM is also now client-server aware. 33 34 Previously, IsoSubspacePerVM was relying on AutoremovingIsoSubspace to 35 "automatically" unregister IsoSubspaces from IsoSubspacePerVM via its 36 destructor. However, there is a bug where the AutoremovingIsoSubspace is 37 never associated with the VM, and there is nothing that will trigger its 38 destruction when the VM shuts down. 39 40 This patch fixes this issue by having IsoSubspacePerVM register with the VM's 41 GCClient::Heap and Heap. On destruction, those Heaps will now be aware of 42 the IsoSubspacePerVM in use, and will tell the IsoSubspacePerVM to release 43 the associated IsoSubspaces. 44 45 The IsoSubspacePerVM::AutoremovingIsoSubspace class is now removed since it 46 is not needed. 47 48 4. Previously, in Heap, we have some SpaceAndSet members that were named simply as 49 "Space". Renamed these to be "SpaceAndSet" explicitly to more accurately 50 reflect what they are. 51 52 * API/JSAPIGlobalObject.h: 53 * API/JSAPIValueWrapper.h: 54 * API/JSAPIWrapperObject.mm: 55 (JSC::JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl): 56 * API/JSCallbackConstructor.h: 57 * API/JSCallbackFunction.h: 58 * API/JSCallbackObject.cpp: 59 (JSC::JSCallbackObject<JSNonFinalObject>::subspaceForImpl): 60 (JSC::JSCallbackObject<JSGlobalObject>::subspaceForImpl): 61 * API/JSCallbackObject.h: 62 * API/ObjCCallbackFunction.h: 63 (JSC::ObjCCallbackFunction::subspaceFor): 64 * API/glib/JSAPIWrapperGlobalObject.cpp: 65 (JSC::JSCallbackObject<JSAPIWrapperGlobalObject>::subspaceForImpl): 66 * API/glib/JSAPIWrapperObjectGLib.cpp: 67 (JSC::JSCallbackObject<JSAPIWrapperObject>::subspaceForImpl): 68 * API/glib/JSCCallbackFunction.h: 69 * bytecode/CodeBlock.cpp: 70 (JSC::CodeBlock::visitChildren): 71 (JSC::CodeBlock::finalizeUnconditionally): 72 * bytecode/EvalCodeBlock.h: 73 * bytecode/ExecutableToCodeBlockEdge.h: 74 * bytecode/FunctionCodeBlock.h: 75 * bytecode/ModuleProgramCodeBlock.h: 76 * bytecode/ProgramCodeBlock.h: 77 * bytecode/UnlinkedEvalCodeBlock.h: 78 * bytecode/UnlinkedFunctionCodeBlock.h: 79 * bytecode/UnlinkedFunctionExecutable.cpp: 80 (JSC::UnlinkedFunctionExecutable::unlinkedCodeBlockFor): 81 (JSC::UnlinkedFunctionExecutable::finalizeUnconditionally): 82 * bytecode/UnlinkedFunctionExecutable.h: 83 * bytecode/UnlinkedModuleProgramCodeBlock.h: 84 * bytecode/UnlinkedProgramCodeBlock.h: 85 * debugger/DebuggerScope.h: 86 * heap/Heap.cpp: 87 (JSC::Heap::Heap): 88 (JSC::Heap::~Heap): 89 (JSC::Heap::finalizeUnconditionalFinalizers): 90 (JSC::Heap::deleteAllUnlinkedCodeBlocks): 91 (JSC::GCClient::Heap::Heap): 92 (JSC::GCClient::Heap::~Heap): 93 * heap/Heap.h: 94 (JSC::Heap::lock): 95 (JSC::Heap::forEachCodeBlockSpace): 96 (JSC::Heap::forEachScriptExecutableSpace): 97 (JSC::GCClient::Heap::server): 98 * heap/HeapInlines.h: 99 (JSC::GCClient::Heap::vm const): 100 * heap/IsoSubspace.cpp: 101 (JSC::IsoSubspace::IsoSubspace): 102 (JSC::GCClient::IsoSubspace::IsoSubspace): 103 * heap/IsoSubspace.h: 104 (JSC::GCClient::IsoSubspace::cellSize): 105 (JSC::IsoSubspace::allocatorFor): Deleted. 106 * heap/IsoSubspaceInlines.h: 107 (JSC::IsoSubspace::allocate): Deleted. 108 * heap/IsoSubspacePerVM.cpp: 109 (JSC::IsoSubspacePerVM::IsoSubspacePerVM): 110 (JSC::IsoSubspacePerVM::isoSubspaceforHeap): 111 (JSC::IsoSubspacePerVM::clientIsoSubspaceforVM): 112 (JSC::IsoSubspacePerVM::releaseIsoSubspace): 113 (JSC::IsoSubspacePerVM::releaseClientIsoSubspace): 114 (): Deleted. 115 (JSC::IsoSubspacePerVM::forVM): Deleted. 116 * heap/IsoSubspacePerVM.h: 117 * heap/LocalAllocator.cpp: 118 (JSC::LocalAllocator::allocateSlowCase): 119 (JSC::LocalAllocator::tryAllocateWithoutCollecting): 120 (JSC::LocalAllocator::doTestCollectionsIfNeeded): 121 * heap/LocalAllocator.h: 122 (JSC::LocalAllocator::directory const): 123 * heap/MarkedBlock.cpp: 124 (JSC::MarkedBlock::Handle::stopAllocating): 125 * heap/MutatorState.h: 126 * inspector/JSInjectedScriptHost.h: 127 * inspector/JSInjectedScriptHostPrototype.h: 128 * inspector/JSJavaScriptCallFrame.h: 129 * inspector/JSJavaScriptCallFramePrototype.h: 130 * runtime/AggregateErrorPrototype.h: 131 * runtime/ArrayIteratorPrototype.h: 132 * runtime/AsyncFromSyncIteratorPrototype.h: 133 * runtime/AsyncFunctionPrototype.h: 134 * runtime/AsyncGeneratorFunctionPrototype.h: 135 * runtime/AsyncGeneratorPrototype.h: 136 * runtime/AsyncIteratorPrototype.h: 137 * runtime/AtomicsObject.h: 138 * runtime/BigIntObject.h: 139 * runtime/BigIntPrototype.h: 140 * runtime/BooleanObject.h: 141 (JSC::BooleanObject::subspaceFor): 142 * runtime/BrandedStructure.h: 143 * runtime/ClonedArguments.h: 144 * runtime/ConsoleObject.h: 145 * runtime/CustomGetterSetter.h: 146 (JSC::CustomGetterSetter::subspaceFor): 147 * runtime/DOMAttributeGetterSetter.h: 148 * runtime/DateInstance.h: 149 * runtime/DatePrototype.h: 150 * runtime/ErrorInstance.h: 151 (JSC::ErrorInstance::subspaceFor): 152 * runtime/ErrorPrototype.h: 153 * runtime/EvalExecutable.h: 154 (JSC::EvalExecutable::subspaceFor): 155 * runtime/Exception.h: 156 * runtime/FinalizationRegistryPrototype.h: 157 * runtime/FunctionExecutable.h: 158 * runtime/FunctionRareData.h: 159 * runtime/GeneratorFunctionPrototype.h: 160 * runtime/GeneratorPrototype.h: 161 * runtime/GetterSetter.h: 162 * runtime/HashMapImpl.h: 163 * runtime/InternalFunction.h: 164 (JSC::InternalFunction::subspaceFor): 165 * runtime/IntlCollator.h: 166 * runtime/IntlCollatorPrototype.h: 167 * runtime/IntlDateTimeFormat.h: 168 * runtime/IntlDateTimeFormatPrototype.h: 169 * runtime/IntlDisplayNames.h: 170 * runtime/IntlDisplayNamesPrototype.h: 171 * runtime/IntlListFormat.h: 172 * runtime/IntlListFormatPrototype.h: 173 * runtime/IntlLocale.h: 174 * runtime/IntlLocalePrototype.h: 175 * runtime/IntlNumberFormat.h: 176 * runtime/IntlNumberFormatPrototype.h: 177 * runtime/IntlObject.h: 178 * runtime/IntlPluralRules.h: 179 * runtime/IntlPluralRulesPrototype.h: 180 * runtime/IntlRelativeTimeFormat.h: 181 * runtime/IntlRelativeTimeFormatPrototype.h: 182 * runtime/IntlSegmentIterator.h: 183 * runtime/IntlSegmentIteratorPrototype.h: 184 * runtime/IntlSegmenter.h: 185 * runtime/IntlSegmenterPrototype.h: 186 * runtime/IntlSegments.h: 187 * runtime/IntlSegmentsPrototype.h: 188 * runtime/IteratorPrototype.h: 189 * runtime/JSArray.h: 190 (JSC::JSArray::subspaceFor): 191 * runtime/JSArrayBuffer.h: 192 * runtime/JSArrayBufferPrototype.h: 193 * runtime/JSArrayIterator.h: 194 * runtime/JSAsyncGenerator.h: 195 * runtime/JSBigInt.h: 196 * runtime/JSBoundFunction.h: 197 * runtime/JSCallee.h: 198 (JSC::JSCallee::subspaceFor): 199 * runtime/JSCustomGetterFunction.h: 200 * runtime/JSCustomSetterFunction.h: 201 * runtime/JSDataView.h: 202 * runtime/JSDataViewPrototype.h: 203 * runtime/JSFinalizationRegistry.h: 204 * runtime/JSFunction.h: 205 (JSC::JSFunction::subspaceFor): 206 * runtime/JSGenerator.h: 207 * runtime/JSGenericTypedArrayView.h: 208 * runtime/JSGenericTypedArrayViewPrototype.h: 209 * runtime/JSGlobalLexicalEnvironment.h: 210 * runtime/JSGlobalObject.h: 211 (JSC::JSGlobalObject::subspaceFor): 212 * runtime/JSMap.h: 213 * runtime/JSMapIterator.h: 214 * runtime/JSModuleLoader.h: 215 * runtime/JSModuleNamespaceObject.h: 216 * runtime/JSModuleRecord.h: 217 * runtime/JSNativeStdFunction.h: 218 * runtime/JSONObject.h: 219 * runtime/JSPromise.h: 220 (JSC::JSPromise::subspaceFor): 221 * runtime/JSPromisePrototype.h: 222 (JSC::JSPromisePrototype::subspaceFor): 223 * runtime/JSPropertyNameEnumerator.h: 224 * runtime/JSProxy.h: 225 (JSC::JSProxy::subspaceFor): 226 * runtime/JSRemoteFunction.h: 227 * runtime/JSScriptFetchParameters.h: 228 * runtime/JSScriptFetcher.h: 229 * runtime/JSSet.h: 230 * runtime/JSSetIterator.h: 231 * runtime/JSSourceCode.h: 232 * runtime/JSString.h: 233 (JSC::JSString::subspaceFor): 234 * runtime/JSStringIterator.h: 235 * runtime/JSTemplateObjectDescriptor.h: 236 * runtime/JSTypedArrayViewPrototype.h: 237 * runtime/JSWeakObjectRef.h: 238 * runtime/JSWithScope.h: 239 * runtime/MapIteratorPrototype.h: 240 * runtime/MapPrototype.h: 241 * runtime/MathObject.h: 242 * runtime/ModuleProgramExecutable.h: 243 * runtime/NativeErrorPrototype.h: 244 * runtime/NativeExecutable.h: 245 * runtime/NumberObject.h: 246 (JSC::NumberObject::subspaceFor): 247 * runtime/ObjectPrototype.h: 248 * runtime/OptionsList.h: 249 * runtime/ProgramExecutable.h: 250 * runtime/PropertyTable.h: 251 * runtime/ProxyObject.h: 252 * runtime/ProxyRevoke.h: 253 * runtime/ReflectObject.h: 254 * runtime/RegExp.h: 255 * runtime/RegExpObject.h: 256 * runtime/RegExpPrototype.h: 257 * runtime/RegExpStringIteratorPrototype.h: 258 * runtime/ScopedArguments.h: 259 * runtime/ScopedArgumentsTable.h: 260 * runtime/ScriptExecutable.cpp: 261 (JSC::ScriptExecutable::clearCode): 262 (JSC::ScriptExecutable::installCode): 263 * runtime/SetIteratorPrototype.h: 264 * runtime/SetPrototype.h: 265 * runtime/ShadowRealmObject.h: 266 * runtime/ShadowRealmPrototype.h: 267 * runtime/SparseArrayValueMap.h: 268 * runtime/StrictEvalActivation.h: 269 * runtime/StringIteratorPrototype.h: 270 * runtime/StringObject.h: 271 (JSC::StringObject::subspaceFor): 272 * runtime/Structure.h: 273 (JSC::Structure::subspaceFor): 274 * runtime/StructureChain.h: 275 * runtime/StructureRareData.h: 276 * runtime/Symbol.h: 277 * runtime/SymbolObject.h: 278 * runtime/SymbolPrototype.h: 279 * runtime/SymbolTable.h: 280 * runtime/TemporalCalendar.h: 281 * runtime/TemporalCalendarPrototype.h: 282 * runtime/TemporalDuration.h: 283 * runtime/TemporalDurationPrototype.h: 284 * runtime/TemporalInstant.h: 285 * runtime/TemporalInstantPrototype.h: 286 * runtime/TemporalNow.h: 287 * runtime/TemporalObject.h: 288 * runtime/TemporalPlainTime.h: 289 * runtime/TemporalPlainTimePrototype.h: 290 * runtime/TemporalTimeZone.h: 291 * runtime/TemporalTimeZonePrototype.h: 292 * runtime/VM.cpp: 293 (JSC::VM::VM): 294 * runtime/VM.h: 295 (JSC::VM::codeBlockSpace): 296 (JSC::VM::functionExecutableSpace): 297 (JSC::VM::programExecutableSpace): 298 (JSC::VM::unlinkedFunctionExecutableSpace): 299 (JSC::VM::arraySpace): Deleted. 300 (JSC::VM::bigIntSpace): Deleted. 301 (JSC::VM::calleeSpace): Deleted. 302 (JSC::VM::clonedArgumentsSpace): Deleted. 303 (JSC::VM::customGetterSetterSpace): Deleted. 304 (JSC::VM::dateInstanceSpace): Deleted. 305 (JSC::VM::domAttributeGetterSetterSpace): Deleted. 306 (JSC::VM::exceptionSpace): Deleted. 307 (JSC::VM::executableToCodeBlockEdgeSpace): Deleted. 308 (JSC::VM::functionSpace): Deleted. 309 (JSC::VM::getterSetterSpace): Deleted. 310 (JSC::VM::globalLexicalEnvironmentSpace): Deleted. 311 (JSC::VM::internalFunctionSpace): Deleted. 312 (JSC::VM::jsProxySpace): Deleted. 313 (JSC::VM::nativeExecutableSpace): Deleted. 314 (JSC::VM::numberObjectSpace): Deleted. 315 (JSC::VM::plainObjectSpace): Deleted. 316 (JSC::VM::promiseSpace): Deleted. 317 (JSC::VM::propertyNameEnumeratorSpace): Deleted. 318 (JSC::VM::propertyTableSpace): Deleted. 319 (JSC::VM::regExpSpace): Deleted. 320 (JSC::VM::regExpObjectSpace): Deleted. 321 (JSC::VM::ropeStringSpace): Deleted. 322 (JSC::VM::scopedArgumentsSpace): Deleted. 323 (JSC::VM::sparseArrayValueMapSpace): Deleted. 324 (JSC::VM::stringSpace): Deleted. 325 (JSC::VM::stringObjectSpace): Deleted. 326 (JSC::VM::structureChainSpace): Deleted. 327 (JSC::VM::structureRareDataSpace): Deleted. 328 (JSC::VM::structureSpace): Deleted. 329 (JSC::VM::brandedStructureSpace): Deleted. 330 (JSC::VM::symbolTableSpace): Deleted. 331 * runtime/WeakMapImpl.h: 332 (JSC::WeakMapImpl::subspaceFor): 333 * runtime/WeakMapPrototype.h: 334 * runtime/WeakObjectRefPrototype.h: 335 * runtime/WeakSetPrototype.h: 336 * wasm/js/JSToWasmICCallee.h: 337 * wasm/js/JSWebAssembly.h: 338 * wasm/js/JSWebAssemblyException.h: 339 * wasm/js/JSWebAssemblyGlobal.h: 340 * wasm/js/JSWebAssemblyInstance.h: 341 * wasm/js/JSWebAssemblyMemory.h: 342 * wasm/js/JSWebAssemblyModule.h: 343 * wasm/js/JSWebAssemblyTable.h: 344 * wasm/js/JSWebAssemblyTag.h: 345 * wasm/js/WebAssemblyCompileErrorPrototype.h: 346 * wasm/js/WebAssemblyExceptionPrototype.h: 347 * wasm/js/WebAssemblyFunction.h: 348 * wasm/js/WebAssemblyGlobalPrototype.h: 349 * wasm/js/WebAssemblyInstancePrototype.h: 350 * wasm/js/WebAssemblyLinkErrorPrototype.h: 351 * wasm/js/WebAssemblyMemoryPrototype.h: 352 * wasm/js/WebAssemblyModulePrototype.h: 353 * wasm/js/WebAssemblyModuleRecord.h: 354 * wasm/js/WebAssemblyRuntimeErrorPrototype.h: 355 * wasm/js/WebAssemblyTablePrototype.h: 356 * wasm/js/WebAssemblyTagPrototype.h: 357 * wasm/js/WebAssemblyWrapperFunction.h: 358 1 359 2022-02-18 Joseph Griego <jgriego@igalia.com> 2 360 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> 4 4 * … … 1077 1077 stronglyVisitWeakReferences(locker, visitor); 1078 1078 1079 VM::SpaceAndSet::setFor(*subspace()).add(this);1079 Heap::SpaceAndSet::setFor(*subspace()).add(this); 1080 1080 } 1081 1081 … … 1665 1665 updateActivity(); 1666 1666 1667 VM::SpaceAndSet::setFor(*subspace()).remove(this);1667 Heap::SpaceAndSet::setFor(*subspace()).remove(this); 1668 1668 1669 1669 // In CodeBlock::shouldVisitStrongly() we may have decided to skip visiting this -
TabularUnified trunk/Source/JavaScriptCore/bytecode/EvalCodeBlock.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> 4 4 * … … 40 40 41 41 template<typename, SubspaceAccess> 42 static IsoSubspace* subspaceFor(VM& vm)42 static GCClient::IsoSubspace* subspaceFor(VM& vm) 43 43 { 44 return &vm.codeBlockSpace() .space;44 return &vm.codeBlockSpace(); 45 45 } 46 46 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/ExecutableToCodeBlockEdge.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return &vm.executableToCodeBlockEdgeSpace(); … … 91 91 92 92 } // namespace JSC 93 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/FunctionCodeBlock.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> 4 4 * … … 41 41 42 42 template<typename, SubspaceAccess> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 return &vm.codeBlockSpace() .space;45 return &vm.codeBlockSpace(); 46 46 } 47 47 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/ModuleProgramCodeBlock.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> 4 4 * … … 41 41 42 42 template<typename, SubspaceAccess> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 return &vm.codeBlockSpace() .space;45 return &vm.codeBlockSpace(); 46 46 } 47 47 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/ProgramCodeBlock.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca> 4 4 * … … 41 41 42 42 template<typename, SubspaceAccess> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 return &vm.codeBlockSpace() .space;45 return &vm.codeBlockSpace(); 46 46 } 47 47 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedEvalCodeBlock.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return vm.unlinkedEvalCodeBlockSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionCodeBlock.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.unlinkedFunctionCodeBlockSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 252 252 break; 253 253 } 254 vm.unlinkedFunctionExecutableSpace().set.add(this); 254 // FIXME GlobalGC: Need syncrhonization here for accessing the Heap server. 255 vm.heap.unlinkedFunctionExecutableSpaceAndSet.set.add(this); 255 256 return result; 256 257 } … … 310 311 clearIfDead(m_unlinkedCodeBlockForCall); 311 312 clearIfDead(m_unlinkedCodeBlockForConstruct); 312 if (isCleared && !isStillValid) 313 vm.unlinkedFunctionExecutableSpace().set.remove(this); 313 if (isCleared && !isStillValid) { 314 // FIXME GlobalGC: Need syncrhonization here for accessing the Heap server. 315 vm.heap.unlinkedFunctionExecutableSpaceAndSet.set.remove(this); 316 } 314 317 } 315 318 } -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 67 67 68 68 template<typename CellType, SubspaceAccess> 69 static IsoSubspace* subspaceFor(VM& vm)70 { 71 return &vm.unlinkedFunctionExecutableSpace() .space;69 static GCClient::IsoSubspace* subspaceFor(VM& vm) 70 { 71 return &vm.unlinkedFunctionExecutableSpace(); 72 72 } 73 73 … … 133 133 m_unlinkedCodeBlockForCall.clear(); 134 134 m_unlinkedCodeBlockForConstruct.clear(); 135 vm.unlinkedFunctionExecutableSpace().set.remove(this); 135 // FIXME GlobalGC: Need syncrhonization here for accessing the Heap server. 136 vm.heap.unlinkedFunctionExecutableSpaceAndSet.set.remove(this); 136 137 } 137 138 -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedModuleProgramCodeBlock.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return vm.unlinkedModuleProgramCodeBlockSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/bytecode/UnlinkedProgramCodeBlock.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.unlinkedProgramCodeBlockSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/debugger/DebuggerScope.h ¶
r278589 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 40 40 41 41 template<typename CellType, SubspaceAccess mode> 42 static IsoSubspace* subspaceFor(VM& vm)42 static GCClient::IsoSubspace* subspaceFor(VM& vm) 43 43 { 44 44 return vm.debuggerScopeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/heap/Heap.cpp ¶
r289863 r290129 49 49 #include "IsoCellSetInlines.h" 50 50 #include "IsoInlinedHeapCellTypeInlines.h" 51 #include "IsoSubspacePerVM.h" 51 52 #include "JITStubRoutineSet.h" 52 53 #include "JITWorklistInlines.h" … … 264 265 Heap& m_heap; 265 266 }; 267 268 #define INIT_SERVER_ISO_SUBSPACE(name, heapCellType, type) \ 269 , name ISO_SUBSPACE_INIT(*this, heapCellType, type) 270 271 #define INIT_SERVER_STRUCTURE_ISO_SUBSPACE(name, heapCellType, type) \ 272 , name("Isolated" #name "Space", *this, heapCellType, sizeof(type), type::numberOfLowerTierCells, makeUnique<StructureAlignedMemoryAllocator>("Structure")) 266 273 267 274 Heap::Heap(VM& vm, HeapType heapType) … … 360 367 , variableSizedCellSpace("Variable Sized JSCell", *this, cellHeapCellType, fastMallocAllocator.get()) // Hash:0xbcd769cc 361 368 , destructibleObjectSpace("JSDestructibleObject", *this, destructibleObjectHeapCellType, fastMallocAllocator.get()) // Hash:0x4f5ed7a9 362 , arraySpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSArray) 363 , bigIntSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSBigInt) 364 , calleeSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSCallee) 365 , clonedArgumentsSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, ClonedArguments) 366 , customGetterSetterSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, CustomGetterSetter) 367 , dateInstanceSpace ISO_SUBSPACE_INIT(*this, dateInstanceHeapCellType, DateInstance) 368 , domAttributeGetterSetterSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, DOMAttributeGetterSetter) 369 , exceptionSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, Exception) 370 , executableToCodeBlockEdgeSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, ExecutableToCodeBlockEdge) // Hash:0x7b730b20 371 , functionSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSFunction) // Hash:0x800fca72 372 , getterSetterSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, GetterSetter) 373 , globalLexicalEnvironmentSpace ISO_SUBSPACE_INIT(*this, globalLexicalEnvironmentHeapCellType, JSGlobalLexicalEnvironment) 374 , internalFunctionSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, InternalFunction) // Hash:0xf845c464 375 , jsProxySpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSProxy) 376 , nativeExecutableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, NativeExecutable) // Hash:0x67567f95 377 , numberObjectSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, NumberObject) 378 , plainObjectSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSNonFinalObject) // Mainly used for prototypes. 379 , promiseSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSPromise) 380 , propertyNameEnumeratorSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, JSPropertyNameEnumerator) 381 , propertyTableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, PropertyTable) // Hash:0xc6bc9f12 382 , regExpSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, RegExp) 383 , regExpObjectSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, RegExpObject) 384 , ropeStringSpace ISO_SUBSPACE_INIT(*this, stringHeapCellType, JSRopeString) 385 , scopedArgumentsSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, ScopedArguments) 386 , sparseArrayValueMapSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, SparseArrayValueMap) 387 , stringSpace ISO_SUBSPACE_INIT(*this, stringHeapCellType, JSString) // Hash:0x90cf758f 388 , stringObjectSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, StringObject) 389 , structureChainSpace ISO_SUBSPACE_INIT(*this, cellHeapCellType, StructureChain) 390 , structureRareDataSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, StructureRareData) // Hash:0xaca4e62d 391 , structureSpace("IsolatedStructureSpace", *this, destructibleCellHeapCellType, sizeof(Structure), Structure::numberOfLowerTierCells, makeUnique<StructureAlignedMemoryAllocator>("Structure")) 392 , brandedStructureSpace("IsolatedBrandedStructureSpace", *this, destructibleCellHeapCellType, sizeof(BrandedStructure), BrandedStructure::numberOfLowerTierCells, makeUnique<StructureAlignedMemoryAllocator>("Structure")) 393 , symbolTableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, SymbolTable) // Hash:0xc5215afd 369 FOR_EACH_JSC_COMMON_ISO_SUBSPACE(INIT_SERVER_ISO_SUBSPACE) 370 FOR_EACH_JSC_STRUCTURE_ISO_SUBSPACE(INIT_SERVER_STRUCTURE_ISO_SUBSPACE) 394 371 , executableToCodeBlockEdgesWithConstraints(executableToCodeBlockEdgeSpace) 395 372 , executableToCodeBlockEdgesWithFinalizers(executableToCodeBlockEdgeSpace) 396 , codeBlockSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, CodeBlock) // Hash:0x77e66ec9397 , functionExecutableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, FunctionExecutable) // Hash:0x5d158f3398 , programExecutableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, ProgramExecutable) // Hash:0x527c77e7399 , unlinkedFunctionExecutableSpace ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, UnlinkedFunctionExecutable) // Hash:0xf6b828d9373 , codeBlockSpaceAndSet ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, CodeBlock) // Hash:0x77e66ec9 374 , functionExecutableSpaceAndSet ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, FunctionExecutable) // Hash:0x5d158f3 375 , programExecutableSpaceAndSet ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, ProgramExecutable) // Hash:0x527c77e7 376 , unlinkedFunctionExecutableSpaceAndSet ISO_SUBSPACE_INIT(*this, destructibleCellHeapCellType, UnlinkedFunctionExecutable) // Hash:0xf6b828d9 400 377 401 378 { … … 434 411 } 435 412 413 #undef INIT_SERVER_ISO_SUBSPACE 414 #undef INIT_SERVER_STRUCTURE_ISO_SUBSPACE 415 436 416 Heap::~Heap() 437 417 { … … 448 428 for (WeakBlock* block : m_logicallyEmptyWeakBlocks) 449 429 WeakBlock::destroy(*this, block); 430 431 for (auto* perVMIsoSubspace : perVMIsoSubspaces) 432 perVMIsoSubspace->releaseIsoSubspace(*this); 450 433 } 451 434 … … 692 675 VM& vm = this->vm(); 693 676 vm.builtinExecutables()->finalizeUnconditionally(); 694 finalizeMarkedUnconditionalFinalizers<FunctionExecutable>(functionExecutableSpace .space);677 finalizeMarkedUnconditionalFinalizers<FunctionExecutable>(functionExecutableSpaceAndSet.space); 695 678 finalizeMarkedUnconditionalFinalizers<SymbolTable>(symbolTableSpace); 696 679 finalizeMarkedUnconditionalFinalizers<ExecutableToCodeBlockEdge>(executableToCodeBlockEdgesWithFinalizers); // We run this before CodeBlock's unconditional finalizer since CodeBlock looks at the owner executable's installed CodeBlock in its finalizeUnconditionally. … … 700 683 }); 701 684 finalizeMarkedUnconditionalFinalizers<StructureRareData>(structureRareDataSpace); 702 finalizeMarkedUnconditionalFinalizers<UnlinkedFunctionExecutable>(unlinkedFunctionExecutableSpace .set);685 finalizeMarkedUnconditionalFinalizers<UnlinkedFunctionExecutable>(unlinkedFunctionExecutableSpaceAndSet.set); 703 686 if (m_weakSetSpace) 704 687 finalizeMarkedUnconditionalFinalizers<JSWeakSet>(*m_weakSetSpace); … … 1058 1041 1059 1042 HeapIterationScope heapIterationScope(*this); 1060 unlinkedFunctionExecutableSpace .set.forEachLiveCell(1043 unlinkedFunctionExecutableSpaceAndSet.set.forEachLiveCell( 1061 1044 [&] (HeapCell* cell, HeapCell::Kind) { 1062 1045 UnlinkedFunctionExecutable* executable = static_cast<UnlinkedFunctionExecutable*>(cell); … … 3173 3156 } 3174 3157 3175 #define D YNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(name, heapCellType, type) \3158 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW(name, heapCellType, type) \ 3176 3159 IsoSubspace* Heap::name##Slow() \ 3177 3160 { \ … … 3183 3166 } 3184 3167 3185 3186 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(apiGlobalObjectSpace, apiGlobalObjectHeapCellType, JSAPIGlobalObject) 3187 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(apiValueWrapperSpace, cellHeapCellType, JSAPIValueWrapper) 3188 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(arrayBufferSpace, cellHeapCellType, JSArrayBuffer) 3189 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(arrayIteratorSpace, cellHeapCellType, JSArrayIterator) 3190 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(asyncGeneratorSpace, cellHeapCellType, JSAsyncGenerator) 3191 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(bigInt64ArraySpace, cellHeapCellType, JSBigInt64Array) 3192 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(bigIntObjectSpace, cellHeapCellType, BigIntObject) 3193 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(bigUint64ArraySpace, cellHeapCellType, JSBigUint64Array) 3194 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(booleanObjectSpace, cellHeapCellType, BooleanObject) 3195 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(boundFunctionSpace, cellHeapCellType, JSBoundFunction) // Hash:0xd7916d41 3196 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackConstructorSpace, callbackConstructorHeapCellType, JSCallbackConstructor) 3197 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackGlobalObjectSpace, callbackGlobalObjectHeapCellType, JSCallbackObject<JSGlobalObject>) 3198 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackFunctionSpace, cellHeapCellType, JSCallbackFunction) // Hash:0xe7648ebc 3199 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackObjectSpace, callbackObjectHeapCellType, JSCallbackObject<JSNonFinalObject>) 3200 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(customGetterFunctionSpace, customGetterFunctionHeapCellType, JSCustomGetterFunction) 3201 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(customSetterFunctionSpace, customSetterFunctionHeapCellType, JSCustomSetterFunction) 3202 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(dataViewSpace, cellHeapCellType, JSDataView) 3203 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(debuggerScopeSpace, cellHeapCellType, DebuggerScope) 3204 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(errorInstanceSpace, errorInstanceHeapCellType, ErrorInstance) // Hash:0x3f40d4a 3205 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(float32ArraySpace, cellHeapCellType, JSFloat32Array) 3206 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(float64ArraySpace, cellHeapCellType, JSFloat64Array) 3207 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(functionRareDataSpace, destructibleCellHeapCellType, FunctionRareData) 3208 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(generatorSpace, cellHeapCellType, JSGenerator) 3209 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(globalObjectSpace, globalObjectHeapCellType, JSGlobalObject) 3210 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(injectedScriptHostSpace, injectedScriptHostSpaceHeapCellType, Inspector::JSInjectedScriptHost) 3211 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int8ArraySpace, cellHeapCellType, JSInt8Array) 3212 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int16ArraySpace, cellHeapCellType, JSInt16Array) 3213 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(int32ArraySpace, cellHeapCellType, JSInt32Array) 3214 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(javaScriptCallFrameSpace, javaScriptCallFrameHeapCellType, Inspector::JSJavaScriptCallFrame) 3215 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(jsModuleRecordSpace, jsModuleRecordHeapCellType, JSModuleRecord) 3216 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapBucketSpace, cellHeapCellType, JSMap::BucketType) 3217 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapIteratorSpace, cellHeapCellType, JSMapIterator) 3218 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(mapSpace, cellHeapCellType, JSMap) 3219 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(moduleNamespaceObjectSpace, moduleNamespaceObjectHeapCellType, JSModuleNamespaceObject) 3220 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(nativeStdFunctionSpace, nativeStdFunctionHeapCellType, JSNativeStdFunction) // Hash:0x70ed61e4 3221 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyObjectSpace, cellHeapCellType, ProxyObject) 3222 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(proxyRevokeSpace, cellHeapCellType, ProxyRevoke) // Hash:0xb506a939 3223 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(remoteFunctionSpace, cellHeapCellType, JSRemoteFunction) 3224 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scopedArgumentsTableSpace, destructibleCellHeapCellType, ScopedArgumentsTable) 3225 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scriptFetchParametersSpace, destructibleCellHeapCellType, JSScriptFetchParameters) 3226 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(scriptFetcherSpace, destructibleCellHeapCellType, JSScriptFetcher) 3227 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setBucketSpace, cellHeapCellType, JSSet::BucketType) 3228 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setIteratorSpace, cellHeapCellType, JSSetIterator) 3229 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(setSpace, cellHeapCellType, JSSet) 3230 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(shadowRealmSpace, cellHeapCellType, ShadowRealmObject) 3231 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(strictEvalActivationSpace, cellHeapCellType, StrictEvalActivation) 3232 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(stringIteratorSpace, cellHeapCellType, JSStringIterator) 3233 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(sourceCodeSpace, destructibleCellHeapCellType, JSSourceCode) 3234 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(symbolSpace, destructibleCellHeapCellType, Symbol) 3235 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(symbolObjectSpace, cellHeapCellType, SymbolObject) 3236 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(templateObjectDescriptorSpace, destructibleCellHeapCellType, JSTemplateObjectDescriptor) 3237 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(temporalCalendarSpace, cellHeapCellType, TemporalCalendar) 3238 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(temporalDurationSpace, cellHeapCellType, TemporalDuration) 3239 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(temporalInstantSpace, cellHeapCellType, TemporalInstant) 3240 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(temporalPlainTimeSpace, cellHeapCellType, TemporalPlainTime) 3241 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(temporalTimeZoneSpace, cellHeapCellType, TemporalTimeZone) 3242 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint8ArraySpace, cellHeapCellType, JSUint8Array) 3243 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint8ClampedArraySpace, cellHeapCellType, JSUint8ClampedArray) 3244 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint16ArraySpace, cellHeapCellType, JSUint16Array) 3245 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(uint32ArraySpace, cellHeapCellType, JSUint32Array) 3246 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedEvalCodeBlockSpace, destructibleCellHeapCellType, UnlinkedEvalCodeBlock) 3247 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedFunctionCodeBlockSpace, destructibleCellHeapCellType, UnlinkedFunctionCodeBlock) 3248 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedModuleProgramCodeBlockSpace, destructibleCellHeapCellType, UnlinkedModuleProgramCodeBlock) 3249 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(unlinkedProgramCodeBlockSpace, destructibleCellHeapCellType, UnlinkedProgramCodeBlock) 3250 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakMapSpace, weakMapHeapCellType, JSWeakMap) // Hash:0x662b12a3 3251 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakSetSpace, weakSetHeapCellType, JSWeakSet) // Hash:0x4c781b30 3252 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(weakObjectRefSpace, cellHeapCellType, JSWeakObjectRef) // Hash:0x8ec68f1f 3253 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(withScopeSpace, cellHeapCellType, JSWithScope) 3254 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(finalizationRegistrySpace, finalizationRegistryCellType, JSFinalizationRegistry) 3255 #if JSC_OBJC_API_ENABLED 3256 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(apiWrapperObjectSpace, apiWrapperObjectHeapCellType, JSCallbackObject<JSAPIWrapperObject>) 3257 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(objCCallbackFunctionSpace, objCCallbackFunctionHeapCellType, ObjCCallbackFunction) // Hash:0x10f610b8 3258 #endif 3259 #ifdef JSC_GLIB_API_ENABLED 3260 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(apiWrapperObjectSpace, apiWrapperObjectHeapCellType, JSCallbackObject<JSAPIWrapperObject>) 3261 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(jscCallbackFunctionSpace, jscCallbackFunctionHeapCellType, JSCCallbackFunction) 3262 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(callbackAPIWrapperGlobalObjectSpace, callbackAPIWrapperGlobalObjectHeapCellType, JSCallbackObject<JSAPIWrapperGlobalObject>) 3263 #endif 3264 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlCollatorSpace, intlCollatorHeapCellType, IntlCollator) 3265 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlDateTimeFormatSpace, intlDateTimeFormatHeapCellType, IntlDateTimeFormat) 3266 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlDisplayNamesSpace, intlDisplayNamesHeapCellType, IntlDisplayNames) 3267 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlListFormatSpace, intlListFormatHeapCellType, IntlListFormat) 3268 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlLocaleSpace, intlLocaleHeapCellType, IntlLocale) 3269 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlNumberFormatSpace, intlNumberFormatHeapCellType, IntlNumberFormat) 3270 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlPluralRulesSpace, intlPluralRulesHeapCellType, IntlPluralRules) 3271 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlRelativeTimeFormatSpace, intlRelativeTimeFormatHeapCellType, IntlRelativeTimeFormat) 3272 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlSegmentIteratorSpace, intlSegmentIteratorHeapCellType, IntlSegmentIterator) 3273 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlSegmenterSpace, intlSegmenterHeapCellType, IntlSegmenter) 3274 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(intlSegmentsSpace, intlSegmentsHeapCellType, IntlSegments) 3275 #if ENABLE(WEBASSEMBLY) 3276 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(jsToWasmICCalleeSpace, cellHeapCellType, JSToWasmICCallee) 3277 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyExceptionSpace, webAssemblyExceptionHeapCellType, JSWebAssemblyException) 3278 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyFunctionSpace, webAssemblyFunctionHeapCellType, WebAssemblyFunction) // Hash:0x8b7c32db 3279 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyGlobalSpace, webAssemblyGlobalHeapCellType, JSWebAssemblyGlobal) 3280 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyInstanceSpace, webAssemblyInstanceHeapCellType, JSWebAssemblyInstance) 3281 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyMemorySpace, webAssemblyMemoryHeapCellType, JSWebAssemblyMemory) 3282 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyModuleSpace, webAssemblyModuleHeapCellType, JSWebAssemblyModule) 3283 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyModuleRecordSpace, webAssemblyModuleRecordHeapCellType, WebAssemblyModuleRecord) 3284 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyTableSpace, webAssemblyTableHeapCellType, JSWebAssemblyTable) 3285 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyTagSpace, webAssemblyTagHeapCellType, JSWebAssemblyTag) 3286 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW(webAssemblyWrapperFunctionSpace, cellHeapCellType, WebAssemblyWrapperFunction) // Hash:0xd4a5ff01 3287 #endif 3288 3289 #undef DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER_SLOW 3290 3291 #define DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER_SLOW(name, heapCellType, type) \ 3168 FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW) 3169 3170 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW 3171 3172 #define DEFINE_DYNAMIC_SPACE_AND_SET_MEMBER_SLOW(name, heapCellType, type) \ 3292 3173 IsoSubspace* Heap::name##Slow() \ 3293 3174 { \ … … 3299 3180 } 3300 3181 3301 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER_SLOW(evalExecutableSpace, destructibleCellHeapCellType, EvalExecutable) // Hash:0x958e3e9d 3302 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER_SLOW(moduleProgramExecutableSpace, destructibleCellHeapCellType, ModuleProgramExecutable) // Hash:0x6506fa3c 3303 3304 #undef DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER_SLOW 3182 DEFINE_DYNAMIC_SPACE_AND_SET_MEMBER_SLOW(evalExecutableSpace, destructibleCellHeapCellType, EvalExecutable) // Hash:0x958e3e9d 3183 DEFINE_DYNAMIC_SPACE_AND_SET_MEMBER_SLOW(moduleProgramExecutableSpace, destructibleCellHeapCellType, ModuleProgramExecutable) // Hash:0x6506fa3c 3184 3185 #undef DEFINE_DYNAMIC_SPACE_AND_SET_MEMBER_SLOW 3186 3187 3188 namespace GCClient { 3189 3190 #define INIT_CLIENT_ISO_SUBSPACE_FROM_SPACE_AND_SET(subspace) subspace(heap.subspace##AndSet.space) 3191 3192 #define INIT_CLIENT_ISO_SUBSPACE(name, heapCellType, type) \ 3193 , name(heap.name) 3194 3195 Heap::Heap(JSC::Heap& heap) 3196 : m_server(heap) 3197 FOR_EACH_JSC_ISO_SUBSPACE(INIT_CLIENT_ISO_SUBSPACE) 3198 , INIT_CLIENT_ISO_SUBSPACE_FROM_SPACE_AND_SET(codeBlockSpace) 3199 , INIT_CLIENT_ISO_SUBSPACE_FROM_SPACE_AND_SET(functionExecutableSpace) 3200 , INIT_CLIENT_ISO_SUBSPACE_FROM_SPACE_AND_SET(programExecutableSpace) 3201 , INIT_CLIENT_ISO_SUBSPACE_FROM_SPACE_AND_SET(unlinkedFunctionExecutableSpace) 3202 { 3203 } 3204 3205 Heap::~Heap() 3206 { 3207 for (auto* perVMIsoSubspace : perVMIsoSubspaces) 3208 perVMIsoSubspace->releaseClientIsoSubspace(vm()); 3209 } 3210 3211 #undef INIT_CLIENT_ISO_SUBSPACE 3212 #undef CLIENT_ISO_SUBSPACE_INIT_FROM_SPACE_AND_SET 3213 3214 3215 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW_IMPL(name, heapCellType, type) \ 3216 IsoSubspace* Heap::name##Slow() \ 3217 { \ 3218 ASSERT(!m_##name); \ 3219 Locker locker { server().m_lock }; \ 3220 JSC::IsoSubspace& serverSpace = *server().name<SubspaceAccess::OnMainThread>(); \ 3221 auto space = makeUnique<IsoSubspace>(serverSpace); \ 3222 WTF::storeStoreFence(); \ 3223 m_##name = WTFMove(space); \ 3224 return m_##name.get(); \ 3225 } 3226 3227 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW(name) \ 3228 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW_IMPL(name, unused, unused2) \ 3229 3230 FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW_IMPL) 3231 3232 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW(evalExecutableSpace) 3233 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW(moduleProgramExecutableSpace) 3234 3235 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW_IMPL 3236 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_SLOW 3237 3238 } // namespace GCClient 3305 3239 3306 3240 } // namespace JSC -
TabularUnified trunk/Source/JavaScriptCore/heap/Heap.h ¶
r289863 r290129 74 74 class HeapVerifier; 75 75 class IncrementalSweeper; 76 class IsoSubspacePerVM; 76 77 class JITStubRoutine; 77 78 class JITStubRoutineSet; … … 107 108 } 108 109 110 namespace GCClient { 111 class Heap; 112 } 113 114 #define FOR_EACH_JSC_COMMON_ISO_SUBSPACE(v) \ 115 v(arraySpace, cellHeapCellType, JSArray) \ 116 v(bigIntSpace, cellHeapCellType, JSBigInt) \ 117 v(calleeSpace, cellHeapCellType, JSCallee) \ 118 v(clonedArgumentsSpace, cellHeapCellType, ClonedArguments) \ 119 v(customGetterSetterSpace, cellHeapCellType, CustomGetterSetter) \ 120 v(dateInstanceSpace, dateInstanceHeapCellType, DateInstance) \ 121 v(domAttributeGetterSetterSpace, cellHeapCellType, DOMAttributeGetterSetter) \ 122 v(exceptionSpace, destructibleCellHeapCellType, Exception) \ 123 v(executableToCodeBlockEdgeSpace, cellHeapCellType, ExecutableToCodeBlockEdge) \ 124 v(functionSpace, cellHeapCellType, JSFunction) \ 125 v(getterSetterSpace, cellHeapCellType, GetterSetter) \ 126 v(globalLexicalEnvironmentSpace, globalLexicalEnvironmentHeapCellType, JSGlobalLexicalEnvironment) \ 127 v(internalFunctionSpace, cellHeapCellType, InternalFunction) \ 128 v(jsProxySpace, cellHeapCellType, JSProxy) \ 129 v(nativeExecutableSpace, destructibleCellHeapCellType, NativeExecutable) \ 130 v(numberObjectSpace, cellHeapCellType, NumberObject) \ 131 v(plainObjectSpace, cellHeapCellType, JSNonFinalObject) \ 132 v(promiseSpace, cellHeapCellType, JSPromise) \ 133 v(propertyNameEnumeratorSpace, cellHeapCellType, JSPropertyNameEnumerator) \ 134 v(propertyTableSpace, destructibleCellHeapCellType, PropertyTable) \ 135 v(regExpSpace, destructibleCellHeapCellType, RegExp) \ 136 v(regExpObjectSpace, cellHeapCellType, RegExpObject) \ 137 v(ropeStringSpace, stringHeapCellType, JSRopeString) \ 138 v(scopedArgumentsSpace, cellHeapCellType, ScopedArguments) \ 139 v(sparseArrayValueMapSpace, destructibleCellHeapCellType, SparseArrayValueMap) \ 140 v(stringSpace, stringHeapCellType, JSString) \ 141 v(stringObjectSpace, cellHeapCellType, StringObject) \ 142 v(structureChainSpace, cellHeapCellType, StructureChain) \ 143 v(structureRareDataSpace, destructibleCellHeapCellType, StructureRareData) \ 144 v(symbolTableSpace, destructibleCellHeapCellType, SymbolTable) 145 146 #define FOR_EACH_JSC_STRUCTURE_ISO_SUBSPACE(v) \ 147 v(structureSpace, destructibleCellHeapCellType, Structure) \ 148 v(brandedStructureSpace, destructibleCellHeapCellType, BrandedStructure) \ 149 150 #define FOR_EACH_JSC_ISO_SUBSPACE(v) \ 151 FOR_EACH_JSC_COMMON_ISO_SUBSPACE(v) \ 152 FOR_EACH_JSC_STRUCTURE_ISO_SUBSPACE(v) 153 154 #if JSC_OBJC_API_ENABLED 155 #define FOR_EACH_JSC_OBJC_API_DYNAMIC_ISO_SUBSPACE(v) \ 156 v(apiWrapperObjectSpace, apiWrapperObjectHeapCellType, JSCallbackObject<JSAPIWrapperObject>) \ 157 v(objCCallbackFunctionSpace, objCCallbackFunctionHeapCellType, ObjCCallbackFunction) 158 #else 159 #define FOR_EACH_JSC_OBJC_API_DYNAMIC_ISO_SUBSPACE(v) 160 #endif 161 162 #ifdef JSC_GLIB_API_ENABLED 163 #define FOR_EACH_JSC_GLIB_API_DYNAMIC_ISO_SUBSPACE(v) \ 164 v(apiWrapperObjectSpace, apiWrapperObjectHeapCellType, JSCallbackObject<JSAPIWrapperObject>) \ 165 v(jscCallbackFunctionSpace, jscCallbackFunctionHeapCellType, JSCCallbackFunction) \ 166 v(callbackAPIWrapperGlobalObjectSpace, callbackAPIWrapperGlobalObjectHeapCellType, JSCallbackObject<JSAPIWrapperGlobalObject>) 167 #else 168 #define FOR_EACH_JSC_GLIB_API_DYNAMIC_ISO_SUBSPACE(v) 169 #endif 170 171 #if ENABLE(WEBASSEMBLY) 172 #define FOR_EACH_JSC_WEBASSEMBLY_DYNAMIC_ISO_SUBSPACE(v) \ 173 v(jsToWasmICCalleeSpace, cellHeapCellType, JSToWasmICCallee) \ 174 v(webAssemblyExceptionSpace, webAssemblyExceptionHeapCellType, JSWebAssemblyException) \ 175 v(webAssemblyFunctionSpace, webAssemblyFunctionHeapCellType, WebAssemblyFunction) \ 176 v(webAssemblyGlobalSpace, webAssemblyGlobalHeapCellType, JSWebAssemblyGlobal) \ 177 v(webAssemblyInstanceSpace, webAssemblyInstanceHeapCellType, JSWebAssemblyInstance) \ 178 v(webAssemblyMemorySpace, webAssemblyMemoryHeapCellType, JSWebAssemblyMemory) \ 179 v(webAssemblyModuleSpace, webAssemblyModuleHeapCellType, JSWebAssemblyModule) \ 180 v(webAssemblyModuleRecordSpace, webAssemblyModuleRecordHeapCellType, WebAssemblyModuleRecord) \ 181 v(webAssemblyTableSpace, webAssemblyTableHeapCellType, JSWebAssemblyTable) \ 182 v(webAssemblyTagSpace, webAssemblyTagHeapCellType, JSWebAssemblyTag) \ 183 v(webAssemblyWrapperFunctionSpace, cellHeapCellType, WebAssemblyWrapperFunction) 184 #else 185 #define FOR_EACH_JSC_WEBASSEMBLY_DYNAMIC_ISO_SUBSPACE(v) 186 #endif 187 188 #define FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(v) \ 189 FOR_EACH_JSC_OBJC_API_DYNAMIC_ISO_SUBSPACE(v) \ 190 FOR_EACH_JSC_GLIB_API_DYNAMIC_ISO_SUBSPACE(v) \ 191 \ 192 v(apiGlobalObjectSpace, apiGlobalObjectHeapCellType, JSAPIGlobalObject) \ 193 v(apiValueWrapperSpace, cellHeapCellType, JSAPIValueWrapper) \ 194 v(arrayBufferSpace, cellHeapCellType, JSArrayBuffer) \ 195 v(arrayIteratorSpace, cellHeapCellType, JSArrayIterator) \ 196 v(asyncGeneratorSpace, cellHeapCellType, JSAsyncGenerator) \ 197 v(bigInt64ArraySpace, cellHeapCellType, JSBigInt64Array) \ 198 v(bigIntObjectSpace, cellHeapCellType, BigIntObject) \ 199 v(bigUint64ArraySpace, cellHeapCellType, JSBigUint64Array) \ 200 v(booleanObjectSpace, cellHeapCellType, BooleanObject) \ 201 v(boundFunctionSpace, cellHeapCellType, JSBoundFunction) \ 202 v(callbackConstructorSpace, callbackConstructorHeapCellType, JSCallbackConstructor) \ 203 v(callbackGlobalObjectSpace, callbackGlobalObjectHeapCellType, JSCallbackObject<JSGlobalObject>) \ 204 v(callbackFunctionSpace, cellHeapCellType, JSCallbackFunction) \ 205 v(callbackObjectSpace, callbackObjectHeapCellType, JSCallbackObject<JSNonFinalObject>) \ 206 v(customGetterFunctionSpace, customGetterFunctionHeapCellType, JSCustomGetterFunction) \ 207 v(customSetterFunctionSpace, customSetterFunctionHeapCellType, JSCustomSetterFunction) \ 208 v(dataViewSpace, cellHeapCellType, JSDataView) \ 209 v(debuggerScopeSpace, cellHeapCellType, DebuggerScope) \ 210 v(errorInstanceSpace, errorInstanceHeapCellType, ErrorInstance) \ 211 v(finalizationRegistrySpace, finalizationRegistryCellType, JSFinalizationRegistry) \ 212 v(float32ArraySpace, cellHeapCellType, JSFloat32Array) \ 213 v(float64ArraySpace, cellHeapCellType, JSFloat64Array) \ 214 v(functionRareDataSpace, destructibleCellHeapCellType, FunctionRareData) \ 215 v(generatorSpace, cellHeapCellType, JSGenerator) \ 216 v(globalObjectSpace, globalObjectHeapCellType, JSGlobalObject) \ 217 v(injectedScriptHostSpace, injectedScriptHostSpaceHeapCellType, Inspector::JSInjectedScriptHost) \ 218 v(int8ArraySpace, cellHeapCellType, JSInt8Array) \ 219 v(int16ArraySpace, cellHeapCellType, JSInt16Array) \ 220 v(int32ArraySpace, cellHeapCellType, JSInt32Array) \ 221 v(intlCollatorSpace, intlCollatorHeapCellType, IntlCollator) \ 222 v(intlDateTimeFormatSpace, intlDateTimeFormatHeapCellType, IntlDateTimeFormat) \ 223 v(intlDisplayNamesSpace, intlDisplayNamesHeapCellType, IntlDisplayNames) \ 224 v(intlListFormatSpace, intlListFormatHeapCellType, IntlListFormat) \ 225 v(intlLocaleSpace, intlLocaleHeapCellType, IntlLocale) \ 226 v(intlNumberFormatSpace, intlNumberFormatHeapCellType, IntlNumberFormat) \ 227 v(intlPluralRulesSpace, intlPluralRulesHeapCellType, IntlPluralRules) \ 228 v(intlRelativeTimeFormatSpace, intlRelativeTimeFormatHeapCellType, IntlRelativeTimeFormat) \ 229 v(intlSegmentIteratorSpace, intlSegmentIteratorHeapCellType, IntlSegmentIterator) \ 230 v(intlSegmenterSpace, intlSegmenterHeapCellType, IntlSegmenter) \ 231 v(intlSegmentsSpace, intlSegmentsHeapCellType, IntlSegments) \ 232 v(javaScriptCallFrameSpace, javaScriptCallFrameHeapCellType, Inspector::JSJavaScriptCallFrame) \ 233 v(jsModuleRecordSpace, jsModuleRecordHeapCellType, JSModuleRecord) \ 234 v(mapBucketSpace, cellHeapCellType, JSMap::BucketType) \ 235 v(mapIteratorSpace, cellHeapCellType, JSMapIterator) \ 236 v(mapSpace, cellHeapCellType, JSMap) \ 237 v(moduleNamespaceObjectSpace, moduleNamespaceObjectHeapCellType, JSModuleNamespaceObject) \ 238 v(nativeStdFunctionSpace, nativeStdFunctionHeapCellType, JSNativeStdFunction) \ 239 v(proxyObjectSpace, cellHeapCellType, ProxyObject) \ 240 v(proxyRevokeSpace, cellHeapCellType, ProxyRevoke) \ 241 v(remoteFunctionSpace, cellHeapCellType, JSRemoteFunction) \ 242 v(scopedArgumentsTableSpace, destructibleCellHeapCellType, ScopedArgumentsTable) \ 243 v(scriptFetchParametersSpace, destructibleCellHeapCellType, JSScriptFetchParameters) \ 244 v(scriptFetcherSpace, destructibleCellHeapCellType, JSScriptFetcher) \ 245 v(setBucketSpace, cellHeapCellType, JSSet::BucketType) \ 246 v(setIteratorSpace, cellHeapCellType, JSSetIterator) \ 247 v(setSpace, cellHeapCellType, JSSet) \ 248 v(shadowRealmSpace, cellHeapCellType, ShadowRealmObject) \ 249 v(strictEvalActivationSpace, cellHeapCellType, StrictEvalActivation) \ 250 v(stringIteratorSpace, cellHeapCellType, JSStringIterator) \ 251 v(sourceCodeSpace, destructibleCellHeapCellType, JSSourceCode) \ 252 v(symbolSpace, destructibleCellHeapCellType, Symbol) \ 253 v(symbolObjectSpace, cellHeapCellType, SymbolObject) \ 254 v(templateObjectDescriptorSpace, destructibleCellHeapCellType, JSTemplateObjectDescriptor) \ 255 v(temporalCalendarSpace, cellHeapCellType, TemporalCalendar) \ 256 v(temporalDurationSpace, cellHeapCellType, TemporalDuration) \ 257 v(temporalInstantSpace, cellHeapCellType, TemporalInstant) \ 258 v(temporalPlainTimeSpace, cellHeapCellType, TemporalPlainTime) \ 259 v(temporalTimeZoneSpace, cellHeapCellType, TemporalTimeZone) \ 260 v(uint8ArraySpace, cellHeapCellType, JSUint8Array) \ 261 v(uint8ClampedArraySpace, cellHeapCellType, JSUint8ClampedArray) \ 262 v(uint16ArraySpace, cellHeapCellType, JSUint16Array) \ 263 v(uint32ArraySpace, cellHeapCellType, JSUint32Array) \ 264 v(unlinkedEvalCodeBlockSpace, destructibleCellHeapCellType, UnlinkedEvalCodeBlock) \ 265 v(unlinkedFunctionCodeBlockSpace, destructibleCellHeapCellType, UnlinkedFunctionCodeBlock) \ 266 v(unlinkedModuleProgramCodeBlockSpace, destructibleCellHeapCellType, UnlinkedModuleProgramCodeBlock) \ 267 v(unlinkedProgramCodeBlockSpace, destructibleCellHeapCellType, UnlinkedProgramCodeBlock) \ 268 v(weakObjectRefSpace, cellHeapCellType, JSWeakObjectRef) \ 269 v(weakMapSpace, weakMapHeapCellType, JSWeakMap) \ 270 v(weakSetSpace, weakSetHeapCellType, JSWeakSet) \ 271 v(withScopeSpace, cellHeapCellType, JSWithScope) \ 272 \ 273 FOR_EACH_JSC_WEBASSEMBLY_DYNAMIC_ISO_SUBSPACE(v) 274 275 109 276 typedef HashCountedSet<JSCell*> ProtectCountSet; 110 277 typedef HashCountedSet<const char*> TypeCountSet; … … 407 574 friend class HeapUtil; 408 575 friend class HeapVerifier; 576 friend class IsoSubspacePerVM; 409 577 friend class JITStubRoutine; 410 578 friend class LLIntOffsetsExtractor; … … 426 594 friend class HeapThread; 427 595 596 friend class GCClient::Heap; 597 428 598 static constexpr size_t minExtraMemory = 256; 429 599 … … 435 605 void finalize(Handle<Unknown>, void* context) final; 436 606 }; 607 608 Lock& lock() { return m_lock; } 437 609 438 610 JS_EXPORT_PRIVATE void reportExtraMemoryAllocatedSlowCase(size_t); … … 576 748 void verifyGC(); 577 749 750 Lock m_lock; 578 751 const HeapType m_heapType; 579 752 MutatorState m_mutatorState { MutatorState::Running }; … … 836 1009 CompleteSubspace destructibleObjectSpace; 837 1010 838 IsoSubspace arraySpace; 839 IsoSubspace bigIntSpace; 840 IsoSubspace calleeSpace; 841 IsoSubspace clonedArgumentsSpace; 842 IsoSubspace customGetterSetterSpace; 843 IsoSubspace dateInstanceSpace; 844 IsoSubspace domAttributeGetterSetterSpace; 845 IsoSubspace exceptionSpace; 846 IsoSubspace executableToCodeBlockEdgeSpace; 847 IsoSubspace functionSpace; 848 IsoSubspace getterSetterSpace; 849 IsoSubspace globalLexicalEnvironmentSpace; 850 IsoSubspace internalFunctionSpace; 851 IsoSubspace jsProxySpace; 852 IsoSubspace nativeExecutableSpace; 853 IsoSubspace numberObjectSpace; 854 IsoSubspace plainObjectSpace; 855 IsoSubspace promiseSpace; 856 IsoSubspace propertyNameEnumeratorSpace; 857 IsoSubspace propertyTableSpace; 858 IsoSubspace regExpSpace; 859 IsoSubspace regExpObjectSpace; 860 IsoSubspace ropeStringSpace; 861 IsoSubspace scopedArgumentsSpace; 862 IsoSubspace sparseArrayValueMapSpace; 863 IsoSubspace stringSpace; 864 IsoSubspace stringObjectSpace; 865 IsoSubspace structureChainSpace; 866 IsoSubspace structureRareDataSpace; 867 IsoSubspace structureSpace; 868 IsoSubspace brandedStructureSpace; 869 IsoSubspace symbolTableSpace; 870 871 #define DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(name) \ 1011 #define DECLARE_ISO_SUBSPACE(name, heapCellType, type) \ 1012 IsoSubspace name; 1013 1014 FOR_EACH_JSC_ISO_SUBSPACE(DECLARE_ISO_SUBSPACE) 1015 #undef DECLARE_ISO_SUBSPACE 1016 1017 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER(name, heapCellType, type) \ 872 1018 template<SubspaceAccess mode> \ 873 1019 IsoSubspace* name() \ … … 880 1026 std::unique_ptr<IsoSubspace> m_##name; 881 1027 882 883 #if JSC_OBJC_API_ENABLED 884 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiWrapperObjectSpace) 885 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(objCCallbackFunctionSpace) 886 #endif 887 #ifdef JSC_GLIB_API_ENABLED 888 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiWrapperObjectSpace) 889 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jscCallbackFunctionSpace) 890 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackAPIWrapperGlobalObjectSpace) 891 #endif 892 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiGlobalObjectSpace) 893 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiValueWrapperSpace) 894 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(arrayBufferSpace) 895 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(arrayIteratorSpace) 896 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(asyncGeneratorSpace) 897 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigInt64ArraySpace) 898 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigIntObjectSpace) 899 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigUint64ArraySpace) 900 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(booleanObjectSpace) 901 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(boundFunctionSpace) 902 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackConstructorSpace) 903 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackGlobalObjectSpace) 904 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackFunctionSpace) 905 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackObjectSpace) 906 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(customGetterFunctionSpace) 907 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(customSetterFunctionSpace) 908 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(dataViewSpace) 909 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(debuggerScopeSpace) 910 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(errorInstanceSpace) 911 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(float32ArraySpace) 912 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(float64ArraySpace) 913 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(functionRareDataSpace) 914 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(generatorSpace) 915 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(globalObjectSpace) 916 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(injectedScriptHostSpace) 917 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int8ArraySpace) 918 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int16ArraySpace) 919 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int32ArraySpace) 920 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(javaScriptCallFrameSpace) 921 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jsModuleRecordSpace) 922 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapBucketSpace) 923 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapIteratorSpace) 924 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapSpace) 925 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(moduleNamespaceObjectSpace) 926 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(nativeStdFunctionSpace) 927 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyObjectSpace) 928 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyRevokeSpace) 929 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(remoteFunctionSpace) 930 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scopedArgumentsTableSpace) 931 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetchParametersSpace) 932 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetcherSpace) 933 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setBucketSpace) 934 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setIteratorSpace) 935 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setSpace) 936 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(shadowRealmSpace); 937 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(strictEvalActivationSpace) 938 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(stringIteratorSpace) 939 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(sourceCodeSpace) 940 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolSpace) 941 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolObjectSpace) 942 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(templateObjectDescriptorSpace) 943 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalCalendarSpace) 944 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalDurationSpace) 945 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalInstantSpace) 946 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalPlainTimeSpace) 947 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalTimeZoneSpace) 948 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ArraySpace) 949 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ClampedArraySpace) 950 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint16ArraySpace) 951 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint32ArraySpace) 952 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedEvalCodeBlockSpace) 953 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedFunctionCodeBlockSpace) 954 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedModuleProgramCodeBlockSpace) 955 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedProgramCodeBlockSpace) 956 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(finalizationRegistrySpace) 957 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakObjectRefSpace) 958 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakSetSpace) 959 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakMapSpace) 960 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(withScopeSpace) 961 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlCollatorSpace) 962 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlDateTimeFormatSpace) 963 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlDisplayNamesSpace) 964 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlListFormatSpace) 965 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlLocaleSpace) 966 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlNumberFormatSpace) 967 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlPluralRulesSpace) 968 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlRelativeTimeFormatSpace) 969 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmentIteratorSpace) 970 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmenterSpace) 971 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmentsSpace) 972 #if ENABLE(WEBASSEMBLY) 973 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jsToWasmICCalleeSpace) 974 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyExceptionSpace) 975 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyFunctionSpace) 976 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyGlobalSpace) 977 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyInstanceSpace) 978 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyMemorySpace) 979 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyModuleSpace) 980 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyModuleRecordSpace) 981 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyTableSpace) 982 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyTagSpace) 983 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyWrapperFunctionSpace) 984 #endif 985 986 #undef DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER 1028 FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER) 1029 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER 987 1030 988 1031 IsoCellSet executableToCodeBlockEdgesWithConstraints; … … 1023 1066 } 1024 1067 }; 1025 1026 SpaceAndSet codeBlockSpace ;1068 1069 SpaceAndSet codeBlockSpaceAndSet; 1027 1070 1028 1071 template<typename Func> 1029 1072 void forEachCodeBlockSpace(const Func& func) 1030 1073 { 1031 func(codeBlockSpace );1074 func(codeBlockSpaceAndSet); 1032 1075 } 1033 1076 1034 1077 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER(evalExecutableSpace) 1035 1078 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER(moduleProgramExecutableSpace) 1036 SpaceAndSet functionExecutableSpace ;1037 SpaceAndSet programExecutableSpace ;1079 SpaceAndSet functionExecutableSpaceAndSet; 1080 SpaceAndSet programExecutableSpaceAndSet; 1038 1081 1039 1082 template<typename Func> … … 1042 1085 if (m_evalExecutableSpace) 1043 1086 func(*m_evalExecutableSpace); 1044 func(functionExecutableSpace );1087 func(functionExecutableSpaceAndSet); 1045 1088 if (m_moduleProgramExecutableSpace) 1046 1089 func(*m_moduleProgramExecutableSpace); 1047 func(programExecutableSpace );1090 func(programExecutableSpaceAndSet); 1048 1091 } 1049 1092 1050 SpaceAndSet unlinkedFunctionExecutableSpace; 1051 1093 SpaceAndSet unlinkedFunctionExecutableSpaceAndSet; 1094 1095 Vector<IsoSubspacePerVM*> perVMIsoSubspaces; 1052 1096 #undef DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER 1053 1097 }; 1054 1098 1099 namespace GCClient { 1100 1101 class Heap { 1102 WTF_MAKE_NONCOPYABLE(Heap); 1103 public: 1104 Heap(JSC::Heap&); 1105 ~Heap(); 1106 1107 VM& vm() const; 1108 JSC::Heap& server() { return m_server; } 1109 1110 // FIXME GlobalGC: need a GCClient::Heap::lastChanceToFinalize() and in there, 1111 // relinquish memory from the IsoSubspace LocalAllocators back to the server. 1112 // Currently, this is being handled by BlockDirectory::stopAllocatingForGood(). 1113 1114 private: 1115 JSC::Heap& m_server; 1116 1117 #define DECLARE_ISO_SUBSPACE(name, heapCellType, type) \ 1118 IsoSubspace name; 1119 1120 FOR_EACH_JSC_ISO_SUBSPACE(DECLARE_ISO_SUBSPACE) 1121 #undef DECLARE_ISO_SUBSPACE 1122 1123 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_IMPL(name, heapCellType, type) \ 1124 template<SubspaceAccess mode> \ 1125 IsoSubspace* name() \ 1126 { \ 1127 if (m_##name || mode == SubspaceAccess::Concurrently) \ 1128 return m_##name.get(); \ 1129 return name##Slow(); \ 1130 } \ 1131 JS_EXPORT_PRIVATE IsoSubspace* name##Slow(); \ 1132 std::unique_ptr<IsoSubspace> m_##name; 1133 1134 #define DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER(name) \ 1135 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_IMPL(name, unused, unused2) 1136 1137 FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_IMPL) 1138 1139 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER(evalExecutableSpace) 1140 DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER(moduleProgramExecutableSpace) 1141 1142 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER_IMPL 1143 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_MEMBER 1144 1145 IsoSubspace codeBlockSpace; 1146 IsoSubspace functionExecutableSpace; 1147 IsoSubspace programExecutableSpace; 1148 IsoSubspace unlinkedFunctionExecutableSpace; 1149 1150 Vector<IsoSubspacePerVM*> perVMIsoSubspaces; 1151 1152 friend class JSC::VM; 1153 friend class JSC::IsoSubspacePerVM; 1154 }; 1155 1156 } // namespace GCClient 1157 1055 1158 } // namespace JSC -
TabularUnified trunk/Source/JavaScriptCore/heap/HeapInlines.h ¶
r285687 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 271 271 } 272 272 273 namespace GCClient { 274 275 ALWAYS_INLINE VM& Heap::vm() const 276 { 277 return *bitwise_cast<VM*>(bitwise_cast<uintptr_t>(this) - OBJECT_OFFSETOF(VM, clientHeap)); 278 } 279 280 } // namespace GCClient 281 273 282 } // namespace JSC -
TabularUnified trunk/Source/JavaScriptCore/heap/IsoSubspace.cpp ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 37 37 : Subspace(name, heap) 38 38 , m_directory(WTF::roundUpToMultipleOf<MarkedBlock::atomSize>(size)) 39 , m_localAllocator(&m_directory)40 39 , m_isoAlignedMemoryAllocator(allocator ? WTFMove(allocator) : makeUnique<IsoAlignedMemoryAllocator>(name)) 41 40 { … … 120 119 } 121 120 121 namespace GCClient { 122 123 IsoSubspace::IsoSubspace(JSC::IsoSubspace& server) 124 : m_localAllocator(&server.m_directory) 125 { 126 } 127 128 } // namespace GCClient 129 122 130 } // namespace JSC 123 131 -
TabularUnified trunk/Source/JavaScriptCore/heap/IsoSubspace.h ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 class IsoCellSet; 37 37 38 namespace GCClient { 39 class IsoSubspace; 40 } 41 38 42 class IsoSubspace : public Subspace { 39 43 public: … … 42 46 43 47 size_t cellSize() { return m_directory.cellSize(); } 44 45 Allocator allocatorFor(size_t, AllocatorForMode);46 47 void* allocate(VM&, size_t, GCDeferralContext*, AllocationFailureMode);48 48 49 49 void sweepLowerTierCell(PreciseAllocation*); … … 59 59 private: 60 60 friend class IsoCellSet; 61 friend class GCClient::IsoSubspace; 61 62 62 63 void didResizeBits(unsigned newSize) override; 63 64 void didRemoveBlock(unsigned blockIndex) override; 64 65 void didBeginSweepingToFreeList(MarkedBlock::Handle*) override; 65 66 66 67 BlockDirectory m_directory; 67 LocalAllocator m_localAllocator;68 68 std::unique_ptr<IsoMemoryAllocatorBase> m_isoAlignedMemoryAllocator; 69 69 SentinelLinkedList<PreciseAllocation, PackedRawSentinelNode<PreciseAllocation>> m_lowerTierFreeList; 70 70 SentinelLinkedList<IsoCellSet, PackedRawSentinelNode<IsoCellSet>> m_cellSets; 71 }; 72 73 74 namespace GCClient { 75 76 class IsoSubspace { 77 WTF_MAKE_NONCOPYABLE(IsoSubspace); 78 WTF_MAKE_FAST_ALLOCATED; 79 public: 80 JS_EXPORT_PRIVATE IsoSubspace(JSC::IsoSubspace&); 81 JS_EXPORT_PRIVATE ~IsoSubspace() = default; 82 83 size_t cellSize() { return m_localAllocator.cellSize(); } 84 85 Allocator allocatorFor(size_t, AllocatorForMode); 86 87 void* allocate(VM&, size_t, GCDeferralContext*, AllocationFailureMode); 88 89 private: 90 LocalAllocator m_localAllocator; 71 91 }; 72 92 … … 76 96 return Allocator(&m_localAllocator); 77 97 } 98 99 } // namespace GCClient 78 100 79 101 #define ISO_SUBSPACE_INIT(heap, heapCellType, type) ("Isolated " #type " Space", (heap), (heapCellType), sizeof(type), type::numberOfLowerTierCells) -
TabularUnified trunk/Source/JavaScriptCore/heap/IsoSubspaceInlines.h ¶
r286572 r290129 1 1 /* 2 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 namespace JSC { 29 29 30 namespace GCClient { 31 30 32 ALWAYS_INLINE void* IsoSubspace::allocate(VM& vm, size_t size, GCDeferralContext* deferralContext, AllocationFailureMode failureMode) 31 33 { … … 35 37 return result; 36 38 } 39 40 } // namespace GCClient 37 41 38 42 inline void IsoSubspace::clearIsoCellSetBit(PreciseAllocation* preciseAllocation) -
TabularUnified trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.cpp ¶
r286042 r290129 1 1 /* 2 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 32 32 namespace JSC { 33 33 34 class IsoSubspacePerVM::AutoremovingIsoSubspace final : public IsoSubspace { 35 public: 36 AutoremovingIsoSubspace(IsoSubspacePerVM& perVM, CString name, Heap& heap, const HeapCellType& heapCellType, size_t size) 37 : IsoSubspace(name, heap, heapCellType, size, /* numberOfLowerTierCells */ 0) 38 , m_perVM(perVM) 39 { 40 } 41 42 ~AutoremovingIsoSubspace() final 43 { 44 Locker locker { m_perVM.m_lock }; 45 m_perVM.m_subspacePerVM.remove(&space().heap().vm()); 46 } 47 48 private: 49 IsoSubspacePerVM& m_perVM; 50 }; 51 52 IsoSubspacePerVM::IsoSubspacePerVM(Function<SubspaceParameters(VM&)> subspaceParameters) 34 IsoSubspacePerVM::IsoSubspacePerVM(Function<SubspaceParameters(Heap&)> subspaceParameters) 53 35 : m_subspaceParameters(WTFMove(subspaceParameters)) 54 36 { … … 60 42 } 61 43 62 IsoSubspace& IsoSubspacePerVM:: forVM(VM& vm)44 IsoSubspace& IsoSubspacePerVM::isoSubspaceforHeap(LockHolder&, Heap& heap) 63 45 { 64 Locker locker { m_lock }; 65 auto result = m_subspacePerVM.add(&vm, nullptr); 46 auto result = m_subspacePerHeap.add(&heap, nullptr); 66 47 if (result.isNewEntry) { 67 SubspaceParameters params = m_subspaceParameters(vm); 68 result.iterator->value = new AutoremovingIsoSubspace(*this, params.name, vm.heap, *params.heapCellType, params.size); 48 SubspaceParameters params = m_subspaceParameters(heap); 49 result.iterator->value = new IsoSubspace(params.name, heap, *params.heapCellType, params.size, 0); 50 51 Locker locker { heap.lock() }; 52 heap.perVMIsoSubspaces.append(this); 69 53 } 70 54 return *result.iterator->value; 71 55 } 72 56 57 GCClient::IsoSubspace& IsoSubspacePerVM::clientIsoSubspaceforVM(VM& vm) 58 { 59 Locker locker { m_lock }; 60 auto result = m_clientSubspacePerVM.add(&vm, nullptr); 61 if (!result.isNewEntry && result.iterator->value) 62 return *result.iterator->value; 63 64 IsoSubspace& subspace = isoSubspaceforHeap(locker, vm.heap); 65 66 result.iterator->value = new GCClient::IsoSubspace(subspace); 67 vm.clientHeap.perVMIsoSubspaces.append(this); 68 return *result.iterator->value; 69 } 70 71 void IsoSubspacePerVM::releaseIsoSubspace(Heap& heap) 72 { 73 IsoSubspace* subspace; 74 { 75 Locker locker { m_lock }; 76 subspace = m_subspacePerHeap.take(&heap); 77 } 78 delete subspace; 79 } 80 81 void IsoSubspacePerVM::releaseClientIsoSubspace(VM& vm) 82 { 83 GCClient::IsoSubspace* clientSubspace; 84 { 85 Locker locker { m_lock }; 86 clientSubspace = m_clientSubspacePerVM.take(&vm); 87 } 88 delete clientSubspace; 89 } 90 73 91 } // namespace JSC 74 92 -
TabularUnified trunk/Source/JavaScriptCore/heap/IsoSubspacePerVM.h ¶
r286042 r290129 1 1 /* 2 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 33 33 namespace JSC { 34 34 35 class Heap; 36 class VM; 37 35 38 // This is an appropriate way to stash IsoSubspaces for rarely-used classes or classes that are mostly 36 39 // sure to be main-thread-only. But if a class typically gets instantiated from multiple threads at 37 40 // once, then this is not great, because concurrent allocations will probably contend on this thing's 38 41 // lock. 42 // 43 // Usage: A IsoSubspacePerVM instance is instantiated using NeverDestroyed i.e. each IsoSubspacePerVM 44 // instance is immortal for the life of the process. There is one IsoSubspace type per IsoSubspacePerVM. 45 // IsoSubspacePerVM itself is a factory for those IsoSubspaces per VM and per Heap. IsoSubspacePerVM 46 // also serves as the manager of the IsoSubspaces. Client VMs are responsible for calling 47 // releaseClientIsoSubspace() to release the IsoSubspace when the VM shuts down. Similarly, if the 48 // Heap is not an immortal singleton heap (when global GC is enabled), the per Heap IsoSubspace also 49 // needs to be released when the Heap is destructed. 39 50 class IsoSubspacePerVM final { 40 51 public: … … 54 65 }; 55 66 56 JS_EXPORT_PRIVATE IsoSubspacePerVM(Function<SubspaceParameters( VM&)>);67 JS_EXPORT_PRIVATE IsoSubspacePerVM(Function<SubspaceParameters(Heap&)>); 57 68 JS_EXPORT_PRIVATE ~IsoSubspacePerVM(); 58 69 59 JS_EXPORT_PRIVATE IsoSubspace& forVM(VM&); 70 JS_EXPORT_PRIVATE GCClient::IsoSubspace& clientIsoSubspaceforVM(VM&); 71 72 // FIXME: GlobalGC: this is only needed until we have a immortal singleton heap with GlobalGC. 73 void releaseIsoSubspace(Heap&); 74 75 void releaseClientIsoSubspace(VM&); 60 76 61 77 private: 62 class AutoremovingIsoSubspace; 63 friend class AutoremovingIsoSubspace; 78 IsoSubspace& isoSubspaceforHeap(LockHolder&, Heap&); 64 79 65 80 Lock m_lock; 66 HashMap<VM*, IsoSubspace*> m_subspacePerVM WTF_GUARDED_BY_LOCK(m_lock); 67 Function<SubspaceParameters(VM&)> m_subspaceParameters; 81 82 HashMap<Heap*, IsoSubspace*> m_subspacePerHeap; 83 HashMap<VM*, GCClient::IsoSubspace*> m_clientSubspacePerVM WTF_GUARDED_BY_LOCK(m_lock); 84 Function<SubspaceParameters(Heap&)> m_subspaceParameters; 68 85 }; 69 86 -
TabularUnified trunk/Source/JavaScriptCore/heap/LocalAllocator.cpp ¶
r277909 r290129 135 135 return result; 136 136 137 // FIXME GlobalGC: Need to synchronize here to when allocating from the BlockDirectory in the server. 138 137 139 Subspace* subspace = m_directory->m_subspace; 138 140 if (subspace->isIsoSubspace()) { … … 165 167 void* LocalAllocator::tryAllocateWithoutCollecting() 166 168 { 169 // FIXME: GlobalGC 167 170 // FIXME: If we wanted this to be used for real multi-threaded allocations then we would have to 168 171 // come up with some concurrency protocol here. That protocol would need to be able to handle: … … 250 253 void LocalAllocator::doTestCollectionsIfNeeded(Heap& heap, GCDeferralContext* deferralContext) 251 254 { 252 if ( !Options::slowPathAllocsBetweenGCs())255 if (LIKELY(!Options::slowPathAllocsBetweenGCs())) 253 256 return; 254 257 -
TabularUnified trunk/Source/JavaScriptCore/heap/LocalAllocator.h ¶
r254023 r290129 1 1 /* 2 * Copyright (C) 2018 Apple Inc. All rights reserved.2 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 public: 43 43 LocalAllocator(BlockDirectory*); 44 ~LocalAllocator();44 JS_EXPORT_PRIVATE ~LocalAllocator(); 45 45 46 46 void* allocate(Heap&, GCDeferralContext*, AllocationFailureMode); … … 57 57 58 58 bool isFreeListedCell(const void*) const; 59 59 60 BlockDirectory& directory() const { return *m_directory; } 61 60 62 private: 61 63 friend class BlockDirectory; -
TabularUnified trunk/Source/JavaScriptCore/heap/MarkedBlock.cpp ¶
r277909 r290129 1 1 /* 2 * Copyright (C) 2011-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2011-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 148 148 freeList.forEach( 149 149 [&] (HeapCell* cell) { 150 if (MarkedBlockInternal::verbose)150 if constexpr (MarkedBlockInternal::verbose) 151 151 dataLog("Free cell: ", RawPointer(cell), "\n"); 152 152 if (m_attributes.destruction == NeedsDestruction) -
TabularUnified trunk/Source/JavaScriptCore/heap/MutatorState.h ¶
r212778 r290129 1 1 /* 2 * Copyright (C) 2016 Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 28 28 namespace JSC { 29 29 30 enum class MutatorState {30 enum class MutatorState : uint8_t { 31 31 // The mutator is running when it's not inside a Heap slow path. 32 32 Running, -
TabularUnified trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, JSC::SubspaceAccess mode> 41 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)41 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 42 42 { 43 43 return vm.injectedScriptHostSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, JSC::SubspaceAccess> 40 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)40 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 41 41 { 42 42 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSInjectedScriptHostPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, JSC::SubspaceAccess mode> 40 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)40 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 41 41 { 42 42 return vm.javaScriptCallFrameSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, JSC::SubspaceAccess> 40 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)40 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 41 41 { 42 42 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSJavaScriptCallFramePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AggregateErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AggregateErrorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ArrayIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AsyncFromSyncIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017-2019 Oleksandr Skachkov <gskachkov@gmail.com>. 3 * Copyright (C) 2021 Apple, Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple, Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AsyncFromSyncIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2016 Caitlin Potter <caitp@igalia.com>. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AsyncFunctionPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AsyncGeneratorFunctionPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017-2019 Oleksandr Skachkov <gskachkov@gmail.com>. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AsyncGeneratorFunctionPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AsyncGeneratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017 Oleksandr Skachkov <gskachkov@gmail.com>. 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AsyncGeneratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AsyncIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017 Oleksandr Skachkov <gskachkov@gmail.com>. 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AsyncIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/AtomicsObject.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(AtomicsObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/BigIntObject.h ¶
r275569 r290129 1 1 /* 2 2 * Copyright (C) 2017 Caio Lima <ticaiolima@gmail.com>. 3 * Copyright (C) 2017-202 0Apple Inc. All rights reserved.3 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename, SubspaceAccess mode> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 return vm.bigIntObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/BigIntPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017 Caio Lima <ticaiolima@gmail.com>. 3 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(BigIntPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/BooleanObject.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 34 34 35 35 template<typename, SubspaceAccess mode> 36 static IsoSubspace* subspaceFor(VM& vm)36 static GCClient::IsoSubspace* subspaceFor(VM& vm) 37 37 { 38 38 return vm.booleanObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/BrandedStructure.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2021 Igalia S.A. All rights reserved. 4 4 * … … 46 46 47 47 template<typename CellType, SubspaceAccess> 48 static IsoSubspace* subspaceFor(VM& vm)48 static GCClient::IsoSubspace* subspaceFor(VM& vm) 49 49 { 50 50 return &vm.brandedStructureSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ClonedArguments.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 44 44 45 45 template<typename CellType, SubspaceAccess mode> 46 static IsoSubspace* subspaceFor(VM& vm)46 static GCClient::IsoSubspace* subspaceFor(VM& vm) 47 47 { 48 48 static_assert(!CellType::needsDestruction, ""); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ConsoleObject.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ConsoleObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/CustomGetterSetter.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return &vm.customGetterSetterSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/DOMAttributeGetterSetter.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return &vm.domAttributeGetterSetterSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/DateInstance.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 36 36 37 37 template<typename CellType, SubspaceAccess mode> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 return &vm.dateInstanceSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/DatePrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 33 33 34 34 template<typename CellType, SubspaceAccess> 35 static IsoSubspace* subspaceFor(VM& vm)35 static GCClient::IsoSubspace* subspaceFor(VM& vm) 36 36 { 37 37 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(DatePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ErrorInstance.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 40 40 41 41 template<typename CellType, SubspaceAccess mode> 42 static IsoSubspace* subspaceFor(VM& vm)42 static GCClient::IsoSubspace* subspaceFor(VM& vm) 43 43 { 44 44 return vm.errorInstanceSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 43 43 44 44 template<typename CellType, SubspaceAccess> 45 static IsoSubspace* subspaceFor(VM& vm)45 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 46 { 47 47 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ErrorPrototypeBase, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/EvalExecutable.h ¶
r273931 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 56 56 57 57 template<typename CellType, SubspaceAccess mode> 58 static IsoSubspace* subspaceFor(VM& vm)58 static GCClient::IsoSubspace* subspaceFor(VM& vm) 59 59 { 60 60 return vm.evalExecutableSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/Exception.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return &vm.exceptionSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/FinalizationRegistryPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(FinalizationRegistryPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess> 47 static IsoSubspace* subspaceFor(VM& vm)48 { 49 return &vm.functionExecutableSpace() .space;47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 { 49 return &vm.functionExecutableSpace(); 50 50 } 51 51 -
TabularUnified trunk/Source/JavaScriptCore/runtime/FunctionRareData.h ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 57 57 58 58 template<typename CellType, SubspaceAccess mode> 59 static IsoSubspace* subspaceFor(VM& vm)59 static GCClient::IsoSubspace* subspaceFor(VM& vm) 60 60 { 61 61 return vm.functionRareDataSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(GeneratorFunctionPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(GeneratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/GetterSetter.h ¶
r286347 r290129 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 3 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.4 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 5 5 * 6 6 * This library is free software; you can redistribute it and/or … … 58 58 59 59 template<typename CellType, SubspaceAccess> 60 static IsoSubspace* subspaceFor(VM& vm)60 static GCClient::IsoSubspace* subspaceFor(VM& vm) 61 61 { 62 62 return &vm.getterSetterSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/HashMapImpl.h ¶
r286572 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 74 74 75 75 template<typename CellType, SubspaceAccess mode> 76 static IsoSubspace* subspaceFor(VM& vm)76 static GCClient::IsoSubspace* subspaceFor(VM& vm) 77 77 { 78 78 if constexpr (Type == HashTableType::Key) -
TabularUnified trunk/Source/JavaScriptCore/runtime/InternalFunction.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca) 5 5 * Copyright (C) 2007 Maks Orlovich … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 static_assert(sizeof(CellType) == sizeof(InternalFunction), "InternalFunction subclasses that add fields need to override subspaceFor<>()"); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlCollator.h ¶
r275410 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2021 Apple Inc. All Rights Reserved.3 * Copyright (C) 2021-2022 Apple Inc. All Rights Reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 49 49 50 50 template<typename CellType, SubspaceAccess mode> 51 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 52 52 { 53 53 return vm.intlCollatorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlCollatorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.h ¶
r285178 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 61 61 62 62 template<typename CellType, SubspaceAccess mode> 63 static IsoSubspace* subspaceFor(VM& vm)63 static GCClient::IsoSubspace* subspaceFor(VM& vm) 64 64 { 65 65 return vm.intlDateTimeFormatSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlDateTimeFormatPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlDisplayNames.h ¶
r283459 r290129 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 47 47 template<typename CellType, SubspaceAccess mode> 48 static IsoSubspace* subspaceFor(VM& vm)48 static GCClient::IsoSubspace* subspaceFor(VM& vm) 49 49 { 50 50 return vm.intlDisplayNamesSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlDisplayNamesPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlDisplayNamesPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlListFormat.h ¶
r268956 r290129 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 57 57 58 58 template<typename CellType, SubspaceAccess mode> 59 static IsoSubspace* subspaceFor(VM& vm)59 static GCClient::IsoSubspace* subspaceFor(VM& vm) 60 60 { 61 61 return vm.intlListFormatSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlListFormatPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlListFormatPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlLocale.h ¶
r281374 r290129 1 1 /* 2 2 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 43 43 44 44 template<typename CellType, SubspaceAccess mode> 45 static IsoSubspace* subspaceFor(VM& vm)45 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 46 { 47 47 return vm.intlLocaleSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlLocalePrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlLocalePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.h ¶
r286255 r290129 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 3 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 4 * Copyright (C) 2021 Apple Inc. All rights reserved.4 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 5 5 * 6 6 * Redistribution and use in source and binary forms, with or without … … 165 165 166 166 template<typename CellType, SubspaceAccess mode> 167 static IsoSubspace* subspaceFor(VM& vm)167 static GCClient::IsoSubspace* subspaceFor(VM& vm) 168 168 { 169 169 return vm.intlNumberFormatSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlNumberFormatPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlObject.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 5 5 * … … 74 74 75 75 template<typename CellType, SubspaceAccess> 76 static IsoSubspace* subspaceFor(VM& vm)76 static GCClient::IsoSubspace* subspaceFor(VM& vm) 77 77 { 78 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlPluralRules.h ¶
r285418 r290129 1 1 /* 2 2 * Copyright (C) 2018 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 53 53 54 54 template<typename CellType, SubspaceAccess mode> 55 static IsoSubspace* subspaceFor(VM& vm)55 static GCClient::IsoSubspace* subspaceFor(VM& vm) 56 56 { 57 57 return vm.intlPluralRulesSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlPluralRulesPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2018 Andy VanWagoner (andy@vanwagoner.family) 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlPluralRulesPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.h ¶
r273138 r290129 1 1 /* 2 2 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 47 47 48 48 template<typename CellType, SubspaceAccess mode> 49 static IsoSubspace* subspaceFor(VM& vm)49 static GCClient::IsoSubspace* subspaceFor(VM& vm) 50 50 { 51 51 return vm.intlRelativeTimeFormatSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2020 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlRelativeTimeFormatPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegmentIterator.h ¶
r273138 r290129 1 1 /* 2 2 * Copyright (C) 2020 Apple Inc. All rights reserved. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 43 43 44 44 template<typename CellType, SubspaceAccess mode> 45 static IsoSubspace* subspaceFor(VM& vm)45 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 46 { 47 47 return vm.intlSegmentIteratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegmentIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlSegmentIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegmenter.h ¶
r275920 r290129 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 47 47 template<typename CellType, SubspaceAccess mode> 48 static IsoSubspace* subspaceFor(VM& vm)48 static GCClient::IsoSubspace* subspaceFor(VM& vm) 49 49 { 50 50 return vm.intlSegmenterSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegmenterPrototype.h ¶
r286347 r290129 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlSegmenterPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegments.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved. 3 * Copyright (C) 2021 Apple Inc. All rights reserved. 2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 4 3 * 5 4 * Redistribution and use in source and binary forms, with or without … … 43 42 44 43 template<typename CellType, SubspaceAccess mode> 45 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 45 { 47 46 return vm.intlSegmentsSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IntlSegmentsPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IntlSegmentsPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/IteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(IteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSArray.h ¶
r287800 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 50 50 51 51 template<typename CellType, SubspaceAccess> 52 static IsoSubspace* subspaceFor(VM& vm)52 static GCClient::IsoSubspace* subspaceFor(VM& vm) 53 53 { 54 54 return &vm.arraySpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.h ¶
r269974 r290129 1 1 /* 2 * Copyright (C) 2013-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess mode> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 return vm.arrayBufferSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSArrayBufferPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSArrayIterator.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 48 48 49 49 template<typename CellType, SubspaceAccess mode> 50 static IsoSubspace* subspaceFor(VM& vm)50 static GCClient::IsoSubspace* subspaceFor(VM& vm) 51 51 { 52 52 return vm.arrayIteratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSAsyncGenerator.h ¶
r273225 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 43 43 44 44 template<typename CellType, SubspaceAccess mode> 45 static IsoSubspace* subspaceFor(VM& vm)45 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 46 { 47 47 return vm.asyncGeneratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSBigInt.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2017 Caio Lima <ticaiolima@gmail.com> 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 55 55 56 56 template<typename CellType, SubspaceAccess> 57 static IsoSubspace* subspaceFor(VM& vm)57 static GCClient::IsoSubspace* subspaceFor(VM& vm) 58 58 { 59 59 return &vm.bigIntSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSBoundFunction.h ¶
r283881 r290129 1 1 /* 2 * Copyright (C) 2011-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2011-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 44 44 45 45 template<typename CellType, SubspaceAccess mode> 46 static IsoSubspace* subspaceFor(VM& vm)46 static GCClient::IsoSubspace* subspaceFor(VM& vm) 47 47 { 48 48 return vm.boundFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSCallee.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 49 49 50 50 template<typename CellType, SubspaceAccess> 51 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 52 52 { 53 53 return &vm.calleeSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSCustomGetterFunction.h ¶
r278253 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.customGetterFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSCustomSetterFunction.h ¶
r275261 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.customSetterFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSDataView.h ¶
r284330 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.dataViewSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDataViewPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSFinalizationRegistry.h ¶
r287421 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess mode> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 return vm.finalizationRegistrySpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSFunction.h ¶
r289417 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2007 Cameron Zwarich (cwzwarich@uwaterloo.ca) 5 5 * Copyright (C) 2007 Maks Orlovich … … 65 65 66 66 template<typename CellType, SubspaceAccess> 67 static IsoSubspace* subspaceFor(VM& vm)67 static GCClient::IsoSubspace* subspaceFor(VM& vm) 68 68 { 69 69 return &vm.functionSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSGenerator.h ¶
r273225 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess mode> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return vm.generatorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h ¶
r284330 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 261 261 262 262 template<typename CellType, SubspaceAccess mode> 263 static IsoSubspace* subspaceFor(VM& vm)263 static GCClient::IsoSubspace* subspaceFor(VM& vm) 264 264 { 265 265 switch (Adaptor::typeValue) { -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSGenericTypedArrayViewPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSGlobalLexicalEnvironment.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2015-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess mode> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 return &vm.globalLexicalEnvironmentSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h ¶
r289417 r290129 1 1 /* 2 2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> 3 * Copyright (C) 2007-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2007-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 630 630 static constexpr bool needsDestruction = true; 631 631 template<typename CellType, SubspaceAccess mode> 632 static IsoSubspace* subspaceFor(VM& vm)632 static GCClient::IsoSubspace* subspaceFor(VM& vm) 633 633 { 634 634 return vm.globalObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSMap.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.mapSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSMapIterator.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 59 59 60 60 template<typename CellType, SubspaceAccess mode> 61 static IsoSubspace* subspaceFor(VM& vm)61 static GCClient::IsoSubspace* subspaceFor(VM& vm) 62 62 { 63 63 return vm.mapIteratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSModuleLoader.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2015-2022 Apple Inc. All Rights Reserved. 3 3 * Copyright (C) 2016 Yusuke Suzuki <utatane.tea@gmail.com>. 4 4 * … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSModuleLoader, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.moduleNamespaceObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSModuleRecord.h ¶
r273225 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 47 47 48 48 template<typename CellType, SubspaceAccess mode> 49 static IsoSubspace* subspaceFor(VM& vm)49 static GCClient::IsoSubspace* subspaceFor(VM& vm) 50 50 { 51 51 return vm.jsModuleRecordSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSNativeStdFunction.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 47 47 template<typename CellType, SubspaceAccess mode> 48 static IsoSubspace* subspaceFor(VM& vm)48 static GCClient::IsoSubspace* subspaceFor(VM& vm) 49 49 { 50 50 return vm.nativeStdFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSONObject.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSONObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSPromise.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess mode> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 return &vm.promiseSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSPromisePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSPromisePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2014-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2014-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 50 50 51 51 template<typename CellType, SubspaceAccess mode> 52 static IsoSubspace* subspaceFor(VM& vm)52 static GCClient::IsoSubspace* subspaceFor(VM& vm) 53 53 { 54 54 return &vm.propertyNameEnumeratorSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSProxy.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2011-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2011-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 static_assert(sizeof(CellType) == sizeof(JSProxy)); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSRemoteFunction.h ¶
r289469 r290129 2 2 * Copyright (C) 2021 Igalia S.L. 3 3 * Author: Caitlin Potter <caitp@igalia.com> 4 * Copyright (C) 2022 Apple Inc. All Rights Reserved. 4 5 * 5 6 * Redistribution and use in source and binary forms, with or without … … 48 49 49 50 template<typename CellType, SubspaceAccess mode> 50 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 51 52 { 52 53 return vm.remoteFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSScriptFetchParameters.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com> 3 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 44 44 45 45 template<typename CellType, SubspaceAccess mode> 46 static IsoSubspace* subspaceFor(VM& vm)46 static GCClient::IsoSubspace* subspaceFor(VM& vm) 47 47 { 48 48 return vm.scriptFetchParametersSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSScriptFetcher.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com> 3 * Copyright (C) 2018-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2018-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 44 44 45 45 template<typename CellType, SubspaceAccess mode> 46 static IsoSubspace* subspaceFor(VM& vm)46 static GCClient::IsoSubspace* subspaceFor(VM& vm) 47 47 { 48 48 return vm.scriptFetcherSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSSet.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.setSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSSetIterator.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 59 59 60 60 template<typename CellType, SubspaceAccess mode> 61 static IsoSubspace* subspaceFor(VM& vm)61 static GCClient::IsoSubspace* subspaceFor(VM& vm) 62 62 { 63 63 return vm.setIteratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSSourceCode.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2016 Yusuke Suzuki <utatane.tea@gmail.com> 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 43 43 44 44 template<typename CellType, SubspaceAccess mode> 45 static IsoSubspace* subspaceFor(VM& vm)45 static GCClient::IsoSubspace* subspaceFor(VM& vm) 46 46 { 47 47 return vm.sourceCodeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSString.h ¶
r289515 r290129 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 3 * Copyright (C) 2001 Peter Kelly (pmk@post.com) 4 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.4 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 5 5 * 6 6 * This library is free software; you can redistribute it and/or … … 110 110 // necessary if JSString didn't have a destructor. 111 111 template<typename, SubspaceAccess> 112 static IsoSubspace* subspaceFor(VM& vm)112 static GCClient::IsoSubspace* subspaceFor(VM& vm) 113 113 { 114 114 return &vm.stringSpace(); … … 273 273 public: 274 274 template<typename, SubspaceAccess> 275 static IsoSubspace* subspaceFor(VM& vm)275 static GCClient::IsoSubspace* subspaceFor(VM& vm) 276 276 { 277 277 return &vm.ropeStringSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSStringIterator.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 49 49 50 50 template<typename CellType, SubspaceAccess mode> 51 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 52 52 { 53 53 return vm.stringIteratorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSTemplateObjectDescriptor.h ¶
r260415 r290129 1 1 /* 2 2 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 3 * Copyright (C) 2019 Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 39 39 static constexpr bool needsDestruction = true; 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return vm.templateObjectDescriptorSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTypedArrayViewPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSWeakObjectRef.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 60 60 61 61 template<typename CellType, SubspaceAccess mode> 62 static IsoSubspace* subspaceFor(VM& vm)62 static GCClient::IsoSubspace* subspaceFor(VM& vm) 63 63 { 64 64 return vm.weakObjectRefSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/JSWithScope.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2012-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess mode> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 return vm.withScopeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/MapIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(MapIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/MapPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(MapPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/MathObject.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 30 30 31 31 template<typename CellType, SubspaceAccess> 32 static IsoSubspace* subspaceFor(VM& vm)32 static GCClient::IsoSubspace* subspaceFor(VM& vm) 33 33 { 34 34 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(MathObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h ¶
r273931 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.moduleProgramExecutableSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/NativeErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 32 32 using Base = ErrorPrototypeBase; 33 33 template<typename CellType, SubspaceAccess> 34 static IsoSubspace* subspaceFor(VM& vm)34 static GCClient::IsoSubspace* subspaceFor(VM& vm) 35 35 { 36 36 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(NativeErrorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/NativeExecutable.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, SubspaceAccess> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return &vm.nativeExecutableSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/NumberObject.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 34 34 35 35 template<typename, SubspaceAccess mode> 36 static IsoSubspace* subspaceFor(VM& vm)36 static GCClient::IsoSubspace* subspaceFor(VM& vm) 37 37 { 38 38 return &vm.numberObjectSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ObjectPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 31 31 32 32 template<typename CellType, SubspaceAccess> 33 static IsoSubspace* subspaceFor(VM& vm)33 static GCClient::IsoSubspace* subspaceFor(VM& vm) 34 34 { 35 35 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ObjectPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/OptionsList.h ¶
r290119 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 356 356 v(GCLogLevel, logGC, GCLogging::None, Normal, "debugging option to log GC activity (0 = None, 1 = Basic, 2 = Verbose)") \ 357 357 v(Bool, useGC, true, Normal, nullptr) \ 358 v(Bool, useGlobalGC, false, Normal, nullptr) \ 358 359 v(Bool, gcAtEnd, false, Normal, "If true, the jsc CLI will do a GC before exiting") \ 359 360 v(Bool, forceGCSlowPaths, false, Normal, "If true, we will force all JIT fast allocations down their slow paths.") \ -
TabularUnified trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 40 40 41 41 template<typename CellType, SubspaceAccess> 42 static IsoSubspace* subspaceFor(VM& vm)42 static GCClient::IsoSubspace* subspaceFor(VM& vm) 43 43 { 44 return &vm.programExecutableSpace() .space;44 return &vm.programExecutableSpace(); 45 45 } 46 46 -
TabularUnified trunk/Source/JavaScriptCore/runtime/PropertyTable.h ¶
r286816 r290129 1 1 /* 2 * Copyright (C) 2004-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2004-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * This library is free software; you can redistribute it and/or … … 128 128 129 129 template<typename CellType, SubspaceAccess> 130 static IsoSubspace* subspaceFor(VM& vm)130 static GCClient::IsoSubspace* subspaceFor(VM& vm) 131 131 { 132 132 return &vm.propertyTableSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ProxyObject.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.proxyObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ProxyRevoke.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2016-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.proxyRevokeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ReflectObject.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All Rights Reserved.2 * Copyright (C) 2015-2022 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ReflectObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/RegExp.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2007-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2007-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2009 Torch Mobile, Inc. 5 5 * … … 48 48 49 49 template<typename CellType, SubspaceAccess mode> 50 static IsoSubspace* subspaceFor(VM& vm)50 static GCClient::IsoSubspace* subspaceFor(VM& vm) 51 51 { 52 52 return &vm.regExpSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/RegExpObject.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All Rights Reserved.3 * Copyright (C) 2003-2022 Apple Inc. All Rights Reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 34 34 35 35 template<typename CellType, SubspaceAccess mode> 36 static IsoSubspace* subspaceFor(VM& vm)36 static GCClient::IsoSubspace* subspaceFor(VM& vm) 37 37 { 38 38 static_assert(!CellType::needsDestruction, ""); -
TabularUnified trunk/Source/JavaScriptCore/runtime/RegExpPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All Rights Reserved.3 * Copyright (C) 2003-2022 Apple Inc. All Rights Reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 32 32 33 33 template<typename CellType, SubspaceAccess> 34 static IsoSubspace* subspaceFor(VM& vm)34 static GCClient::IsoSubspace* subspaceFor(VM& vm) 35 35 { 36 36 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(RegExpPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/RegExpStringIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2019 Alexey Shvayka <shvaikalesh@gmail.com>. 3 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(RegExpStringIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ScopedArguments.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 public: 46 46 template<typename CellType, SubspaceAccess> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 static_assert(!CellType::needsDestruction, ""); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ScopedArgumentsTable.h ¶
r259646 r290129 1 1 /* 2 * Copyright (C) 2015-202 0Apple Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 49 49 50 50 template<typename CellType, SubspaceAccess mode> 51 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 52 52 { 53 53 return vm.scopedArgumentsTableSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp ¶
r285687 r290129 1 1 /* 2 * Copyright (C) 2009-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2009-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 109 109 } 110 110 111 ASSERT(& VM::SpaceAndSet::setFor(*subspace()) == &clearableCodeSet);111 ASSERT(&Heap::SpaceAndSet::setFor(*subspace()) == &clearableCodeSet); 112 112 clearableCodeSet.remove(this); 113 113 } … … 188 188 } 189 189 190 auto& clearableCodeSet = VM::SpaceAndSet::setFor(*subspace());190 auto& clearableCodeSet = Heap::SpaceAndSet::setFor(*subspace()); 191 191 if (hasClearableCode(vm)) 192 192 clearableCodeSet.add(this); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SetIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(SetIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SetPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(SetPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ShadowRealmObject.h ¶
r288442 r290129 1 1 /* 2 2 * Copyright (C) 2021 Igalia S.L. 3 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 37 38 38 39 template<typename CellType, SubspaceAccess mode> 39 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 41 { 41 42 return vm.shadowRealmSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/ShadowRealmPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2021 Igalia S.L. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(ShadowRealmPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SparseArrayValueMap.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2011-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2011-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 109 109 110 110 template<typename CellType, SubspaceAccess> 111 static IsoSubspace* subspaceFor(VM& vm)111 static GCClient::IsoSubspace* subspaceFor(VM& vm) 112 112 { 113 113 return &vm.sparseArrayValueMapSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2010-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2010-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess mode> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 return vm.strictEvalActivationSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/StringIteratorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 4 4 * … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(StringIteratorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/StringObject.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2007-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2007-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 32 32 33 33 template<typename, SubspaceAccess mode> 34 static IsoSubspace* subspaceFor(VM& vm)34 static GCClient::IsoSubspace* subspaceFor(VM& vm) 35 35 { 36 36 return &vm.stringObjectSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/Structure.h ¶
r288815 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 128 128 129 129 template<typename CellType, SubspaceAccess> 130 static IsoSubspace* subspaceFor(VM& vm)130 static GCClient::IsoSubspace* subspaceFor(VM& vm) 131 131 { 132 132 return &vm.structureSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/StructureChain.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 return &vm.structureChainSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/StructureRareData.h ¶
r289020 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 66 66 67 67 template<typename CellType, SubspaceAccess> 68 static IsoSubspace* subspaceFor(VM& vm)68 static GCClient::IsoSubspace* subspaceFor(VM& vm) 69 69 { 70 70 return &vm.structureRareDataSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/Symbol.h ¶
r270298 r290129 1 1 /* 2 * Copyright (C) 2012-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2012-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2015-2016 Yusuke Suzuki <utatane.tea@gmail.com>. 4 4 * … … 42 42 43 43 template<typename CellType, SubspaceAccess mode> 44 static IsoSubspace* subspaceFor(VM& vm)44 static GCClient::IsoSubspace* subspaceFor(VM& vm) 45 45 { 46 46 return vm.symbolSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SymbolObject.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) 3 * Copyright (C) 2007-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2007-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 5 5 * … … 32 32 33 33 template<typename, SubspaceAccess mode> 34 static IsoSubspace* subspaceFor(VM& vm)34 static GCClient::IsoSubspace* subspaceFor(VM& vm) 35 35 { 36 36 return vm.symbolObjectSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SymbolPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2012-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2012-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>. 4 4 * … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(SymbolPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/SymbolTable.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2007-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2007-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 455 455 456 456 template<typename CellType, SubspaceAccess> 457 static IsoSubspace* subspaceFor(VM& vm)457 static GCClient::IsoSubspace* subspaceFor(VM& vm) 458 458 { 459 459 return &vm.symbolTableSpace(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalCalendar.h ¶
r281788 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess mode> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 return vm.temporalCalendarSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalCalendarPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalCalendarPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalDuration.h ¶
r285178 r290129 1 1 /* 2 2 * Copyright (C) 2021 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 35 36 36 37 template<typename CellType, SubspaceAccess mode> 37 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 39 { 39 40 return vm.temporalDurationSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalDurationPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2021 Sony Interactive Entertainment Inc. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalDurationPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalInstant.h ¶
r285178 r290129 1 1 /* 2 2 * Copyright (C) 2021 Igalia S.L. 3 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 4 * 4 5 * Redistribution and use in source and binary forms, with or without … … 40 41 41 42 template<typename CellType, SubspaceAccess mode> 42 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 43 44 { 44 45 return vm.temporalInstantSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalInstantPrototype.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2021 Igalia S.L. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalInstantPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalNow.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2021 Igalia, S.L. All rights reserved. 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 31 31 32 32 template<typename CellType, SubspaceAccess> 33 static IsoSubspace* subspaceFor(VM& vm)33 static GCClient::IsoSubspace* subspaceFor(VM& vm) 34 34 { 35 35 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalNow, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalObject.h ¶
r286347 r290129 2 2 * Copyright (C) 2021 Igalia, S.L. All rights reserved. 3 3 * Copyright (C) 2021 Sony Interactive Entertainment Inc. 4 * Copyright (C) 2021 Apple Inc. All rights reserved.4 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 5 5 * 6 6 * This library is free software; you can redistribute it and/or … … 63 63 64 64 template<typename CellType, SubspaceAccess> 65 static IsoSubspace* subspaceFor(VM& vm)65 static GCClient::IsoSubspace* subspaceFor(VM& vm) 66 66 { 67 67 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalObject, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalPlainTime.h ¶
r282259 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename CellType, SubspaceAccess mode> 39 static IsoSubspace* subspaceFor(VM& vm)39 static GCClient::IsoSubspace* subspaceFor(VM& vm) 40 40 { 41 41 return vm.temporalPlainTimeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalPlainTimePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalPlainTimePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalTimeZone.h ¶
r284213 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess mode> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 return vm.temporalTimeZoneSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/runtime/TemporalTimeZonePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 36 36 37 37 template<typename CellType, SubspaceAccess> 38 static IsoSubspace* subspaceFor(VM& vm)38 static GCClient::IsoSubspace* subspaceFor(VM& vm) 39 39 { 40 40 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(TemporalTimeZonePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/VM.cpp ¶
r289863 r290129 209 209 , m_integrityRandom(*this) 210 210 , heap(*this, heapType) 211 , clientHeap(heap) 211 212 , vmType(vmType) 212 213 , clientData(nullptr) -
TabularUnified trunk/Source/JavaScriptCore/runtime/VM.h ¶
r289863 r290129 334 334 public: 335 335 Heap heap; 336 GCClient::Heap clientHeap; 336 337 337 338 const HeapCellType& cellHeapCellType() { return heap.cellHeapCellType; } … … 350 351 ALWAYS_INLINE CompleteSubspace& destructibleObjectSpace() { return heap.destructibleObjectSpace; } 351 352 352 ALWAYS_INLINE IsoSubspace& arraySpace() { return heap.arraySpace; } 353 ALWAYS_INLINE IsoSubspace& bigIntSpace() { return heap.bigIntSpace; } 354 ALWAYS_INLINE IsoSubspace& calleeSpace() { return heap.calleeSpace; } 355 ALWAYS_INLINE IsoSubspace& clonedArgumentsSpace() { return heap.clonedArgumentsSpace; } 356 ALWAYS_INLINE IsoSubspace& customGetterSetterSpace() { return heap.customGetterSetterSpace; } 357 ALWAYS_INLINE IsoSubspace& dateInstanceSpace() { return heap.dateInstanceSpace; } 358 ALWAYS_INLINE IsoSubspace& domAttributeGetterSetterSpace() { return heap.domAttributeGetterSetterSpace; } 359 ALWAYS_INLINE IsoSubspace& exceptionSpace() { return heap.exceptionSpace; } 360 ALWAYS_INLINE IsoSubspace& executableToCodeBlockEdgeSpace() { return heap.executableToCodeBlockEdgeSpace; } 361 ALWAYS_INLINE IsoSubspace& functionSpace() { return heap.functionSpace; } 362 ALWAYS_INLINE IsoSubspace& getterSetterSpace() { return heap.getterSetterSpace; } 363 ALWAYS_INLINE IsoSubspace& globalLexicalEnvironmentSpace() { return heap.globalLexicalEnvironmentSpace; } 364 ALWAYS_INLINE IsoSubspace& internalFunctionSpace() { return heap.internalFunctionSpace; } 365 ALWAYS_INLINE IsoSubspace& jsProxySpace() { return heap.jsProxySpace; } 366 ALWAYS_INLINE IsoSubspace& nativeExecutableSpace() { return heap.nativeExecutableSpace; } 367 ALWAYS_INLINE IsoSubspace& numberObjectSpace() { return heap.numberObjectSpace; } 368 ALWAYS_INLINE IsoSubspace& plainObjectSpace() { return heap.plainObjectSpace; } 369 ALWAYS_INLINE IsoSubspace& promiseSpace() { return heap.promiseSpace; } 370 ALWAYS_INLINE IsoSubspace& propertyNameEnumeratorSpace() { return heap.propertyNameEnumeratorSpace; } 371 ALWAYS_INLINE IsoSubspace& propertyTableSpace() { return heap.propertyTableSpace; } 372 ALWAYS_INLINE IsoSubspace& regExpSpace() { return heap.regExpSpace; } 373 ALWAYS_INLINE IsoSubspace& regExpObjectSpace() { return heap.regExpObjectSpace; } 374 ALWAYS_INLINE IsoSubspace& ropeStringSpace() { return heap.ropeStringSpace; } 375 ALWAYS_INLINE IsoSubspace& scopedArgumentsSpace() { return heap.scopedArgumentsSpace; } 376 ALWAYS_INLINE IsoSubspace& sparseArrayValueMapSpace() { return heap.sparseArrayValueMapSpace; } 377 ALWAYS_INLINE IsoSubspace& stringSpace() { return heap.stringSpace; } 378 ALWAYS_INLINE IsoSubspace& stringObjectSpace() { return heap.stringObjectSpace; } 379 ALWAYS_INLINE IsoSubspace& structureChainSpace() { return heap.structureChainSpace; } 380 ALWAYS_INLINE IsoSubspace& structureRareDataSpace() { return heap.structureRareDataSpace; } 381 ALWAYS_INLINE IsoSubspace& structureSpace() { return heap.structureSpace; } 382 ALWAYS_INLINE IsoSubspace& brandedStructureSpace() { return heap.brandedStructureSpace; } 383 ALWAYS_INLINE IsoSubspace& symbolTableSpace() { return heap.symbolTableSpace; } 384 385 #define DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(name) \ 353 #define DEFINE_ISO_SUBSPACE_ACCESSOR(name, heapCellType, type) \ 354 ALWAYS_INLINE GCClient::IsoSubspace& name() { return clientHeap.name; } 355 356 FOR_EACH_JSC_ISO_SUBSPACE(DEFINE_ISO_SUBSPACE_ACCESSOR) 357 #undef DEFINE_ISO_SUBSPACE_ACCESSOR 358 359 #define DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR_IMPL(name, heapCellType, type) \ 386 360 template<SubspaceAccess mode> \ 387 ALWAYS_INLINE IsoSubspace* name() { return heap.name<mode>(); } 388 389 #if JSC_OBJC_API_ENABLED 390 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiWrapperObjectSpace) 391 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(objCCallbackFunctionSpace) 392 #endif 393 #ifdef JSC_GLIB_API_ENABLED 394 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiWrapperObjectSpace) 395 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jscCallbackFunctionSpace) 396 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackAPIWrapperGlobalObjectSpace) 397 #endif 398 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiGlobalObjectSpace) 399 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(apiValueWrapperSpace) 400 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(arrayBufferSpace) 401 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(arrayIteratorSpace) 402 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(asyncGeneratorSpace) 403 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigInt64ArraySpace) 404 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigIntObjectSpace) 405 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(bigUint64ArraySpace) 406 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(booleanObjectSpace) 407 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(boundFunctionSpace) 408 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackConstructorSpace) 409 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackGlobalObjectSpace) 410 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackFunctionSpace) 411 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(callbackObjectSpace) 412 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(customGetterFunctionSpace) 413 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(customSetterFunctionSpace) 414 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(dataViewSpace) 415 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(debuggerScopeSpace) 416 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(errorInstanceSpace) 417 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(float32ArraySpace) 418 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(float64ArraySpace) 419 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(functionRareDataSpace) 420 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(generatorSpace) 421 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(globalObjectSpace) 422 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(injectedScriptHostSpace) 423 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int8ArraySpace) 424 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int16ArraySpace) 425 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(int32ArraySpace) 426 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(javaScriptCallFrameSpace) 427 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jsModuleRecordSpace) 428 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapBucketSpace) 429 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapIteratorSpace) 430 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(mapSpace) 431 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(moduleNamespaceObjectSpace) 432 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(nativeStdFunctionSpace) 433 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyObjectSpace) 434 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(proxyRevokeSpace) 435 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(remoteFunctionSpace) 436 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scopedArgumentsTableSpace) 437 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetchParametersSpace) 438 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(scriptFetcherSpace) 439 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setBucketSpace) 440 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setIteratorSpace) 441 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(setSpace) 442 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(shadowRealmSpace); 443 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(strictEvalActivationSpace) 444 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(stringIteratorSpace) 445 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(sourceCodeSpace) 446 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolSpace) 447 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(symbolObjectSpace) 448 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(templateObjectDescriptorSpace) 449 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalCalendarSpace) 450 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalDurationSpace) 451 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalInstantSpace) 452 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalPlainTimeSpace) 453 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(temporalTimeZoneSpace) 454 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ArraySpace) 455 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint8ClampedArraySpace) 456 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint16ArraySpace) 457 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(uint32ArraySpace) 458 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedEvalCodeBlockSpace) 459 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedFunctionCodeBlockSpace) 460 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedModuleProgramCodeBlockSpace) 461 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(unlinkedProgramCodeBlockSpace) 462 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(finalizationRegistrySpace) 463 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakObjectRefSpace) 464 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakSetSpace) 465 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(weakMapSpace) 466 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(withScopeSpace) 467 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlCollatorSpace) 468 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlDateTimeFormatSpace) 469 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlDisplayNamesSpace) 470 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlListFormatSpace) 471 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlLocaleSpace) 472 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlNumberFormatSpace) 473 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlPluralRulesSpace) 474 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlRelativeTimeFormatSpace) 475 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmentIteratorSpace) 476 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmenterSpace) 477 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(intlSegmentsSpace) 478 #if ENABLE(WEBASSEMBLY) 479 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(jsToWasmICCalleeSpace) 480 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyExceptionSpace) 481 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyFunctionSpace) 482 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyGlobalSpace) 483 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyInstanceSpace) 484 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyMemorySpace) 485 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyModuleSpace) 486 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyModuleRecordSpace) 487 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyTableSpace) 488 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyTagSpace) 489 DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER(webAssemblyWrapperFunctionSpace) 490 #endif 491 492 #undef DYNAMIC_ISO_SUBSPACE_DEFINE_MEMBER 361 ALWAYS_INLINE GCClient::IsoSubspace* name() { return clientHeap.name<mode>(); } 362 363 #define DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR(name) \ 364 DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR_IMPL(name, unused, unused2) 365 366 FOR_EACH_JSC_DYNAMIC_ISO_SUBSPACE(DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR_IMPL) 493 367 494 368 ALWAYS_INLINE IsoCellSet& executableToCodeBlockEdgesWithConstraints() { return heap.executableToCodeBlockEdgesWithConstraints; } 495 369 ALWAYS_INLINE IsoCellSet& executableToCodeBlockEdgesWithFinalizers() { return heap.executableToCodeBlockEdgesWithFinalizers; } 496 370 497 #define DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER(name) \ 498 template<SubspaceAccess mode> \ 499 ALWAYS_INLINE IsoSubspace* name() { return heap.name<mode>(); } 500 501 using SpaceAndSet = Heap::SpaceAndSet; 502 ALWAYS_INLINE SpaceAndSet& codeBlockSpace() { return heap.codeBlockSpace; } 503 504 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER(evalExecutableSpace) 505 DYNAMIC_SPACE_AND_SET_DEFINE_MEMBER(moduleProgramExecutableSpace) 506 507 ALWAYS_INLINE SpaceAndSet& functionExecutableSpace() { return heap.functionExecutableSpace; } 508 ALWAYS_INLINE SpaceAndSet& programExecutableSpace() { return heap.programExecutableSpace; } 509 ALWAYS_INLINE SpaceAndSet& unlinkedFunctionExecutableSpace() { return heap.unlinkedFunctionExecutableSpace; } 371 ALWAYS_INLINE GCClient::IsoSubspace& codeBlockSpace() { return clientHeap.codeBlockSpace; } 372 373 DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR(evalExecutableSpace) 374 DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR(moduleProgramExecutableSpace) 375 376 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_ACCESSOR_IMPL 377 #undef DEFINE_DYNAMIC_ISO_SUBSPACE_GETTER 378 379 ALWAYS_INLINE GCClient::IsoSubspace& functionExecutableSpace() { return clientHeap.functionExecutableSpace; } 380 ALWAYS_INLINE GCClient::IsoSubspace& programExecutableSpace() { return clientHeap.programExecutableSpace; } 381 ALWAYS_INLINE GCClient::IsoSubspace& unlinkedFunctionExecutableSpace() { return clientHeap.unlinkedFunctionExecutableSpace; } 510 382 511 383 VMType vmType; -
TabularUnified trunk/Source/JavaScriptCore/runtime/WeakMapImpl.h ¶
r278338 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * Copyright (C) 2017 Yusuke Suzuki <utatane.tea@gmail.com>. 4 4 * … … 283 283 284 284 template<typename CellType, SubspaceAccess mode> 285 static IsoSubspace* subspaceFor(VM& vm)285 static GCClient::IsoSubspace* subspaceFor(VM& vm) 286 286 { 287 287 if constexpr (isWeakMap()) -
TabularUnified trunk/Source/JavaScriptCore/runtime/WeakMapPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2013-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2013-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WeakMapPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/WeakObjectRefPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 36 36 template<typename CellType, SubspaceAccess> 37 static IsoSubspace* subspaceFor(VM& vm)37 static GCClient::IsoSubspace* subspaceFor(VM& vm) 38 38 { 39 39 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WeakObjectRefPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/runtime/WeakSetPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2015-202 1Apple, Inc. All rights reserved.2 * Copyright (C) 2015-2022 Apple, Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WeakSetPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSToWasmICCallee.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.jsToWasmICCalleeSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssembly.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSWebAssembly, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyException.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.webAssemblyExceptionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyGlobal.h ¶
r275438 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess mode> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 return vm.webAssemblyGlobalSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.h ¶
r288573 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 56 56 57 57 template<typename CellType, SubspaceAccess mode> 58 static IsoSubspace* subspaceFor(VM& vm)58 static GCClient::IsoSubspace* subspaceFor(VM& vm) 59 59 { 60 60 return vm.webAssemblyInstanceSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h ¶
r275438 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess mode> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 return vm.webAssemblyMemorySpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.h ¶
r288361 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 59 59 60 60 template<typename CellType, SubspaceAccess mode> 61 static IsoSubspace* subspaceFor(VM& vm)61 static GCClient::IsoSubspace* subspaceFor(VM& vm) 62 62 { 63 63 return vm.webAssemblyModuleSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.h ¶
r278253 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 45 45 46 46 template<typename CellType, SubspaceAccess mode> 47 static IsoSubspace* subspaceFor(VM& vm)47 static GCClient::IsoSubspace* subspaceFor(VM& vm) 48 48 { 49 49 return vm.webAssemblyTableSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTag.h ¶
r285654 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 41 41 42 42 template<typename CellType, SubspaceAccess mode> 43 static IsoSubspace* subspaceFor(VM& vm)43 static GCClient::IsoSubspace* subspaceFor(VM& vm) 44 44 { 45 45 return vm.webAssemblyTagSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyCompileErrorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyExceptionPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyExceptionPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h ¶
r276896 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 51 51 52 52 template<typename CellType, SubspaceAccess mode> 53 static IsoSubspace* subspaceFor(VM& vm)53 static GCClient::IsoSubspace* subspaceFor(VM& vm) 54 54 { 55 55 return vm.webAssemblyFunctionSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyGlobalPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2019-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2019-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyGlobalPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyInstancePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyLinkErrorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyMemoryPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyModulePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.h ¶
r288573 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 49 49 50 50 template<typename CellType, SubspaceAccess mode> 51 static IsoSubspace* subspaceFor(VM& vm)51 static GCClient::IsoSubspace* subspaceFor(VM& vm) 52 52 { 53 53 return vm.webAssemblyModuleRecordSpace<mode>(); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyRuntimeErrorPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyTablePrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTagPrototype.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 39 39 template<typename CellType, SubspaceAccess> 40 static IsoSubspace* subspaceFor(VM& vm)40 static GCClient::IsoSubspace* subspaceFor(VM& vm) 41 41 { 42 42 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(WebAssemblyTagPrototype, Base); -
TabularUnified trunk/Source/JavaScriptCore/wasm/js/WebAssemblyWrapperFunction.h ¶
r287582 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, SubspaceAccess mode> 41 static IsoSubspace* subspaceFor(VM& vm)41 static GCClient::IsoSubspace* subspaceFor(VM& vm) 42 42 { 43 43 return vm.webAssemblyWrapperFunctionSpace<mode>(); -
TabularUnified trunk/Source/WebCore/CMakeLists.txt ¶
r290002 r290129 2088 2088 set(SUPPLEMENTAL_DEPENDENCY_FILE ${WebCore_DERIVED_SOURCES_DIR}/supplemental_dependency.tmp) 2089 2089 set(ISO_SUBSPACES_HEADER_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMIsoSubspaces.h) 2090 set(CLIENT_ISO_SUBSPACES_HEADER_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMClientIsoSubspaces.h) 2090 2091 set(CONSTRUCTORS_HEADER_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMConstructors.h) 2091 2092 set(WINDOW_CONSTRUCTORS_FILE ${WebCore_DERIVED_SOURCES_DIR}/DOMWindowConstructors.idl) … … 2276 2277 SUPPLEMENTAL_DEPFILE ${SUPPLEMENTAL_DEPENDENCY_FILE} 2277 2278 PP_EXTRA_OUTPUT 2278 ${ISO_SUBSPACES_HEADER_FILE} ${C ONSTRUCTORS_HEADER_FILE} ${WINDOW_CONSTRUCTORS_FILE} ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE} ${SHADOWREALMGLOBALSCOPE_CONSTRUCTORS_FILE} ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE}2279 ${ISO_SUBSPACES_HEADER_FILE} ${CLIENT_ISO_SUBSPACES_HEADER_FILE} ${CONSTRUCTORS_HEADER_FILE} ${WINDOW_CONSTRUCTORS_FILE} ${WORKERGLOBALSCOPE_CONSTRUCTORS_FILE} ${SHADOWREALMGLOBALSCOPE_CONSTRUCTORS_FILE} ${DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE} 2279 2280 PP_EXTRA_ARGS 2280 2281 --isoSubspacesHeaderFile ${ISO_SUBSPACES_HEADER_FILE} 2282 --clientISOSubspacesHeaderFile ${CLIENT_ISO_SUBSPACES_HEADER_FILE} 2281 2283 --constructorsHeaderFile ${CONSTRUCTORS_HEADER_FILE} 2282 2284 --windowConstructorsFile ${WINDOW_CONSTRUCTORS_FILE} -
TabularUnified trunk/Source/WebCore/ChangeLog ¶
r290127 r290129 1 2022-02-18 Mark Lam <mark.lam@apple.com> 2 3 Split IsoSubspace into a GCClient allocator used by VM and a backend managed by Heap. 4 https://bugs.webkit.org/show_bug.cgi?id=233878 5 rdar://problem/86108394 6 7 Reviewed by Yusuke Suzuki. 8 9 1. Make various classes client-server aware in terms of IsoSubspaces. 10 2. Make CodeGeneratorJS.pm client-server aware in terms of IsoSubspaces. 11 3. Rebase bindings test results. 12 13 * CMakeLists.txt: 14 * DerivedSources-output.xcfilelist: 15 * DerivedSources.make: 16 * bindings/js/DOMGCOutputConstraint.cpp: 17 (WebCore::DOMGCOutputConstraint::DOMGCOutputConstraint): 18 (WebCore::DOMGCOutputConstraint::executeImplImpl): 19 * bindings/js/DOMGCOutputConstraint.h: 20 * bindings/js/JSDOMAsyncIterator.h: 21 * bindings/js/JSDOMBuiltinConstructorBase.cpp: 22 (WebCore::JSDOMBuiltinConstructorBase::subspaceForImpl): 23 * bindings/js/JSDOMBuiltinConstructorBase.h: 24 (WebCore::JSDOMBuiltinConstructorBase::subspaceFor): 25 * bindings/js/JSDOMConstructorBase.cpp: 26 (WebCore::JSDOMConstructorBase::subspaceForImpl): 27 * bindings/js/JSDOMConstructorBase.h: 28 (WebCore::JSDOMConstructorBase::subspaceFor): 29 * bindings/js/JSDOMConstructorNotCallable.h: 30 (WebCore::JSDOMConstructorNotCallable::subspaceFor): 31 * bindings/js/JSDOMIterator.h: 32 * bindings/js/JSDOMWindowProperties.cpp: 33 (WebCore::JSDOMWindowProperties::subspaceForImpl): 34 * bindings/js/JSDOMWindowProperties.h: 35 * bindings/js/JSFileSystemDirectoryHandleIterator.cpp: 36 (WebCore::JSFileSystemDirectoryHandleIterator::subspaceForImpl): 37 * bindings/js/JSFileSystemDirectoryHandleIterator.h: 38 * bindings/js/JSIDBSerializationGlobalObject.cpp: 39 (WebCore::JSIDBSerializationGlobalObject::subspaceForImpl): 40 * bindings/js/JSIDBSerializationGlobalObject.h: 41 * bindings/js/JSWindowProxy.cpp: 42 (WebCore::JSWindowProxy::subspaceForImpl): 43 * bindings/js/JSWindowProxy.h: 44 * bindings/js/WebCoreJSClientData.cpp: 45 (WebCore::JSHeapData::JSHeapData): 46 (WebCore::JSHeapData::ensureHeapData): 47 (WebCore::JSVMClientData::JSVMClientData): 48 (WebCore::JSVMClientData::initNormalWorld): 49 * bindings/js/WebCoreJSClientData.h: 50 (WebCore::JSHeapData::lock): 51 (WebCore::JSHeapData::subspaces): 52 (WebCore::JSHeapData::fileSystemDirectoryHandleIteratorSpace): 53 (WebCore::JSHeapData::setFileSystemDirectoryHandleIteratorSpace): 54 (WebCore::JSVMClientData::normalWorld): 55 (WebCore::JSVMClientData::rememberWorld): 56 (WebCore::JSVMClientData::forgetWorld): 57 (WebCore::JSVMClientData::heapData): 58 (WebCore::JSVMClientData::builtinNames): 59 (WebCore::JSVMClientData::builtinFunctions): 60 (WebCore::JSVMClientData::domBuiltinConstructorSpace): 61 (WebCore::JSVMClientData::domConstructorSpace): 62 (WebCore::JSVMClientData::domNamespaceObjectSpace): 63 (WebCore::JSVMClientData::domWindowPropertiesSpace): 64 (WebCore::JSVMClientData::runtimeArraySpace): 65 (WebCore::JSVMClientData::runtimeMethodSpace): 66 (WebCore::JSVMClientData::runtimeObjectSpace): 67 (WebCore::JSVMClientData::windowProxySpace): 68 (WebCore::JSVMClientData::idbSerializationSpace): 69 (WebCore::JSVMClientData::fileSystemDirectoryHandleIteratorSpace): 70 (WebCore::JSVMClientData::setFileSystemDirectoryHandleIteratorSpace): 71 (WebCore::JSVMClientData::clientSubspaces): 72 (WebCore::JSVMClientData::forEachOutputConstraintSpace): Deleted. 73 (WebCore::JSVMClientData::subspaces): Deleted. 74 * bindings/scripts/CodeGeneratorJS.pm: 75 (GenerateHeader): 76 (GenerateImplementation): 77 (GenerateIterableDefinition): 78 (GeneratePrototypeDeclaration): 79 * bindings/scripts/preprocess-idls.pl: 80 * bindings/scripts/test/JS/JSDOMWindow.cpp: 81 (WebCore::JSDOMWindow::subspaceForImpl): 82 * bindings/scripts/test/JS/JSDOMWindow.h: 83 (WebCore::JSDOMWindow::subspaceFor): 84 * bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp: 85 (WebCore::JSDedicatedWorkerGlobalScope::subspaceForImpl): 86 * bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h: 87 (WebCore::JSDedicatedWorkerGlobalScope::subspaceFor): 88 * bindings/scripts/test/JS/JSExposedStar.cpp: 89 (WebCore::JSExposedStarDOMConstructor::prototypeForStructure): 90 (WebCore::JSExposedStar::subspaceForImpl): 91 * bindings/scripts/test/JS/JSExposedStar.h: 92 (WebCore::JSExposedStar::subspaceFor): 93 * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp: 94 (WebCore::JSExposedToWorkerAndWindow::subspaceForImpl): 95 * bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h: 96 (WebCore::JSExposedToWorkerAndWindow::subspaceFor): 97 * bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp: 98 (WebCore::JSPaintWorkletGlobalScope::subspaceForImpl): 99 * bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h: 100 (WebCore::JSPaintWorkletGlobalScope::subspaceFor): 101 * bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp: 102 (WebCore::JSServiceWorkerGlobalScope::subspaceForImpl): 103 * bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h: 104 (WebCore::JSServiceWorkerGlobalScope::subspaceFor): 105 * bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp: 106 (WebCore::JSShadowRealmGlobalScope::subspaceForImpl): 107 * bindings/scripts/test/JS/JSShadowRealmGlobalScope.h: 108 (WebCore::JSShadowRealmGlobalScope::subspaceFor): 109 * bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp: 110 (WebCore::JSSharedWorkerGlobalScope::subspaceForImpl): 111 * bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h: 112 (WebCore::JSSharedWorkerGlobalScope::subspaceFor): 113 * bindings/scripts/test/JS/JSTestCEReactions.cpp: 114 (WebCore::JSTestCEReactionsDOMConstructor::prototypeForStructure): 115 (WebCore::JSTestCEReactions::subspaceForImpl): 116 * bindings/scripts/test/JS/JSTestCEReactions.h: 117 (WebCore::JSTestCEReactions::subspaceFor): 118 * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp: 119 (WebCore::JSTestCEReactionsStringifierDOMConstructor::prototypeForStructure): 120 (WebCore::JSTestCEReactionsStringifier::subspaceForImpl): 121 * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h: 122 (WebCore::JSTestCEReactionsStringifier::subspaceFor): 123 * bindings/scripts/test/JS/JSTestCallTracer.cpp: 124 (WebCore::JSTestCallTracerDOMConstructor::prototypeForStructure): 125 (WebCore::JSTestCallTracer::subspaceForImpl): 126 * bindings/scripts/test/JS/JSTestCallTracer.h: 127 (WebCore::JSTestCallTracer::subspaceFor): 128 * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp: 129 (WebCore::JSTestClassWithJSBuiltinConstructorDOMConstructor::prototypeForStructure): 130 (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceForImpl): 131 * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h: 132 (WebCore::JSTestClassWithJSBuiltinConstructor::subspaceFor): 133 * bindings/scripts/test/JS/JSTestConditionalIncludes.cpp: 134 (WebCore::JSTestConditionalIncludesDOMConstructor::prototypeForStructure): 135 (WebCore::JSTestConditionalIncludes::subspaceForImpl): 136 * bindings/scripts/test/JS/JSTestConditionalIncludes.h: 137 (WebCore::JSTestConditionalIncludes::subspaceFor): 138 * bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp: 139 (WebCore::JSTestConditionallyReadWriteDOMConstructor::prototypeForStructure): 140 (WebCore::JSTestConditionallyReadWrite::subspaceForImpl): 141 * bindings/scripts/test/JS/JSTestConditionallyReadWrite.h: 142 (WebCore::JSTestConditionallyReadWrite::subspaceFor): 143 * bindings/scripts/test/JS/JSTestDOMJIT.cpp: 144 (WebCore::JSTestDOMJITDOMConstructor::prototypeForStructure): 145 (WebCore::JSTestDOMJIT::subspaceForImpl): 146 * bindings/scripts/test/JS/JSTestDOMJIT.h: 147 (WebCore::JSTestDOMJIT::subspaceFor): 148 * bindings/scripts/test/JS/JSTestDefaultToJSON.cpp: 149 (WebCore::JSTestDefaultToJSONDOMConstructor::prototypeForStructure): 150 (WebCore::JSTestDefaultToJSON::subspaceForImpl): 151 * bindings/scripts/test/JS/JSTestDefaultToJSON.h: 152 (WebCore::JSTestDefaultToJSON::subspaceFor): 153 * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp: 154 (WebCore::JSTestDefaultToJSONFilteredByExposedDOMConstructor::prototypeForStructure): 155 (WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceForImpl): 156 * bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h: 157 (WebCore::JSTestDefaultToJSONFilteredByExposed::subspaceFor): 158 * bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp: 159 (WebCore::JSTestDefaultToJSONIndirectInheritanceDOMConstructor::prototypeForStructure): 160 (WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceForImpl): 161 * bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.h: 162 (WebCore::JSTestDefaultToJSONIndirectInheritance::subspaceFor): 163 * bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp: 164 (WebCore::JSTestDefaultToJSONInheritDOMConstructor::prototypeForStructure): 165 (WebCore::JSTestDefaultToJSONInherit::subspaceForImpl): 166 * bindings/scripts/test/JS/JSTestDefaultToJSONInherit.h: 167 (WebCore::JSTestDefaultToJSONInherit::subspaceFor): 168 * bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp: 169 (WebCore::JSTestDefaultToJSONInheritFinalDOMConstructor::prototypeForStructure): 170 (WebCore::JSTestDefaultToJSONInheritFinal::subspaceForImpl): 171 * bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.h: 172 (WebCore::JSTestDefaultToJSONInheritFinal::subspaceFor): 173 * bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp: 174 (WebCore::JSTestDelegateToSharedSyntheticAttributeDOMConstructor::prototypeForStructure): 175 (WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl): 176 * bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h: 177 (WebCore::JSTestDelegateToSharedSyntheticAttribute::subspaceFor): 178 * bindings/scripts/test/JS/JSTestDomainSecurity.cpp: 179 (WebCore::JSTestDomainSecurityDOMConstructor::prototypeForStructure): 180 (WebCore::JSTestDomainSecurity::subspaceForImpl): 181 * bindings/scripts/test/JS/JSTestDomainSecurity.h: 182 (WebCore::JSTestDomainSecurity::subspaceFor): 183 * bindings/scripts/test/JS/JSTestEnabledBySetting.cpp: 184 (WebCore::JSTestEnabledBySettingDOMConstructor::prototypeForStructure): 185 (WebCore::JSTestEnabledBySetting::subspaceForImpl): 186 * bindings/scripts/test/JS/JSTestEnabledBySetting.h: 187 (WebCore::JSTestEnabledBySetting::subspaceFor): 188 * bindings/scripts/test/JS/JSTestEnabledForContext.cpp: 189 (WebCore::JSTestEnabledForContextDOMConstructor::prototypeForStructure): 190 (WebCore::JSTestEnabledForContext::subspaceForImpl): 191 * bindings/scripts/test/JS/JSTestEnabledForContext.h: 192 (WebCore::JSTestEnabledForContext::subspaceFor): 193 * bindings/scripts/test/JS/JSTestEventConstructor.cpp: 194 (WebCore::JSTestEventConstructor::subspaceForImpl): 195 * bindings/scripts/test/JS/JSTestEventConstructor.h: 196 (WebCore::JSTestEventConstructor::subspaceFor): 197 * bindings/scripts/test/JS/JSTestEventTarget.cpp: 198 (WebCore::JSTestEventTargetDOMConstructor::prototypeForStructure): 199 (WebCore::JSTestEventTarget::subspaceForImpl): 200 * bindings/scripts/test/JS/JSTestEventTarget.h: 201 (WebCore::JSTestEventTarget::subspaceFor): 202 * bindings/scripts/test/JS/JSTestException.cpp: 203 (WebCore::JSTestExceptionDOMConstructor::prototypeForStructure): 204 (WebCore::JSTestException::subspaceForImpl): 205 * bindings/scripts/test/JS/JSTestException.h: 206 (WebCore::JSTestException::subspaceFor): 207 * bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp: 208 (WebCore::JSTestGenerateAddOpaqueRootDOMConstructor::prototypeForStructure): 209 (WebCore::JSTestGenerateAddOpaqueRoot::subspaceForImpl): 210 * bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h: 211 (WebCore::JSTestGenerateAddOpaqueRoot::subspaceFor): 212 * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp: 213 (WebCore::JSTestGenerateIsReachableDOMConstructor::prototypeForStructure): 214 (WebCore::JSTestGenerateIsReachable::subspaceForImpl): 215 * bindings/scripts/test/JS/JSTestGenerateIsReachable.h: 216 (WebCore::JSTestGenerateIsReachable::subspaceFor): 217 * bindings/scripts/test/JS/JSTestGlobalObject.cpp: 218 (WebCore::JSTestGlobalObject::subspaceForImpl): 219 * bindings/scripts/test/JS/JSTestGlobalObject.h: 220 (WebCore::JSTestGlobalObject::subspaceFor): 221 * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp: 222 (WebCore::JSTestIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure): 223 (WebCore::JSTestIndexedSetterNoIdentifier::subspaceForImpl): 224 * bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h: 225 (WebCore::JSTestIndexedSetterNoIdentifier::subspaceFor): 226 * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp: 227 (WebCore::JSTestIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure): 228 (WebCore::JSTestIndexedSetterThrowingException::subspaceForImpl): 229 * bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h: 230 (WebCore::JSTestIndexedSetterThrowingException::subspaceFor): 231 * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp: 232 (WebCore::JSTestIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure): 233 (WebCore::JSTestIndexedSetterWithIdentifier::subspaceForImpl): 234 * bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h: 235 (WebCore::JSTestIndexedSetterWithIdentifier::subspaceFor): 236 * bindings/scripts/test/JS/JSTestInterface.cpp: 237 (WebCore::JSTestInterfaceDOMConstructor::construct): 238 (WebCore::jsTestInterfacePrototypeFunction_entriesCaller): 239 (WebCore::JSTestInterface::subspaceForImpl): 240 * bindings/scripts/test/JS/JSTestInterface.h: 241 * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp: 242 (WebCore::JSTestInterfaceLeadingUnderscoreDOMConstructor::prototypeForStructure): 243 (WebCore::JSTestInterfaceLeadingUnderscore::subspaceForImpl): 244 * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h: 245 (WebCore::JSTestInterfaceLeadingUnderscore::subspaceFor): 246 * bindings/scripts/test/JS/JSTestIterable.cpp: 247 (WebCore::JSTestIterableDOMConstructor::prototypeForStructure): 248 (WebCore::jsTestIterablePrototypeFunction_entriesCaller): 249 (WebCore::JSTestIterable::subspaceForImpl): 250 * bindings/scripts/test/JS/JSTestIterable.h: 251 (WebCore::JSTestIterable::subspaceFor): 252 * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp: 253 (WebCore::JSTestJSBuiltinConstructorDOMConstructor::prototypeForStructure): 254 (WebCore::JSTestJSBuiltinConstructor::subspaceForImpl): 255 * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h: 256 (WebCore::JSTestJSBuiltinConstructor::subspaceFor): 257 * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp: 258 (WebCore::JSTestLegacyFactoryFunctionDOMConstructor::prototypeForStructure): 259 (WebCore::JSTestLegacyFactoryFunction::subspaceForImpl): 260 * bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h: 261 (WebCore::JSTestLegacyFactoryFunction::subspaceFor): 262 * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp: 263 (WebCore::JSTestLegacyNoInterfaceObjectPrototype::finishCreation): 264 (WebCore::JSTestLegacyNoInterfaceObject::subspaceForImpl): 265 * bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h: 266 (WebCore::JSTestLegacyNoInterfaceObject::subspaceFor): 267 * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp: 268 (WebCore::JSTestLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure): 269 (WebCore::JSTestLegacyOverrideBuiltIns::subspaceForImpl): 270 * bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h: 271 (WebCore::JSTestLegacyOverrideBuiltIns::subspaceFor): 272 * bindings/scripts/test/JS/JSTestMapLike.cpp: 273 (WebCore::JSTestMapLikeDOMConstructor::prototypeForStructure): 274 (WebCore::JSTestMapLike::subspaceForImpl): 275 * bindings/scripts/test/JS/JSTestMapLike.h: 276 (WebCore::JSTestMapLike::subspaceFor): 277 * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp: 278 (WebCore::JSTestMapLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure): 279 (WebCore::JSTestMapLikeWithOverriddenOperations::subspaceForImpl): 280 * bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h: 281 (WebCore::JSTestMapLikeWithOverriddenOperations::subspaceFor): 282 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp: 283 (WebCore::JSTestNamedAndIndexedSetterNoIdentifierDOMConstructor::prototypeForStructure): 284 (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl): 285 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h: 286 (WebCore::JSTestNamedAndIndexedSetterNoIdentifier::subspaceFor): 287 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp: 288 (WebCore::JSTestNamedAndIndexedSetterThrowingExceptionDOMConstructor::prototypeForStructure): 289 (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl): 290 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h: 291 (WebCore::JSTestNamedAndIndexedSetterThrowingException::subspaceFor): 292 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp: 293 (WebCore::JSTestNamedAndIndexedSetterWithIdentifierDOMConstructor::prototypeForStructure): 294 (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl): 295 * bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h: 296 (WebCore::JSTestNamedAndIndexedSetterWithIdentifier::subspaceFor): 297 * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp: 298 (WebCore::JSTestNamedDeleterNoIdentifierDOMConstructor::prototypeForStructure): 299 (WebCore::JSTestNamedDeleterNoIdentifier::subspaceForImpl): 300 * bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h: 301 (WebCore::JSTestNamedDeleterNoIdentifier::subspaceFor): 302 * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp: 303 (WebCore::JSTestNamedDeleterThrowingExceptionDOMConstructor::prototypeForStructure): 304 (WebCore::JSTestNamedDeleterThrowingException::subspaceForImpl): 305 * bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h: 306 (WebCore::JSTestNamedDeleterThrowingException::subspaceFor): 307 * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp: 308 (WebCore::JSTestNamedDeleterWithIdentifierDOMConstructor::prototypeForStructure): 309 (WebCore::JSTestNamedDeleterWithIdentifier::subspaceForImpl): 310 * bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h: 311 (WebCore::JSTestNamedDeleterWithIdentifier::subspaceFor): 312 * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp: 313 (WebCore::JSTestNamedDeleterWithIndexedGetterDOMConstructor::prototypeForStructure): 314 (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceForImpl): 315 * bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h: 316 (WebCore::JSTestNamedDeleterWithIndexedGetter::subspaceFor): 317 * bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp: 318 (WebCore::JSTestNamedGetterCallWithDOMConstructor::prototypeForStructure): 319 (WebCore::JSTestNamedGetterCallWith::subspaceForImpl): 320 * bindings/scripts/test/JS/JSTestNamedGetterCallWith.h: 321 (WebCore::JSTestNamedGetterCallWith::subspaceFor): 322 * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp: 323 (WebCore::JSTestNamedGetterNoIdentifierDOMConstructor::prototypeForStructure): 324 (WebCore::JSTestNamedGetterNoIdentifier::subspaceForImpl): 325 * bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h: 326 (WebCore::JSTestNamedGetterNoIdentifier::subspaceFor): 327 * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp: 328 (WebCore::JSTestNamedGetterWithIdentifierDOMConstructor::prototypeForStructure): 329 (WebCore::JSTestNamedGetterWithIdentifier::subspaceForImpl): 330 * bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h: 331 (WebCore::JSTestNamedGetterWithIdentifier::subspaceFor): 332 * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp: 333 (WebCore::JSTestNamedSetterNoIdentifierDOMConstructor::prototypeForStructure): 334 (WebCore::JSTestNamedSetterNoIdentifier::subspaceForImpl): 335 * bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h: 336 (WebCore::JSTestNamedSetterNoIdentifier::subspaceFor): 337 * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp: 338 (WebCore::JSTestNamedSetterThrowingExceptionDOMConstructor::prototypeForStructure): 339 (WebCore::JSTestNamedSetterThrowingException::subspaceForImpl): 340 * bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h: 341 (WebCore::JSTestNamedSetterThrowingException::subspaceFor): 342 * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp: 343 (WebCore::JSTestNamedSetterWithIdentifierDOMConstructor::prototypeForStructure): 344 (WebCore::JSTestNamedSetterWithIdentifier::subspaceForImpl): 345 * bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h: 346 (WebCore::JSTestNamedSetterWithIdentifier::subspaceFor): 347 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp: 348 (WebCore::JSTestNamedSetterWithIndexedGetterDOMConstructor::prototypeForStructure): 349 (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceForImpl): 350 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h: 351 (WebCore::JSTestNamedSetterWithIndexedGetter::subspaceFor): 352 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp: 353 (WebCore::JSTestNamedSetterWithIndexedGetterAndSetterDOMConstructor::prototypeForStructure): 354 (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl): 355 * bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h: 356 (WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::subspaceFor): 357 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp: 358 (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure): 359 (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl): 360 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h: 361 (WebCore::JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceFor): 362 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp: 363 (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesDOMConstructor::prototypeForStructure): 364 (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl): 365 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h: 366 (WebCore::JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceFor): 367 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp: 368 (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsDOMConstructor::prototypeForStructure): 369 (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl): 370 * bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h: 371 (WebCore::JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceFor): 372 * bindings/scripts/test/JS/JSTestNamespaceObject.cpp: 373 (WebCore::JSTestNamespaceObject::subspaceForImpl): 374 * bindings/scripts/test/JS/JSTestNamespaceObject.h: 375 (WebCore::JSTestNamespaceObject::subspaceFor): 376 * bindings/scripts/test/JS/JSTestNode.cpp: 377 (WebCore::jsTestNodePrototypeFunction_entriesCaller): 378 (WebCore::JSTestNode::subspaceForImpl): 379 * bindings/scripts/test/JS/JSTestNode.h: 380 * bindings/scripts/test/JS/JSTestObj.cpp: 381 (WebCore::JSTestObjDOMConstructor::construct): 382 (WebCore::JSTestObj::subspaceForImpl): 383 * bindings/scripts/test/JS/JSTestObj.h: 384 (WebCore::JSTestObj::subspaceFor): 385 * bindings/scripts/test/JS/JSTestOperationConditional.cpp: 386 (WebCore::JSTestOperationConditionalDOMConstructor::prototypeForStructure): 387 (WebCore::JSTestOperationConditional::subspaceForImpl): 388 * bindings/scripts/test/JS/JSTestOperationConditional.h: 389 (WebCore::JSTestOperationConditional::subspaceFor): 390 * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: 391 (WebCore::JSTestOverloadedConstructors::subspaceForImpl): 392 * bindings/scripts/test/JS/JSTestOverloadedConstructors.h: 393 (WebCore::JSTestOverloadedConstructors::subspaceFor): 394 * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp: 395 (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceForImpl): 396 * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h: 397 (WebCore::JSTestOverloadedConstructorsWithSequence::subspaceFor): 398 * bindings/scripts/test/JS/JSTestPluginInterface.cpp: 399 (WebCore::JSTestPluginInterfaceDOMConstructor::prototypeForStructure): 400 (WebCore::JSTestPluginInterface::subspaceForImpl): 401 * bindings/scripts/test/JS/JSTestPluginInterface.h: 402 (WebCore::JSTestPluginInterface::subspaceFor): 403 * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp: 404 (WebCore::JSTestPromiseRejectionEvent::subspaceForImpl): 405 * bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h: 406 (WebCore::JSTestPromiseRejectionEvent::subspaceFor): 407 * bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp: 408 (WebCore::JSTestReadOnlyMapLikeDOMConstructor::prototypeForStructure): 409 (WebCore::JSTestReadOnlyMapLike::subspaceForImpl): 410 * bindings/scripts/test/JS/JSTestReadOnlyMapLike.h: 411 (WebCore::JSTestReadOnlyMapLike::subspaceFor): 412 * bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp: 413 (WebCore::JSTestReadOnlySetLikeDOMConstructor::prototypeForStructure): 414 (WebCore::JSTestReadOnlySetLike::subspaceForImpl): 415 * bindings/scripts/test/JS/JSTestReadOnlySetLike.h: 416 (WebCore::JSTestReadOnlySetLike::subspaceFor): 417 * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp: 418 (WebCore::JSTestReportExtraMemoryCostDOMConstructor::prototypeForStructure): 419 (WebCore::JSTestReportExtraMemoryCost::subspaceForImpl): 420 * bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h: 421 (WebCore::JSTestReportExtraMemoryCost::subspaceFor): 422 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: 423 (WebCore::JSTestSerializedScriptValueInterfaceDOMConstructor::prototypeForStructure): 424 (WebCore::JSTestSerializedScriptValueInterface::subspaceForImpl): 425 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: 426 (WebCore::JSTestSerializedScriptValueInterface::subspaceFor): 427 * bindings/scripts/test/JS/JSTestSetLike.cpp: 428 (WebCore::JSTestSetLikeDOMConstructor::prototypeForStructure): 429 (WebCore::JSTestSetLike::subspaceForImpl): 430 * bindings/scripts/test/JS/JSTestSetLike.h: 431 (WebCore::JSTestSetLike::subspaceFor): 432 * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp: 433 (WebCore::JSTestSetLikeWithOverriddenOperationsDOMConstructor::prototypeForStructure): 434 (WebCore::JSTestSetLikeWithOverriddenOperations::subspaceForImpl): 435 * bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h: 436 (WebCore::JSTestSetLikeWithOverriddenOperations::subspaceFor): 437 * bindings/scripts/test/JS/JSTestStringifier.cpp: 438 (WebCore::JSTestStringifierDOMConstructor::prototypeForStructure): 439 (WebCore::JSTestStringifier::subspaceForImpl): 440 * bindings/scripts/test/JS/JSTestStringifier.h: 441 (WebCore::JSTestStringifier::subspaceFor): 442 * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp: 443 (WebCore::JSTestStringifierAnonymousOperationDOMConstructor::prototypeForStructure): 444 (WebCore::JSTestStringifierAnonymousOperation::subspaceForImpl): 445 * bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h: 446 (WebCore::JSTestStringifierAnonymousOperation::subspaceFor): 447 * bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp: 448 (WebCore::JSTestStringifierNamedOperationDOMConstructor::prototypeForStructure): 449 (WebCore::JSTestStringifierNamedOperation::subspaceForImpl): 450 * bindings/scripts/test/JS/JSTestStringifierNamedOperation.h: 451 (WebCore::JSTestStringifierNamedOperation::subspaceFor): 452 * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp: 453 (WebCore::JSTestStringifierOperationImplementedAsDOMConstructor::prototypeForStructure): 454 (WebCore::JSTestStringifierOperationImplementedAs::subspaceForImpl): 455 * bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h: 456 (WebCore::JSTestStringifierOperationImplementedAs::subspaceFor): 457 * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp: 458 (WebCore::JSTestStringifierOperationNamedToStringDOMConstructor::prototypeForStructure): 459 (WebCore::JSTestStringifierOperationNamedToString::subspaceForImpl): 460 * bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h: 461 (WebCore::JSTestStringifierOperationNamedToString::subspaceFor): 462 * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp: 463 (WebCore::JSTestStringifierReadOnlyAttributeDOMConstructor::prototypeForStructure): 464 (WebCore::JSTestStringifierReadOnlyAttribute::subspaceForImpl): 465 * bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h: 466 (WebCore::JSTestStringifierReadOnlyAttribute::subspaceFor): 467 * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp: 468 (WebCore::JSTestStringifierReadWriteAttributeDOMConstructor::prototypeForStructure): 469 (WebCore::JSTestStringifierReadWriteAttribute::subspaceForImpl): 470 * bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h: 471 (WebCore::JSTestStringifierReadWriteAttribute::subspaceFor): 472 * bindings/scripts/test/JS/JSTestTaggedWrapper.cpp: 473 (WebCore::JSTestTaggedWrapperDOMConstructor::prototypeForStructure): 474 (WebCore::JSTestTaggedWrapper::subspaceForImpl): 475 * bindings/scripts/test/JS/JSTestTaggedWrapper.h: 476 (WebCore::JSTestTaggedWrapper::subspaceFor): 477 * bindings/scripts/test/JS/JSTestTypedefs.cpp: 478 (WebCore::JSTestTypedefsDOMConstructor::construct): 479 (WebCore::JSTestTypedefs::subspaceForImpl): 480 * bindings/scripts/test/JS/JSTestTypedefs.h: 481 (WebCore::JSTestTypedefs::subspaceFor): 482 * bindings/scripts/test/JS/JSWorkerGlobalScope.cpp: 483 (WebCore::JSWorkerGlobalScope::subspaceForImpl): 484 * bindings/scripts/test/JS/JSWorkerGlobalScope.h: 485 (WebCore::JSWorkerGlobalScope::subspaceFor): 486 * bindings/scripts/test/JS/JSWorkletGlobalScope.cpp: 487 (WebCore::JSWorkletGlobalScope::subspaceForImpl): 488 * bindings/scripts/test/JS/JSWorkletGlobalScope.h: 489 (WebCore::JSWorkletGlobalScope::subspaceFor): 490 * bridge/objc/objc_runtime.h: 491 * bridge/objc/objc_runtime.mm: 492 (JSC::Bindings::ObjcFallbackObjectImp::subspaceForImpl): 493 * bridge/runtime_array.cpp: 494 (JSC::RuntimeArray::subspaceForImpl): 495 * bridge/runtime_array.h: 496 * bridge/runtime_method.cpp: 497 (JSC::RuntimeMethod::subspaceForImpl): 498 * bridge/runtime_method.h: 499 * bridge/runtime_object.cpp: 500 (JSC::Bindings::RuntimeObject::subspaceForImpl): 501 * bridge/runtime_object.h: 502 1 503 2022-02-18 Alan Bujtas <zalan@apple.com> 2 504 -
TabularUnified trunk/Source/WebCore/DerivedSources-output.xcfilelist ¶
r289978 r290129 10 10 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/CommandLineAPIModuleSource.h 11 11 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/CountQueuingStrategyBuiltins.h 12 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMClientIsoSubspaces.h 12 13 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMConstructors.h 13 14 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/DOMIsoSubspaces.h -
TabularUnified trunk/Source/WebCore/DerivedSources.make ¶
r289978 r290129 2079 2079 SUPPLEMENTAL_MAKEFILE_DEPS = SupplementalDependencies.dep 2080 2080 ISO_SUBSPACES_HEADER_FILE = DOMIsoSubspaces.h 2081 CLIENT_ISO_SUBSPACES_HEADER_FILE = DOMClientIsoSubspaces.h 2081 2082 CONSTRUCTORS_HEADER_FILE = DOMConstructors.h 2082 2083 WINDOW_CONSTRUCTORS_FILE = DOMWindowConstructors.idl … … 2095 2096 $(SUPPLEMENTAL_DEPENDENCY_FILE) \ 2096 2097 $(ISO_SUBSPACES_HEADER_FILE) \ 2098 $(CLIENT_ISO_SUBSPACES_HEADER_FILE) \ 2097 2099 $(CONSTRUCTORS_HEADER_FILE) \ 2098 2100 $(WINDOW_CONSTRUCTORS_FILE) \ … … 2109 2111 $(IDL_INTERMEDIATE_PATTERNS) : $(PREPROCESS_IDLS_SCRIPTS) $(IDL_ATTRIBUTES_FILE) $(JS_BINDING_IDLS) $(FEATURE_AND_PLATFORM_DEFINE_DEPENDENCIES) 2110 2112 $(shell echo $(JS_BINDING_IDLS) | tr " " "\n" > IDLFileNamesList.txt) 2111 $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) LANGUAGE_JAVASCRIPT" --idlFileNamesList IDLFileNamesList.txt --idlAttributesFile $(IDL_ATTRIBUTES_FILE) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --isoSubspacesHeaderFile $(ISO_SUBSPACES_HEADER_FILE) --c onstructorsHeaderFile $(CONSTRUCTORS_HEADER_FILE) --windowConstructorsFile $(WINDOW_CONSTRUCTORS_FILE) --workerGlobalScopeConstructorsFile $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --shadowRealmGlobalScopeConstructorsFile $(SHADOWREALMGLOBALSCOPE_CONSTRUCTORS_FILE) --dedicatedWorkerGlobalScopeConstructorsFile $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --serviceWorkerGlobalScopeConstructorsFile $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --sharedWorkerGlobalScopeConstructorsFile $(SHAREDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --workletGlobalScopeConstructorsFile $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --paintWorkletGlobalScopeConstructorsFile $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --audioWorkletGlobalScopeConstructorsFile $(AUDIOWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $(SUPPLEMENTAL_MAKEFILE_DEPS)2113 $(PERL) $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "$(FEATURE_AND_PLATFORM_DEFINES) LANGUAGE_JAVASCRIPT" --idlFileNamesList IDLFileNamesList.txt --idlAttributesFile $(IDL_ATTRIBUTES_FILE) --supplementalDependencyFile $(SUPPLEMENTAL_DEPENDENCY_FILE) --isoSubspacesHeaderFile $(ISO_SUBSPACES_HEADER_FILE) --clientISOSubspacesHeaderFile $(CLIENT_ISO_SUBSPACES_HEADER_FILE) --constructorsHeaderFile $(CONSTRUCTORS_HEADER_FILE) --windowConstructorsFile $(WINDOW_CONSTRUCTORS_FILE) --workerGlobalScopeConstructorsFile $(WORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --shadowRealmGlobalScopeConstructorsFile $(SHADOWREALMGLOBALSCOPE_CONSTRUCTORS_FILE) --dedicatedWorkerGlobalScopeConstructorsFile $(DEDICATEDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --serviceWorkerGlobalScopeConstructorsFile $(SERVICEWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --sharedWorkerGlobalScopeConstructorsFile $(SHAREDWORKERGLOBALSCOPE_CONSTRUCTORS_FILE) --workletGlobalScopeConstructorsFile $(WORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --paintWorkletGlobalScopeConstructorsFile $(PAINTWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --audioWorkletGlobalScopeConstructorsFile $(AUDIOWORKLETGLOBALSCOPE_CONSTRUCTORS_FILE) --supplementalMakefileDeps $(SUPPLEMENTAL_MAKEFILE_DEPS) 2112 2114 2113 2115 # -
TabularUnified trunk/Source/WebCore/bindings/js/DOMGCOutputConstraint.cpp ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 using namespace JSC; 39 39 40 DOMGCOutputConstraint::DOMGCOutputConstraint(VM& vm, JS VMClientData& clientData)40 DOMGCOutputConstraint::DOMGCOutputConstraint(VM& vm, JSHeapData& heapData) 41 41 : MarkingConstraint("Domo", "DOM Output", ConstraintVolatility::SeldomGreyed, ConstraintConcurrency::Concurrent, ConstraintParallelism::Parallel) 42 42 , m_vm(vm) 43 , m_ clientData(clientData)43 , m_heapData(heapData) 44 44 , m_lastExecutionVersion(vm.heap.mutatorExecutionVersion()) 45 45 { … … 60 60 m_lastExecutionVersion = heap.mutatorExecutionVersion(); 61 61 62 m_ clientData.forEachOutputConstraintSpace(62 m_heapData.forEachOutputConstraintSpace( 63 63 [&] (Subspace& subspace) { 64 64 auto func = [] (Visitor& visitor, HeapCell* heapCell, HeapCell::Kind) { -
TabularUnified trunk/Source/WebCore/bindings/js/DOMGCOutputConstraint.h ¶
r273138 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 34 34 namespace WebCore { 35 35 36 class JS VMClientData;36 class JSHeapData; 37 37 38 38 class DOMGCOutputConstraint : public JSC::MarkingConstraint { 39 39 WTF_MAKE_FAST_ALLOCATED; 40 40 public: 41 DOMGCOutputConstraint(JSC::VM&, JS VMClientData&);41 DOMGCOutputConstraint(JSC::VM&, JSHeapData&); 42 42 ~DOMGCOutputConstraint(); 43 43 … … 50 50 51 51 JSC::VM& m_vm; 52 JS VMClientData& m_clientData;52 JSHeapData& m_heapData; 53 53 uint64_t m_lastExecutionVersion; 54 54 }; -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMAsyncIterator.h ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 47 47 template<typename CellType, JSC::SubspaceAccess> 48 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)48 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 49 49 { 50 50 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDOMAsyncIteratorPrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMBuiltinConstructorBase.cpp ¶
r284241 r290129 1 1 /* 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 * Copyright (C) 2004-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2004-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2007 Samuel Weinig <sam@webkit.org> 5 5 * Copyright (C) 2013 Michael Pruett <michael@68k.org> … … 40 40 DEFINE_VISIT_CHILDREN(JSDOMBuiltinConstructorBase); 41 41 42 JSC:: IsoSubspace* JSDOMBuiltinConstructorBase::subspaceForImpl(JSC::VM& vm)42 JSC::GCClient::IsoSubspace* JSDOMBuiltinConstructorBase::subspaceForImpl(JSC::VM& vm) 43 43 { 44 44 return &static_cast<JSVMClientData*>(vm.clientData)->domBuiltinConstructorSpace(); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMBuiltinConstructorBase.h ¶
r284241 r290129 1 1 /* 2 2 * Copyright (C) 2015, 2016 Canon Inc. All rights reserved. 3 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 29 29 30 30 template<typename CellType, JSC::SubspaceAccess> 31 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)31 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 32 32 { 33 33 static_assert(sizeof(CellType) == sizeof(JSDOMBuiltinConstructorBase)); … … 49 49 50 50 private: 51 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);51 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 52 52 53 53 JSC::WriteBarrier<JSC::JSFunction> m_initializeFunction; -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMConstructorBase.cpp ¶
r282864 r290129 1 1 /* 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 * Copyright (C) 2004-20 11, 2013, 2016Apple Inc. All rights reserved.3 * Copyright (C) 2004-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2007 Samuel Weinig <sam@webkit.org> 5 5 * Copyright (C) 2013 Michael Pruett <michael@68k.org> … … 47 47 } 48 48 49 JSC:: IsoSubspace* JSDOMConstructorBase::subspaceForImpl(JSC::VM& vm)49 JSC::GCClient::IsoSubspace* JSDOMConstructorBase::subspaceForImpl(JSC::VM& vm) 50 50 { 51 51 return &static_cast<JSVMClientData*>(vm.clientData)->domConstructorSpace(); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMConstructorBase.h ¶
r282864 r290129 1 1 /* 2 2 * Copyright (C) 2015, 2016 Canon Inc. All rights reserved. 3 * Copyright (C) 2016-20 19Apple Inc. All rights reserved.3 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * This library is free software; you can redistribute it and/or … … 37 37 38 38 template<typename CellType, JSC::SubspaceAccess> 39 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)39 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 40 40 { 41 41 static_assert(sizeof(CellType) == sizeof(JSDOMConstructorBase)); … … 45 45 } 46 46 47 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);47 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 48 48 49 49 JSDOMGlobalObject* globalObject() const { return JSC::jsCast<JSDOMGlobalObject*>(Base::globalObject()); } -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMConstructorNotCallable.h ¶
r285730 r290129 1 1 /* 2 2 * Copyright (C) 2021 Alexey Shvayka <shvaikalesh@gmail.com> 3 * Copyright (C) 2021 Apple Inc. All rights reserved.3 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 46 46 47 47 template<typename CellType, JSC::SubspaceAccess> 48 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)48 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 49 49 { 50 50 static_assert(sizeof(CellType) == sizeof(JSDOMConstructorNotCallable)); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMIterator.h ¶
r286347 r290129 1 1 /* 2 2 * Copyright (C) 2016 Canon, Inc. All rights reserved. 3 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 4 4 * 5 5 * Redistribution and use in source and binary forms, with or without … … 53 53 54 54 template<typename CellType, JSC::SubspaceAccess> 55 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)55 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 56 56 { 57 57 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDOMIteratorPrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.cpp ¶
r277829 r290129 1 1 /* 2 * Copyright (C) 2016-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 139 139 } 140 140 141 JSC:: IsoSubspace* JSDOMWindowProperties::subspaceForImpl(JSC::VM& vm)141 JSC::GCClient::IsoSubspace* JSDOMWindowProperties::subspaceForImpl(JSC::VM& vm) 142 142 { 143 143 return &static_cast<JSVMClientData*>(vm.clientData)->domWindowPropertiesSpace(); -
TabularUnified trunk/Source/WebCore/bindings/js/JSDOMWindowProperties.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2016-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2016-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 38 38 static constexpr bool needsDestruction = false; 39 39 template<typename CellType, JSC::SubspaceAccess> 40 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)40 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 41 41 { 42 42 static_assert(CellType::destroy == JSC::JSCell::destroy, "JSDOMWindowProperties is not destructible actually"); … … 73 73 74 74 void finishCreation(JSC::JSGlobalObject&); 75 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);75 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 76 76 }; 77 77 -
TabularUnified trunk/Source/WebCore/bindings/js/JSFileSystemDirectoryHandleIterator.cpp ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 48 48 const JSC::ClassInfo JSFileSystemDirectoryHandleIteratorPrototype::s_info = { "Directory Handle Iterator", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSFileSystemDirectoryHandleIteratorPrototype) }; 49 49 50 IsoSubspace* JSFileSystemDirectoryHandleIterator::subspaceForImpl(VM& vm)50 GCClient::IsoSubspace* JSFileSystemDirectoryHandleIterator::subspaceForImpl(VM& vm) 51 51 { 52 JS C::JSLockHolder apiLocker(vm);52 JSLockHolder apiLocker(vm); 53 53 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 54 if (auto* space = clientData.fileSystemDirectoryHandleIteratorSpace()) 55 return space; 56 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator> || !JSFileSystemDirectoryHandleIterator::needsDestruction); 57 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator>) 58 clientData.setFileSystemDirectoryHandleIteratorSpace(makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSFileSystemDirectoryHandleIterator)); 59 else 60 clientData.setFileSystemDirectoryHandleIteratorSpace(makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSFileSystemDirectoryHandleIterator)); 61 auto* space = clientData.fileSystemDirectoryHandleIteratorSpace(); 54 if (auto* clientSpace = clientData.fileSystemDirectoryHandleIteratorSpace()) 55 return clientSpace; 56 57 auto& heapData = clientData.heapData(); 58 Locker locker { heapData.lock() }; 59 60 IsoSubspace* space = heapData.fileSystemDirectoryHandleIteratorSpace(); 61 if (!space) { 62 Heap& heap = vm.heap; 63 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator> || !JSFileSystemDirectoryHandleIterator::needsDestruction); 64 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSFileSystemDirectoryHandleIterator>) 65 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSFileSystemDirectoryHandleIterator); 66 else 67 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSFileSystemDirectoryHandleIterator); 68 heapData.setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<IsoSubspace>(space)); 69 62 70 IGNORE_WARNINGS_BEGIN("unreachable-code") 63 71 IGNORE_WARNINGS_BEGIN("tautological-compare") 64 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSFileSystemDirectoryHandleIterator::visitOutputConstraints;65 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;66 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)67 clientData.outputConstraintSpaces().append(space);72 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSFileSystemDirectoryHandleIterator::visitOutputConstraints; 73 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 74 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 75 heapData.outputConstraintSpaces().append(space); 68 76 IGNORE_WARNINGS_END 69 77 IGNORE_WARNINGS_END 70 return space; 78 } 79 80 auto* clientSpace = new GCClient::IsoSubspace(*space); 81 clientData.setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<GCClient::IsoSubspace>(clientSpace)); 82 return clientSpace; 71 83 } 72 84 -
TabularUnified trunk/Source/WebCore/bindings/js/JSFileSystemDirectoryHandleIterator.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2021 Apple Inc. All rights reserved.2 * Copyright (C) 2021-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 47 47 48 48 template<typename CellType, JSC::SubspaceAccess mode> 49 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)49 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 50 50 { 51 51 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 53 53 return subspaceForImpl(vm); 54 54 } 55 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);55 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 56 56 57 57 static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype) -
TabularUnified trunk/Source/WebCore/bindings/js/JSIDBSerializationGlobalObject.cpp ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2020-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 53 53 } 54 54 55 IsoSubspace* JSIDBSerializationGlobalObject::subspaceForImpl(VM& vm)55 GCClient::IsoSubspace* JSIDBSerializationGlobalObject::subspaceForImpl(VM& vm) 56 56 { 57 57 return &static_cast<JSVMClientData*>(vm.clientData)->idbSerializationSpace(); -
TabularUnified trunk/Source/WebCore/bindings/js/JSIDBSerializationGlobalObject.h ¶
r275151 r290129 1 1 /* 2 * Copyright (C) 2020 Apple Inc. All rights reserved.2 * Copyright (C) 2020-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 37 37 38 38 template<typename, JSC::SubspaceAccess mode> 39 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)39 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 40 40 { 41 41 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 43 43 return subspaceForImpl(vm); 44 44 } 45 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);45 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 46 46 47 47 DECLARE_INFO; -
TabularUnified trunk/Source/WebCore/bindings/js/JSWindowProxy.cpp ¶
r287737 r290129 1 1 /* 2 * Copyright (C) 2008-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 178 178 } 179 179 180 JSC:: IsoSubspace* JSWindowProxy::subspaceForImpl(JSC::VM& vm)180 JSC::GCClient::IsoSubspace* JSWindowProxy::subspaceForImpl(JSC::VM& vm) 181 181 { 182 182 return &static_cast<JSVMClientData*>(vm.clientData)->windowProxySpace(); -
TabularUnified trunk/Source/WebCore/bindings/js/JSWindowProxy.h ¶
r287327 r290129 1 1 /* 2 * Copyright (C) 2008-20 18Apple Inc. All rights reserved.2 * Copyright (C) 2008-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 49 49 static void destroy(JSCell*); 50 50 51 template<typename CellType, JSC::SubspaceAccess> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm) { return subspaceForImpl(vm); }51 template<typename CellType, JSC::SubspaceAccess> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) { return subspaceForImpl(vm); } 52 52 53 53 static JSWindowProxy& create(JSC::VM&, AbstractDOMWindow&, DOMWrapperWorld&); … … 72 72 JSWindowProxy(JSC::VM&, JSC::Structure&, DOMWrapperWorld&); 73 73 void finishCreation(JSC::VM&, AbstractDOMWindow&); 74 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);74 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 75 75 76 76 Ref<DOMWrapperWorld> m_world; -
TabularUnified trunk/Source/WebCore/bindings/js/WebCoreJSClientData.cpp ¶
r288442 r290129 1 1 /* 2 * Copyright (C) 2017-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2017-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 27 27 #include "WebCoreJSClientData.h" 28 28 29 #include "DOMClientIsoSubspaces.h" 29 30 #include "DOMGCOutputConstraint.h" 30 31 #include "DOMIsoSubspaces.h" … … 54 55 #include "runtime_method.h" 55 56 #include "runtime_object.h" 57 #include <mutex> 56 58 #include <wtf/MainThread.h> 57 59 … … 59 61 using namespace JSC; 60 62 61 JSVMClientData::JSVMClientData(VM& vm) 62 : m_builtinFunctions(vm) 63 , m_builtinNames(vm) 64 , m_runtimeArrayHeapCellType(JSC::IsoHeapCellType::Args<RuntimeArray>()) 63 JSHeapData::JSHeapData(Heap& heap) 64 : m_runtimeArrayHeapCellType(JSC::IsoHeapCellType::Args<RuntimeArray>()) 65 65 , m_runtimeObjectHeapCellType(JSC::IsoHeapCellType::Args<JSC::Bindings::RuntimeObject>()) 66 66 , m_windowProxyHeapCellType(JSC::IsoHeapCellType::Args<JSWindowProxy>()) … … 82 82 #endif 83 83 , m_heapCellTypeForJSIDBSerializationGlobalObject(JSC::IsoHeapCellType::Args<JSIDBSerializationGlobalObject>()) 84 , m_domBuiltinConstructorSpace ISO_SUBSPACE_INIT( vm.heap, vm.cellHeapCellType(), JSDOMBuiltinConstructorBase)85 , m_domConstructorSpace ISO_SUBSPACE_INIT( vm.heap, vm.cellHeapCellType(), JSDOMConstructorBase)86 , m_domNamespaceObjectSpace ISO_SUBSPACE_INIT( vm.heap, vm.cellHeapCellType(), JSDOMObject)87 , m_domWindowPropertiesSpace ISO_SUBSPACE_INIT( vm.heap, vm.cellHeapCellType(), JSDOMWindowProperties)88 , m_runtimeArraySpace ISO_SUBSPACE_INIT( vm.heap, m_runtimeArrayHeapCellType, RuntimeArray)89 , m_runtimeMethodSpace ISO_SUBSPACE_INIT( vm.heap, vm.cellHeapCellType(), RuntimeMethod) // Hash:0xf70c4a8590 , m_runtimeObjectSpace ISO_SUBSPACE_INIT( vm.heap, m_runtimeObjectHeapCellType, JSC::Bindings::RuntimeObject)91 , m_windowProxySpace ISO_SUBSPACE_INIT( vm.heap, m_windowProxyHeapCellType, JSWindowProxy)92 , m_idbSerializationSpace ISO_SUBSPACE_INIT( vm.heap, m_heapCellTypeForJSIDBSerializationGlobalObject, JSIDBSerializationGlobalObject)84 , m_domBuiltinConstructorSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSDOMBuiltinConstructorBase) 85 , m_domConstructorSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSDOMConstructorBase) 86 , m_domNamespaceObjectSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSDOMObject) 87 , m_domWindowPropertiesSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSDOMWindowProperties) 88 , m_runtimeArraySpace ISO_SUBSPACE_INIT(heap, m_runtimeArrayHeapCellType, RuntimeArray) 89 , m_runtimeMethodSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, RuntimeMethod) // Hash:0xf70c4a85 90 , m_runtimeObjectSpace ISO_SUBSPACE_INIT(heap, m_runtimeObjectHeapCellType, JSC::Bindings::RuntimeObject) 91 , m_windowProxySpace ISO_SUBSPACE_INIT(heap, m_windowProxyHeapCellType, JSWindowProxy) 92 , m_idbSerializationSpace ISO_SUBSPACE_INIT(heap, m_heapCellTypeForJSIDBSerializationGlobalObject, JSIDBSerializationGlobalObject) 93 93 , m_subspaces(makeUnique<DOMIsoSubspaces>()) 94 94 { 95 95 } 96 97 JSHeapData* JSHeapData::ensureHeapData(Heap& heap) 98 { 99 if (!Options::useGlobalGC()) 100 return new JSHeapData(heap); 101 102 static JSHeapData* singleton = nullptr; 103 static std::once_flag onceFlag; 104 std::call_once(onceFlag, [&] { 105 singleton = new JSHeapData(heap); 106 }); 107 return singleton; 108 } 109 110 #define CLIENT_ISO_SUBSPACE_INIT(subspace) subspace(m_heapData->subspace) 111 112 JSVMClientData::JSVMClientData(VM& vm) 113 : m_builtinFunctions(vm) 114 , m_builtinNames(vm) 115 , m_heapData(JSHeapData::ensureHeapData(vm.heap)) 116 , CLIENT_ISO_SUBSPACE_INIT(m_domBuiltinConstructorSpace) 117 , CLIENT_ISO_SUBSPACE_INIT(m_domConstructorSpace) 118 , CLIENT_ISO_SUBSPACE_INIT(m_domNamespaceObjectSpace) 119 , CLIENT_ISO_SUBSPACE_INIT(m_domWindowPropertiesSpace) 120 , CLIENT_ISO_SUBSPACE_INIT(m_runtimeArraySpace) 121 , CLIENT_ISO_SUBSPACE_INIT(m_runtimeMethodSpace) 122 , CLIENT_ISO_SUBSPACE_INIT(m_runtimeObjectSpace) 123 , CLIENT_ISO_SUBSPACE_INIT(m_windowProxySpace) 124 , CLIENT_ISO_SUBSPACE_INIT(m_idbSerializationSpace) 125 , m_clientSubspaces(makeUnique<DOMClientIsoSubspaces>()) 126 { 127 } 128 129 #undef CLIENT_ISO_SUBSPACE_INIT 96 130 97 131 JSVMClientData::~JSVMClientData() … … 143 177 vm->clientData = clientData; // ~VM deletes this pointer. 144 178 145 vm->heap.addMarkingConstraint(makeUnique<DOMGCOutputConstraint>(*vm, *clientData));179 vm->heap.addMarkingConstraint(makeUnique<DOMGCOutputConstraint>(*vm, clientData->heapData())); 146 180 147 181 clientData->m_normalWorld = DOMWrapperWorld::create(*vm, DOMWrapperWorld::Type::Normal); -
TabularUnified trunk/Source/WebCore/bindings/js/WebCoreJSClientData.h ¶
r288442 r290129 1 1 /* 2 2 * Copyright (C) 1999-2001 Harri Porten (porten@kde.org) 3 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.3 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 4 4 * Copyright (C) 2007 Samuel Weinig <sam@webkit.org> 5 5 * Copyright (C) 2009 Google, Inc. All rights reserved. … … 26 26 #include "WebCoreJSBuiltins.h" 27 27 #include "WorkerThreadType.h" 28 #include <wtf/Function.h> 28 29 #include <wtf/HashSet.h> 29 30 #include <wtf/RefPtr.h> … … 31 32 namespace WebCore { 32 33 34 class DOMClientIsoSubspaces; 33 35 class DOMIsoSubspaces; 34 36 35 class JSVMClientData : public JSC::VM::ClientData { 36 WTF_MAKE_NONCOPYABLE(JSVMClientData); WTF_MAKE_FAST_ALLOCATED; 37 friend class VMWorldIterator; 37 class JSHeapData { 38 WTF_MAKE_NONCOPYABLE(JSHeapData); 39 WTF_MAKE_FAST_ALLOCATED; 40 friend class JSVMClientData; 41 public: 42 JSHeapData(JSC::Heap&); 38 43 39 public: 40 explicit JSVMClientData(JSC::VM&); 44 static JSHeapData* ensureHeapData(JSC::Heap&); 41 45 42 virtual ~JSVMClientData(); 43 44 WEBCORE_EXPORT static void initNormalWorld(JSC::VM*, WorkerThreadType); 45 46 DOMWrapperWorld& normalWorld() { return *m_normalWorld; } 47 48 void getAllWorlds(Vector<Ref<DOMWrapperWorld>>&); 49 50 void rememberWorld(DOMWrapperWorld& world) 51 { 52 ASSERT(!m_worldSet.contains(&world)); 53 m_worldSet.add(&world); 54 } 55 56 void forgetWorld(DOMWrapperWorld& world) 57 { 58 ASSERT(m_worldSet.contains(&world)); 59 m_worldSet.remove(&world); 60 } 61 62 WebCoreBuiltinNames& builtinNames() { return m_builtinNames; } 63 JSBuiltinFunctions& builtinFunctions() { return m_builtinFunctions; } 64 65 JSC::IsoSubspace& domBuiltinConstructorSpace() { return m_domBuiltinConstructorSpace; } 66 JSC::IsoSubspace& domConstructorSpace() { return m_domConstructorSpace; } 67 JSC::IsoSubspace& domNamespaceObjectSpace() { return m_domNamespaceObjectSpace; } 68 JSC::IsoSubspace& domWindowPropertiesSpace() { return m_domWindowPropertiesSpace; } 69 JSC::IsoSubspace& runtimeArraySpace() { return m_runtimeArraySpace; } 70 JSC::IsoSubspace& runtimeMethodSpace() { return m_runtimeMethodSpace; } 71 JSC::IsoSubspace& runtimeObjectSpace() { return m_runtimeObjectSpace; } 72 JSC::IsoSubspace& windowProxySpace() { return m_windowProxySpace; } 73 JSC::IsoSubspace& idbSerializationSpace() { return m_idbSerializationSpace; } 74 JSC::IsoSubspace* fileSystemDirectoryHandleIteratorSpace() { return m_fileSystemDirectoryHandleIteratorSpace.get(); } 75 void setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<JSC::IsoSubspace> space) { m_fileSystemDirectoryHandleIteratorSpace = std::exchange(space, nullptr); } 46 Lock& lock() { return m_lock; } 47 DOMIsoSubspaces& subspaces() { return *m_subspaces.get(); } 76 48 77 49 Vector<JSC::IsoSubspace*>& outputConstraintSpaces() { return m_outputConstraintSpaces; } … … 84 56 } 85 57 86 DOMIsoSubspaces& subspaces() { return *m_subspaces.get(); } 58 JSC::IsoSubspace* fileSystemDirectoryHandleIteratorSpace() { return m_fileSystemDirectoryHandleIteratorSpace.get(); } 59 void setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<JSC::IsoSubspace> space) { m_fileSystemDirectoryHandleIteratorSpace = std::exchange(space, nullptr); } 87 60 88 61 private: 89 HashSet<DOMWrapperWorld*> m_worldSet; 90 RefPtr<DOMWrapperWorld> m_normalWorld; 91 92 JSBuiltinFunctions m_builtinFunctions; 93 WebCoreBuiltinNames m_builtinNames; 62 Lock m_lock; 94 63 95 64 JSC::IsoHeapCellType m_runtimeArrayHeapCellType; … … 126 95 JSC::IsoSubspace m_idbSerializationSpace; 127 96 std::unique_ptr<JSC::IsoSubspace> m_fileSystemDirectoryHandleIteratorSpace; 97 128 98 std::unique_ptr<DOMIsoSubspaces> m_subspaces; 129 99 Vector<JSC::IsoSubspace*> m_outputConstraintSpaces; 130 100 }; 131 101 102 103 class JSVMClientData : public JSC::VM::ClientData { 104 WTF_MAKE_NONCOPYABLE(JSVMClientData); WTF_MAKE_FAST_ALLOCATED; 105 friend class VMWorldIterator; 106 107 public: 108 explicit JSVMClientData(JSC::VM&); 109 110 virtual ~JSVMClientData(); 111 112 WEBCORE_EXPORT static void initNormalWorld(JSC::VM*, WorkerThreadType); 113 114 DOMWrapperWorld& normalWorld() { return *m_normalWorld; } 115 116 void getAllWorlds(Vector<Ref<DOMWrapperWorld>>&); 117 118 void rememberWorld(DOMWrapperWorld& world) 119 { 120 ASSERT(!m_worldSet.contains(&world)); 121 m_worldSet.add(&world); 122 } 123 124 void forgetWorld(DOMWrapperWorld& world) 125 { 126 ASSERT(m_worldSet.contains(&world)); 127 m_worldSet.remove(&world); 128 } 129 130 JSHeapData& heapData() { return *m_heapData; } 131 132 WebCoreBuiltinNames& builtinNames() { return m_builtinNames; } 133 JSBuiltinFunctions& builtinFunctions() { return m_builtinFunctions; } 134 135 JSC::GCClient::IsoSubspace& domBuiltinConstructorSpace() { return m_domBuiltinConstructorSpace; } 136 JSC::GCClient::IsoSubspace& domConstructorSpace() { return m_domConstructorSpace; } 137 JSC::GCClient::IsoSubspace& domNamespaceObjectSpace() { return m_domNamespaceObjectSpace; } 138 JSC::GCClient::IsoSubspace& domWindowPropertiesSpace() { return m_domWindowPropertiesSpace; } 139 JSC::GCClient::IsoSubspace& runtimeArraySpace() { return m_runtimeArraySpace; } 140 JSC::GCClient::IsoSubspace& runtimeMethodSpace() { return m_runtimeMethodSpace; } 141 JSC::GCClient::IsoSubspace& runtimeObjectSpace() { return m_runtimeObjectSpace; } 142 JSC::GCClient::IsoSubspace& windowProxySpace() { return m_windowProxySpace; } 143 JSC::GCClient::IsoSubspace& idbSerializationSpace() { return m_idbSerializationSpace; } 144 JSC::GCClient::IsoSubspace* fileSystemDirectoryHandleIteratorSpace() { return m_fileSystemDirectoryHandleIteratorSpace.get(); } 145 void setFileSystemDirectoryHandleIteratorSpace(std::unique_ptr<JSC::GCClient::IsoSubspace> space) { m_fileSystemDirectoryHandleIteratorSpace = std::exchange(space, nullptr); } 146 147 DOMClientIsoSubspaces& clientSubspaces() { return *m_clientSubspaces.get(); } 148 149 private: 150 HashSet<DOMWrapperWorld*> m_worldSet; 151 RefPtr<DOMWrapperWorld> m_normalWorld; 152 153 JSBuiltinFunctions m_builtinFunctions; 154 WebCoreBuiltinNames m_builtinNames; 155 156 JSHeapData* m_heapData; 157 JSC::GCClient::IsoSubspace m_domBuiltinConstructorSpace; 158 JSC::GCClient::IsoSubspace m_domConstructorSpace; 159 JSC::GCClient::IsoSubspace m_domNamespaceObjectSpace; 160 JSC::GCClient::IsoSubspace m_domWindowPropertiesSpace; 161 JSC::GCClient::IsoSubspace m_runtimeArraySpace; 162 JSC::GCClient::IsoSubspace m_runtimeMethodSpace; 163 JSC::GCClient::IsoSubspace m_runtimeObjectSpace; 164 JSC::GCClient::IsoSubspace m_windowProxySpace; 165 JSC::GCClient::IsoSubspace m_idbSerializationSpace; 166 167 std::unique_ptr<JSC::GCClient::IsoSubspace> m_fileSystemDirectoryHandleIteratorSpace; 168 std::unique_ptr<DOMClientIsoSubspaces> m_clientSubspaces; 169 }; 170 132 171 } // namespace WebCore -
TabularUnified trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm ¶
r289531 r290129 4 4 # Copyright (C) 2006, 2007 Samuel Weinig <sam@webkit.org> 5 5 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> 6 # Copyright (C) 2006-202 1Apple Inc. All rights reserved.6 # Copyright (C) 2006-2022 Apple Inc. All rights reserved. 7 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> 8 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. … … 3094 3094 } 3095 3095 3096 push(@headerContent, " template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)\n");3096 push(@headerContent, " template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)\n"); 3097 3097 push(@headerContent, " {\n"); 3098 3098 push(@headerContent, " if constexpr (mode == JSC::SubspaceAccess::Concurrently)\n"); … … 3100 3100 push(@headerContent, " return subspaceForImpl(vm);\n"); 3101 3101 push(@headerContent, " }\n"); 3102 push(@headerContent, " static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);\n");3102 push(@headerContent, " static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm);\n"); 3103 3103 3104 3104 # visit function … … 4872 4872 GenerateIterableDefinition($interface) if $interface->iterable; 4873 4873 4874 AddToImplIncludes("DOMClientIsoSubspaces.h"); 4874 4875 AddToImplIncludes("DOMIsoSubspaces.h"); 4875 4876 AddToImplIncludes("WebCoreJSClientData.h"); … … 4877 4878 AddToImplIncludes("<JavaScriptCore/SlotVisitorMacros.h>"); 4878 4879 AddToImplIncludes("<JavaScriptCore/SubspaceInlines.h>"); 4879 push(@implContent, "JSC:: IsoSubspace* ${className}::subspaceForImpl(JSC::VM& vm)\n");4880 push(@implContent, "JSC::GCClient::IsoSubspace* ${className}::subspaceForImpl(JSC::VM& vm)\n"); 4880 4881 push(@implContent, "{\n"); 4881 4882 push(@implContent, " auto& clientData = *static_cast<JSVMClientData*>(vm.clientData);\n"); 4882 push(@implContent, " auto& spaces = clientData.subspaces();\n"); 4883 push(@implContent, " if (auto* space = spaces.m_subspaceFor${interfaceName}.get())\n"); 4884 push(@implContent, " return space;\n"); 4883 push(@implContent, " auto& clientSpaces = clientData.clientSubspaces();\n"); 4884 push(@implContent, " if (auto* clientSpace = clientSpaces.m_clientSubspaceFor${interfaceName}.get())\n"); 4885 push(@implContent, " return clientSpace;\n"); 4886 push(@implContent, "\n"); 4887 push(@implContent, " auto& heapData = clientData.heapData();\n"); 4888 push(@implContent, " Locker locker { heapData.lock() };\n"); 4889 push(@implContent, "\n"); 4890 push(@implContent, " auto& spaces = heapData.subspaces();\n"); 4891 push(@implContent, " IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get();\n"); 4892 push(@implContent, " if (!space) {\n"); 4893 push(@implContent, " Heap& heap = vm.heap;\n"); 4894 4885 4895 if (IsDOMGlobalObject($interface)) { 4886 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeFor${className}, ${className});\n");4896 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeFor${className}, ${className});\n"); 4887 4897 } else { 4888 push(@implContent, " static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${className}> || !${className}::needsDestruction);\n");4889 push(@implContent, " if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${className}>)\n");4890 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), ${className});\n");4891 push(@implContent, " else\n");4892 push(@implContent, " spaces.m_subspaceFor${interfaceName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), ${className});\n");4893 } 4894 push(@implContent, " auto* space = spaces.m_subspaceFor${interfaceName}.get();\n");4898 push(@implContent, " static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${className}> || !${className}::needsDestruction);\n"); 4899 push(@implContent, " if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${className}>)\n"); 4900 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, ${className});\n"); 4901 push(@implContent, " else\n"); 4902 push(@implContent, " space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, ${className});\n"); 4903 } 4904 push(@implContent, " spaces.m_subspaceFor${interfaceName} = std::unique_ptr<IsoSubspace>(space);\n"); 4895 4905 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"unreachable-code\")\n"); 4896 4906 push(@implContent, "IGNORE_WARNINGS_BEGIN(\"tautological-compare\")\n"); 4897 push(@implContent, " void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${className}::visitOutputConstraints;\n"); 4898 push(@implContent, " void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;\n"); 4899 push(@implContent, " if (myVisitOutputConstraint != jsCellVisitOutputConstraint)\n"); 4900 # push(@implContent, " if (&${className}::visitOutputConstraints != &JSC::JSCell::visitOutputConstraints)\n"); 4901 push(@implContent, " clientData.outputConstraintSpaces().append(space);\n"); 4907 push(@implContent, " void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${className}::visitOutputConstraints;\n"); 4908 push(@implContent, " void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;\n"); 4909 push(@implContent, " if (myVisitOutputConstraint != jsCellVisitOutputConstraint)\n"); 4910 push(@implContent, " heapData.outputConstraintSpaces().append(space);\n"); 4902 4911 push(@implContent, "IGNORE_WARNINGS_END\n"); 4903 4912 push(@implContent, "IGNORE_WARNINGS_END\n"); 4904 push(@implContent, " return space;\n"); 4913 push(@implContent, " }\n"); 4914 push(@implContent, "\n"); 4915 4916 push(@implContent, " clientSpaces.m_clientSubspaceFor${interfaceName} = makeUnique<JSC::GCClient::IsoSubspace>(*space);\n"); 4917 push(@implContent, " return clientSpaces.m_clientSubspaceFor${interfaceName}.get();\n"); 4905 4918 push(@implContent, "}\n\n"); 4906 4919 … … 6786 6799 DECLARE_INFO; 6787 6800 6788 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)6801 template<typename, SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 6789 6802 { 6790 6803 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 6791 6804 return nullptr; 6792 6805 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 6793 auto& spaces = clientData.subspaces(); 6794 if (auto* space = spaces.m_subspaceFor${iteratorName}.get()) 6795 return space; 6796 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}> || !${iteratorName}::needsDestruction); 6797 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}>) 6798 spaces.m_subspaceFor${iteratorName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), ${iteratorName}); 6799 else 6800 spaces.m_subspaceFor${iteratorName} = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), ${iteratorName}); 6801 auto* space = spaces.m_subspaceFor${iteratorName}.get(); 6806 auto& clientSpaces = clientData.clientSubspaces(); 6807 if (auto* clientSpace = clientSpaces.m_clientSubspaceFor${iteratorName}.get()) 6808 return clientSpace; 6809 6810 auto& heapData = clientData.heapData(); 6811 Locker locker { heapData.lock() }; 6812 6813 auto& spaces = heapData.subspaces(); 6814 IsoSubspace* space = spaces.m_subspaceFor${iteratorName}.get(); 6815 if (!space) { 6816 Heap& heap = vm.heap; 6817 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}> || !${iteratorName}::needsDestruction); 6818 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, ${iteratorName}>) 6819 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, ${iteratorName}); 6820 else 6821 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, ${iteratorName}); 6822 spaces.m_subspaceFor${iteratorName} = std::unique_ptr<IsoSubspace>(space); 6802 6823 IGNORE_WARNINGS_BEGIN(\"unreachable-code\") 6803 6824 IGNORE_WARNINGS_BEGIN(\"tautological-compare\") 6804 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${iteratorName}::visitOutputConstraints;6805 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;6806 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)6807 clientData.outputConstraintSpaces().append(space);6825 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = ${iteratorName}::visitOutputConstraints; 6826 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 6827 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 6828 heapData.outputConstraintSpaces().append(space); 6808 6829 IGNORE_WARNINGS_END 6809 6830 IGNORE_WARNINGS_END 6810 return space; 6831 } 6832 6833 clientSpaces.m_clientSubspaceFor${iteratorName} = makeUnique<JSC::GCClient::IsoSubspace>(*space); 6834 return clientSpaces.m_clientSubspaceFor${iteratorName}.get(); 6811 6835 } 6812 6836 … … 7589 7613 7590 7614 push(@$outputArray, " template<typename CellType, JSC::SubspaceAccess>\n"); 7591 push(@$outputArray, " static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)\n");7615 push(@$outputArray, " static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)\n"); 7592 7616 push(@$outputArray, " {\n"); 7593 7617 push(@$outputArray, " STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(${prototypeClassName}, Base);\n"); -
TabularUnified trunk/Source/WebCore/bindings/scripts/preprocess-idls.pl ¶
r289458 r290129 42 42 my $supplementalDependencyFile; 43 43 my $isoSubspacesHeaderFile; 44 my $clientISOSubspacesHeaderFile; 44 45 my $constructorsHeaderFile; 45 46 my $windowConstructorsFile; … … 82 83 'supplementalDependencyFile=s' => \$supplementalDependencyFile, 83 84 'isoSubspacesHeaderFile=s' => \$isoSubspacesHeaderFile, 85 'clientISOSubspacesHeaderFile=s' => \$clientISOSubspacesHeaderFile, 84 86 'constructorsHeaderFile=s' => \$constructorsHeaderFile, 85 87 'windowConstructorsFile=s' => \$windowConstructorsFile, … … 115 117 $supplementalDependencyFile = CygwinPathIfNeeded($supplementalDependencyFile); 116 118 $isoSubspacesHeaderFile = CygwinPathIfNeeded($isoSubspacesHeaderFile); 119 $clientISOSubspacesHeaderFile = CygwinPathIfNeeded($clientISOSubspacesHeaderFile); 117 120 $constructorsHeaderFile = CygwinPathIfNeeded($constructorsHeaderFile); 118 121 $windowConstructorsFile = CygwinPathIfNeeded($windowConstructorsFile); … … 176 179 177 180 namespace WebCore { 181 using namespace JSC; 178 182 179 183 class DOMIsoSubspaces { … … 182 186 public: 183 187 DOMIsoSubspaces() = default; 188 END 189 190 my $clientISOSubspacesHeaderCode = <<END; 191 #include <wtf/FastMalloc.h> 192 #include <wtf/Noncopyable.h> 193 194 #pragma once 195 196 namespace WebCore { 197 using namespace JSC; 198 199 class DOMClientIsoSubspaces { 200 WTF_MAKE_NONCOPYABLE(DOMClientIsoSubspaces); 201 WTF_MAKE_FAST_ALLOCATED(DOMClientIsoSubspaces); 202 public: 203 DOMClientIsoSubspaces() = default; 184 204 END 185 205 … … 249 269 my $isCallbackInterface = isCallbackInterfaceFromIDL($idlFile); 250 270 if (!$isCallbackInterface) { 251 $isoSubspacesHeaderCode .= " std::unique_ptr<JSC::IsoSubspace> m_subspaceFor${interfaceName};\n"; 271 $isoSubspacesHeaderCode .= " std::unique_ptr<IsoSubspace> m_subspaceFor${interfaceName};\n"; 272 $clientISOSubspacesHeaderCode .= " std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceFor${interfaceName};\n"; 252 273 if (containsIterableInterfaceFromIDL($idlFile)) { 253 $isoSubspacesHeaderCode .= " std::unique_ptr<JSC::IsoSubspace> m_subspaceFor${interfaceName}Iterator;\n"; 274 $isoSubspacesHeaderCode .= " std::unique_ptr<IsoSubspace> m_subspaceFor${interfaceName}Iterator;\n"; 275 $clientISOSubspacesHeaderCode .= " std::unique_ptr<GCClient::IsoSubspace> m_clientSubspaceFor${interfaceName}Iterator;\n"; 254 276 } 255 277 } … … 327 349 } 328 350 351 if ($clientISOSubspacesHeaderFile) { 352 $clientISOSubspacesHeaderCode .= "};\n"; 353 $clientISOSubspacesHeaderCode .= "} // namespace WebCore\n"; 354 WriteFileIfChanged($clientISOSubspacesHeaderFile, $clientISOSubspacesHeaderCode); 355 } 356 329 357 if ($constructorsHeaderFile) { 330 358 my $constructorsLength = @constructors; -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 364 365 } 365 366 366 JSC:: IsoSubspace* JSDOMWindow::subspaceForImpl(JSC::VM& vm)367 JSC::GCClient::IsoSubspace* JSDOMWindow::subspaceForImpl(JSC::VM& vm) 367 368 { 368 369 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 369 auto& spaces = clientData.subspaces(); 370 if (auto* space = spaces.m_subspaceForDOMWindow.get()) 371 return space; 372 spaces.m_subspaceForDOMWindow = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSDOMWindow, JSDOMWindow); 373 auto* space = spaces.m_subspaceForDOMWindow.get(); 370 auto& clientSpaces = clientData.clientSubspaces(); 371 if (auto* clientSpace = clientSpaces.m_clientSubspaceForDOMWindow.get()) 372 return clientSpace; 373 374 auto& heapData = clientData.heapData(); 375 Locker locker { heapData.lock() }; 376 377 auto& spaces = heapData.subspaces(); 378 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 379 if (!space) { 380 Heap& heap = vm.heap; 381 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSDOMWindow, JSDOMWindow); 382 spaces.m_subspaceForDOMWindow = std::unique_ptr<IsoSubspace>(space); 374 383 IGNORE_WARNINGS_BEGIN("unreachable-code") 375 384 IGNORE_WARNINGS_BEGIN("tautological-compare") 376 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDOMWindow::visitOutputConstraints;377 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;378 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)379 clientData.outputConstraintSpaces().append(space);385 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDOMWindow::visitOutputConstraints; 386 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 387 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 388 heapData.outputConstraintSpaces().append(space); 380 389 IGNORE_WARNINGS_END 381 390 IGNORE_WARNINGS_END 382 return space; 391 } 392 393 clientSpaces.m_clientSubspaceForDOMWindow = makeUnique<JSC::GCClient::IsoSubspace>(*space); 394 return clientSpaces.m_clientSubspaceForDOMWindow.get(); 383 395 } 384 396 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSDOMWindow.h ¶
r286347 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 DOMWindow& wrapped() const … … 83 83 DECLARE_INFO; 84 84 template<typename CellType, JSC::SubspaceAccess> 85 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)85 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 86 86 { 87 87 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDOMWindowPrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DedicatedWorkerGlobalScope.h" … … 165 166 } 166 167 167 JSC:: IsoSubspace* JSDedicatedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm)168 JSC::GCClient::IsoSubspace* JSDedicatedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 168 169 { 169 170 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 170 auto& spaces = clientData.subspaces(); 171 if (auto* space = spaces.m_subspaceForDedicatedWorkerGlobalScope.get()) 172 return space; 173 spaces.m_subspaceForDedicatedWorkerGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSDedicatedWorkerGlobalScope, JSDedicatedWorkerGlobalScope); 174 auto* space = spaces.m_subspaceForDedicatedWorkerGlobalScope.get(); 171 auto& clientSpaces = clientData.clientSubspaces(); 172 if (auto* clientSpace = clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope.get()) 173 return clientSpace; 174 175 auto& heapData = clientData.heapData(); 176 Locker locker { heapData.lock() }; 177 178 auto& spaces = heapData.subspaces(); 179 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 180 if (!space) { 181 Heap& heap = vm.heap; 182 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSDedicatedWorkerGlobalScope, JSDedicatedWorkerGlobalScope); 183 spaces.m_subspaceForDedicatedWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 175 184 IGNORE_WARNINGS_BEGIN("unreachable-code") 176 185 IGNORE_WARNINGS_BEGIN("tautological-compare") 177 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDedicatedWorkerGlobalScope::visitOutputConstraints;178 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;179 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)180 clientData.outputConstraintSpaces().append(space);186 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSDedicatedWorkerGlobalScope::visitOutputConstraints; 187 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 188 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 189 heapData.outputConstraintSpaces().append(space); 181 190 IGNORE_WARNINGS_END 182 191 IGNORE_WARNINGS_END 183 return space; 192 } 193 194 clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 195 return clientSpaces.m_clientSubspaceForDedicatedWorkerGlobalScope.get(); 184 196 } 185 197 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSDedicatedWorkerGlobalScope.h ¶
r286347 r290129 48 48 49 49 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 50 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)50 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 51 51 { 52 52 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 54 54 return subspaceForImpl(vm); 55 55 } 56 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);56 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 57 57 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 58 58 DedicatedWorkerGlobalScope& wrapped() const … … 80 80 DECLARE_INFO; 81 81 template<typename CellType, JSC::SubspaceAccess> 82 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 83 83 { 84 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSDedicatedWorkerGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedStar.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 69 70 DECLARE_INFO; 70 71 template<typename CellType, JSC::SubspaceAccess> 71 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)72 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 72 73 { 73 74 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSExposedStarPrototype, Base); … … 229 230 } 230 231 231 JSC:: IsoSubspace* JSExposedStar::subspaceForImpl(JSC::VM& vm)232 JSC::GCClient::IsoSubspace* JSExposedStar::subspaceForImpl(JSC::VM& vm) 232 233 { 233 234 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 234 auto& spaces = clientData.subspaces(); 235 if (auto* space = spaces.m_subspaceForExposedStar.get()) 236 return space; 237 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar> || !JSExposedStar::needsDestruction); 238 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar>) 239 spaces.m_subspaceForExposedStar = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSExposedStar); 240 else 241 spaces.m_subspaceForExposedStar = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSExposedStar); 242 auto* space = spaces.m_subspaceForExposedStar.get(); 235 auto& clientSpaces = clientData.clientSubspaces(); 236 if (auto* clientSpace = clientSpaces.m_clientSubspaceForExposedStar.get()) 237 return clientSpace; 238 239 auto& heapData = clientData.heapData(); 240 Locker locker { heapData.lock() }; 241 242 auto& spaces = heapData.subspaces(); 243 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 244 if (!space) { 245 Heap& heap = vm.heap; 246 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar> || !JSExposedStar::needsDestruction); 247 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedStar>) 248 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSExposedStar); 249 else 250 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSExposedStar); 251 spaces.m_subspaceForExposedStar = std::unique_ptr<IsoSubspace>(space); 243 252 IGNORE_WARNINGS_BEGIN("unreachable-code") 244 253 IGNORE_WARNINGS_BEGIN("tautological-compare") 245 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedStar::visitOutputConstraints;246 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;247 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)248 clientData.outputConstraintSpaces().append(space);254 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedStar::visitOutputConstraints; 255 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 256 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 257 heapData.outputConstraintSpaces().append(space); 249 258 IGNORE_WARNINGS_END 250 259 IGNORE_WARNINGS_END 251 return space; 260 } 261 262 clientSpaces.m_clientSubspaceForExposedStar = makeUnique<JSC::GCClient::IsoSubspace>(*space); 263 return clientSpaces.m_clientSubspaceForExposedStar.get(); 252 264 } 253 265 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedStar.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 ExposedStar& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedToWorkerAndWindow.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 110 111 DECLARE_INFO; 111 112 template<typename CellType, JSC::SubspaceAccess> 112 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)113 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 113 114 { 114 115 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSExposedToWorkerAndWindowPrototype, Base); … … 247 248 } 248 249 249 JSC:: IsoSubspace* JSExposedToWorkerAndWindow::subspaceForImpl(JSC::VM& vm)250 JSC::GCClient::IsoSubspace* JSExposedToWorkerAndWindow::subspaceForImpl(JSC::VM& vm) 250 251 { 251 252 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 252 auto& spaces = clientData.subspaces(); 253 if (auto* space = spaces.m_subspaceForExposedToWorkerAndWindow.get()) 254 return space; 255 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow> || !JSExposedToWorkerAndWindow::needsDestruction); 256 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow>) 257 spaces.m_subspaceForExposedToWorkerAndWindow = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSExposedToWorkerAndWindow); 258 else 259 spaces.m_subspaceForExposedToWorkerAndWindow = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSExposedToWorkerAndWindow); 260 auto* space = spaces.m_subspaceForExposedToWorkerAndWindow.get(); 253 auto& clientSpaces = clientData.clientSubspaces(); 254 if (auto* clientSpace = clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow.get()) 255 return clientSpace; 256 257 auto& heapData = clientData.heapData(); 258 Locker locker { heapData.lock() }; 259 260 auto& spaces = heapData.subspaces(); 261 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 262 if (!space) { 263 Heap& heap = vm.heap; 264 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow> || !JSExposedToWorkerAndWindow::needsDestruction); 265 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSExposedToWorkerAndWindow>) 266 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSExposedToWorkerAndWindow); 267 else 268 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSExposedToWorkerAndWindow); 269 spaces.m_subspaceForExposedToWorkerAndWindow = std::unique_ptr<IsoSubspace>(space); 261 270 IGNORE_WARNINGS_BEGIN("unreachable-code") 262 271 IGNORE_WARNINGS_BEGIN("tautological-compare") 263 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedToWorkerAndWindow::visitOutputConstraints;264 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;265 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)266 clientData.outputConstraintSpaces().append(space);272 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSExposedToWorkerAndWindow::visitOutputConstraints; 273 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 274 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 275 heapData.outputConstraintSpaces().append(space); 267 276 IGNORE_WARNINGS_END 268 277 IGNORE_WARNINGS_END 269 return space; 278 } 279 280 clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow = makeUnique<JSC::GCClient::IsoSubspace>(*space); 281 return clientSpaces.m_clientSubspaceForExposedToWorkerAndWindow.get(); 270 282 } 271 283 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSExposedToWorkerAndWindow.h ¶
r285730 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 164 165 } 165 166 166 JSC:: IsoSubspace* JSPaintWorkletGlobalScope::subspaceForImpl(JSC::VM& vm)167 JSC::GCClient::IsoSubspace* JSPaintWorkletGlobalScope::subspaceForImpl(JSC::VM& vm) 167 168 { 168 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 169 auto& spaces = clientData.subspaces(); 170 if (auto* space = spaces.m_subspaceForPaintWorkletGlobalScope.get()) 171 return space; 172 spaces.m_subspaceForPaintWorkletGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSPaintWorkletGlobalScope, JSPaintWorkletGlobalScope); 173 auto* space = spaces.m_subspaceForPaintWorkletGlobalScope.get(); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSPaintWorkletGlobalScope, JSPaintWorkletGlobalScope); 182 spaces.m_subspaceForPaintWorkletGlobalScope = std::unique_ptr<IsoSubspace>(space); 174 183 IGNORE_WARNINGS_BEGIN("unreachable-code") 175 184 IGNORE_WARNINGS_BEGIN("tautological-compare") 176 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSPaintWorkletGlobalScope::visitOutputConstraints;177 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;178 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)179 clientData.outputConstraintSpaces().append(space);185 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSPaintWorkletGlobalScope::visitOutputConstraints; 186 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 187 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 188 heapData.outputConstraintSpaces().append(space); 180 189 IGNORE_WARNINGS_END 181 190 IGNORE_WARNINGS_END 182 return space; 191 } 192 193 clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 194 return clientSpaces.m_clientSubspaceForPaintWorkletGlobalScope.get(); 183 195 } 184 196 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSPaintWorkletGlobalScope.h ¶
r286347 r290129 48 48 49 49 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 50 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)50 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 51 51 { 52 52 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 54 54 return subspaceForImpl(vm); 55 55 } 56 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);56 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 57 57 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 58 58 PaintWorkletGlobalScope& wrapped() const … … 80 80 DECLARE_INFO; 81 81 template<typename CellType, JSC::SubspaceAccess> 82 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 83 83 { 84 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSPaintWorkletGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 164 165 } 165 166 166 JSC:: IsoSubspace* JSServiceWorkerGlobalScope::subspaceForImpl(JSC::VM& vm)167 JSC::GCClient::IsoSubspace* JSServiceWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 167 168 { 168 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 169 auto& spaces = clientData.subspaces(); 170 if (auto* space = spaces.m_subspaceForServiceWorkerGlobalScope.get()) 171 return space; 172 spaces.m_subspaceForServiceWorkerGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSServiceWorkerGlobalScope, JSServiceWorkerGlobalScope); 173 auto* space = spaces.m_subspaceForServiceWorkerGlobalScope.get(); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSServiceWorkerGlobalScope, JSServiceWorkerGlobalScope); 182 spaces.m_subspaceForServiceWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 174 183 IGNORE_WARNINGS_BEGIN("unreachable-code") 175 184 IGNORE_WARNINGS_BEGIN("tautological-compare") 176 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSServiceWorkerGlobalScope::visitOutputConstraints;177 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;178 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)179 clientData.outputConstraintSpaces().append(space);185 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSServiceWorkerGlobalScope::visitOutputConstraints; 186 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 187 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 188 heapData.outputConstraintSpaces().append(space); 180 189 IGNORE_WARNINGS_END 181 190 IGNORE_WARNINGS_END 182 return space; 191 } 192 193 clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 194 return clientSpaces.m_clientSubspaceForServiceWorkerGlobalScope.get(); 183 195 } 184 196 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSServiceWorkerGlobalScope.h ¶
r286347 r290129 48 48 49 49 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 50 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)50 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 51 51 { 52 52 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 54 54 return subspaceForImpl(vm); 55 55 } 56 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);56 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 57 57 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 58 58 ServiceWorkerGlobalScope& wrapped() const … … 80 80 DECLARE_INFO; 81 81 template<typename CellType, JSC::SubspaceAccess> 82 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 83 83 { 84 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSServiceWorkerGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.cpp ¶
r288442 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 150 151 } 151 152 152 JSC:: IsoSubspace* JSShadowRealmGlobalScope::subspaceForImpl(JSC::VM& vm)153 JSC::GCClient::IsoSubspace* JSShadowRealmGlobalScope::subspaceForImpl(JSC::VM& vm) 153 154 { 154 155 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 155 auto& spaces = clientData.subspaces(); 156 if (auto* space = spaces.m_subspaceForShadowRealmGlobalScope.get()) 157 return space; 158 spaces.m_subspaceForShadowRealmGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSShadowRealmGlobalScope, JSShadowRealmGlobalScope); 159 auto* space = spaces.m_subspaceForShadowRealmGlobalScope.get(); 156 auto& clientSpaces = clientData.clientSubspaces(); 157 if (auto* clientSpace = clientSpaces.m_clientSubspaceForShadowRealmGlobalScope.get()) 158 return clientSpace; 159 160 auto& heapData = clientData.heapData(); 161 Locker locker { heapData.lock() }; 162 163 auto& spaces = heapData.subspaces(); 164 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 165 if (!space) { 166 Heap& heap = vm.heap; 167 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSShadowRealmGlobalScope, JSShadowRealmGlobalScope); 168 spaces.m_subspaceForShadowRealmGlobalScope = std::unique_ptr<IsoSubspace>(space); 160 169 IGNORE_WARNINGS_BEGIN("unreachable-code") 161 170 IGNORE_WARNINGS_BEGIN("tautological-compare") 162 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSShadowRealmGlobalScope::visitOutputConstraints;163 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;164 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)165 clientData.outputConstraintSpaces().append(space);171 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSShadowRealmGlobalScope::visitOutputConstraints; 172 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 173 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 174 heapData.outputConstraintSpaces().append(space); 166 175 IGNORE_WARNINGS_END 167 176 IGNORE_WARNINGS_END 168 return space; 177 } 178 179 clientSpaces.m_clientSubspaceForShadowRealmGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 180 return clientSpaces.m_clientSubspaceForShadowRealmGlobalScope.get(); 169 181 } 170 182 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSShadowRealmGlobalScope.h ¶
r288442 r290129 49 49 50 50 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 51 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)51 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 52 52 { 53 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 55 55 return subspaceForImpl(vm); 56 56 } 57 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);57 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 58 58 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 59 59 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 148 149 } 149 150 150 JSC:: IsoSubspace* JSSharedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm)151 JSC::GCClient::IsoSubspace* JSSharedWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 151 152 { 152 153 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 153 auto& spaces = clientData.subspaces(); 154 if (auto* space = spaces.m_subspaceForSharedWorkerGlobalScope.get()) 155 return space; 156 spaces.m_subspaceForSharedWorkerGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSSharedWorkerGlobalScope, JSSharedWorkerGlobalScope); 157 auto* space = spaces.m_subspaceForSharedWorkerGlobalScope.get(); 154 auto& clientSpaces = clientData.clientSubspaces(); 155 if (auto* clientSpace = clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope.get()) 156 return clientSpace; 157 158 auto& heapData = clientData.heapData(); 159 Locker locker { heapData.lock() }; 160 161 auto& spaces = heapData.subspaces(); 162 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 163 if (!space) { 164 Heap& heap = vm.heap; 165 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSSharedWorkerGlobalScope, JSSharedWorkerGlobalScope); 166 spaces.m_subspaceForSharedWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 158 167 IGNORE_WARNINGS_BEGIN("unreachable-code") 159 168 IGNORE_WARNINGS_BEGIN("tautological-compare") 160 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSSharedWorkerGlobalScope::visitOutputConstraints;161 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;162 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)163 clientData.outputConstraintSpaces().append(space);169 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSSharedWorkerGlobalScope::visitOutputConstraints; 170 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 171 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 172 heapData.outputConstraintSpaces().append(space); 164 173 IGNORE_WARNINGS_END 165 174 IGNORE_WARNINGS_END 166 return space; 175 } 176 177 clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 178 return clientSpaces.m_clientSubspaceForSharedWorkerGlobalScope.get(); 167 179 } 168 180 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSSharedWorkerGlobalScope.h ¶
r286347 r290129 48 48 49 49 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 50 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)50 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 51 51 { 52 52 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 54 54 return subspaceForImpl(vm); 55 55 } 56 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);56 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 57 57 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 58 58 SharedWorkerGlobalScope& wrapped() const … … 80 80 DECLARE_INFO; 81 81 template<typename CellType, JSC::SubspaceAccess> 82 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 83 83 { 84 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSSharedWorkerGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp ¶
r288118 r290129 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include "DOMClientIsoSubspaces.h" 26 27 #include "DOMIsoSubspaces.h" 27 28 #include "ElementInlines.h" … … 89 90 DECLARE_INFO; 90 91 template<typename CellType, JSC::SubspaceAccess> 91 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)92 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 92 93 { 93 94 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestCEReactionsPrototype, Base); … … 431 432 } 432 433 433 JSC:: IsoSubspace* JSTestCEReactions::subspaceForImpl(JSC::VM& vm)434 JSC::GCClient::IsoSubspace* JSTestCEReactions::subspaceForImpl(JSC::VM& vm) 434 435 { 435 436 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 436 auto& spaces = clientData.subspaces(); 437 if (auto* space = spaces.m_subspaceForTestCEReactions.get()) 438 return space; 439 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions> || !JSTestCEReactions::needsDestruction); 440 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions>) 441 spaces.m_subspaceForTestCEReactions = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestCEReactions); 442 else 443 spaces.m_subspaceForTestCEReactions = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestCEReactions); 444 auto* space = spaces.m_subspaceForTestCEReactions.get(); 437 auto& clientSpaces = clientData.clientSubspaces(); 438 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCEReactions.get()) 439 return clientSpace; 440 441 auto& heapData = clientData.heapData(); 442 Locker locker { heapData.lock() }; 443 444 auto& spaces = heapData.subspaces(); 445 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 446 if (!space) { 447 Heap& heap = vm.heap; 448 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions> || !JSTestCEReactions::needsDestruction); 449 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactions>) 450 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCEReactions); 451 else 452 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCEReactions); 453 spaces.m_subspaceForTestCEReactions = std::unique_ptr<IsoSubspace>(space); 445 454 IGNORE_WARNINGS_BEGIN("unreachable-code") 446 455 IGNORE_WARNINGS_BEGIN("tautological-compare") 447 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactions::visitOutputConstraints;448 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;449 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)450 clientData.outputConstraintSpaces().append(space);456 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactions::visitOutputConstraints; 457 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 458 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 459 heapData.outputConstraintSpaces().append(space); 451 460 IGNORE_WARNINGS_END 452 461 IGNORE_WARNINGS_END 453 return space; 462 } 463 464 clientSpaces.m_clientSubspaceForTestCEReactions = makeUnique<JSC::GCClient::IsoSubspace>(*space); 465 return clientSpaces.m_clientSubspaceForTestCEReactions.get(); 454 466 } 455 467 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp ¶
r288118 r290129 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include "DOMClientIsoSubspaces.h" 26 27 #include "DOMIsoSubspaces.h" 27 28 #include "JSDOMAttribute.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestCEReactionsStringifierPrototype, Base); … … 257 258 } 258 259 259 JSC:: IsoSubspace* JSTestCEReactionsStringifier::subspaceForImpl(JSC::VM& vm)260 JSC::GCClient::IsoSubspace* JSTestCEReactionsStringifier::subspaceForImpl(JSC::VM& vm) 260 261 { 261 262 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 262 auto& spaces = clientData.subspaces(); 263 if (auto* space = spaces.m_subspaceForTestCEReactionsStringifier.get()) 264 return space; 265 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier> || !JSTestCEReactionsStringifier::needsDestruction); 266 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier>) 267 spaces.m_subspaceForTestCEReactionsStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestCEReactionsStringifier); 268 else 269 spaces.m_subspaceForTestCEReactionsStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestCEReactionsStringifier); 270 auto* space = spaces.m_subspaceForTestCEReactionsStringifier.get(); 263 auto& clientSpaces = clientData.clientSubspaces(); 264 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCEReactionsStringifier.get()) 265 return clientSpace; 266 267 auto& heapData = clientData.heapData(); 268 Locker locker { heapData.lock() }; 269 270 auto& spaces = heapData.subspaces(); 271 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 272 if (!space) { 273 Heap& heap = vm.heap; 274 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier> || !JSTestCEReactionsStringifier::needsDestruction); 275 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCEReactionsStringifier>) 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCEReactionsStringifier); 277 else 278 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCEReactionsStringifier); 279 spaces.m_subspaceForTestCEReactionsStringifier = std::unique_ptr<IsoSubspace>(space); 271 280 IGNORE_WARNINGS_BEGIN("unreachable-code") 272 281 IGNORE_WARNINGS_BEGIN("tautological-compare") 273 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactionsStringifier::visitOutputConstraints;274 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;275 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)276 clientData.outputConstraintSpaces().append(space);282 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCEReactionsStringifier::visitOutputConstraints; 283 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 284 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 285 heapData.outputConstraintSpaces().append(space); 277 286 IGNORE_WARNINGS_END 278 287 IGNORE_WARNINGS_END 279 return space; 288 } 289 290 clientSpaces.m_clientSubspaceForTestCEReactionsStringifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 291 return clientSpaces.m_clientSubspaceForTestCEReactionsStringifier.get(); 280 292 } 281 293 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 95 96 DECLARE_INFO; 96 97 template<typename CellType, JSC::SubspaceAccess> 97 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)98 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 98 99 { 99 100 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestCallTracerPrototype, Base); … … 506 507 } 507 508 508 JSC:: IsoSubspace* JSTestCallTracer::subspaceForImpl(JSC::VM& vm)509 JSC::GCClient::IsoSubspace* JSTestCallTracer::subspaceForImpl(JSC::VM& vm) 509 510 { 510 511 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 511 auto& spaces = clientData.subspaces(); 512 if (auto* space = spaces.m_subspaceForTestCallTracer.get()) 513 return space; 514 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer> || !JSTestCallTracer::needsDestruction); 515 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer>) 516 spaces.m_subspaceForTestCallTracer = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestCallTracer); 517 else 518 spaces.m_subspaceForTestCallTracer = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestCallTracer); 519 auto* space = spaces.m_subspaceForTestCallTracer.get(); 512 auto& clientSpaces = clientData.clientSubspaces(); 513 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestCallTracer.get()) 514 return clientSpace; 515 516 auto& heapData = clientData.heapData(); 517 Locker locker { heapData.lock() }; 518 519 auto& spaces = heapData.subspaces(); 520 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 521 if (!space) { 522 Heap& heap = vm.heap; 523 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer> || !JSTestCallTracer::needsDestruction); 524 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestCallTracer>) 525 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestCallTracer); 526 else 527 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestCallTracer); 528 spaces.m_subspaceForTestCallTracer = std::unique_ptr<IsoSubspace>(space); 520 529 IGNORE_WARNINGS_BEGIN("unreachable-code") 521 530 IGNORE_WARNINGS_BEGIN("tautological-compare") 522 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCallTracer::visitOutputConstraints;523 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;524 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)525 clientData.outputConstraintSpaces().append(space);531 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestCallTracer::visitOutputConstraints; 532 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 533 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 534 heapData.outputConstraintSpaces().append(space); 526 535 IGNORE_WARNINGS_END 527 536 IGNORE_WARNINGS_END 528 return space; 537 } 538 539 clientSpaces.m_clientSubspaceForTestCallTracer = makeUnique<JSC::GCClient::IsoSubspace>(*space); 540 return clientSpaces.m_clientSubspaceForTestCallTracer.get(); 529 541 } 530 542 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 62 63 DECLARE_INFO; 63 64 template<typename CellType, JSC::SubspaceAccess> 64 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)65 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 65 66 { 66 67 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestClassWithJSBuiltinConstructorPrototype, Base); … … 169 170 } 170 171 171 JSC:: IsoSubspace* JSTestClassWithJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm)172 JSC::GCClient::IsoSubspace* JSTestClassWithJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm) 172 173 { 173 174 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 174 auto& spaces = clientData.subspaces(); 175 if (auto* space = spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get()) 176 return space; 177 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor> || !JSTestClassWithJSBuiltinConstructor::needsDestruction); 178 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor>) 179 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestClassWithJSBuiltinConstructor); 180 else 181 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestClassWithJSBuiltinConstructor); 182 auto* space = spaces.m_subspaceForTestClassWithJSBuiltinConstructor.get(); 175 auto& clientSpaces = clientData.clientSubspaces(); 176 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor.get()) 177 return clientSpace; 178 179 auto& heapData = clientData.heapData(); 180 Locker locker { heapData.lock() }; 181 182 auto& spaces = heapData.subspaces(); 183 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 184 if (!space) { 185 Heap& heap = vm.heap; 186 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor> || !JSTestClassWithJSBuiltinConstructor::needsDestruction); 187 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestClassWithJSBuiltinConstructor>) 188 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestClassWithJSBuiltinConstructor); 189 else 190 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestClassWithJSBuiltinConstructor); 191 spaces.m_subspaceForTestClassWithJSBuiltinConstructor = std::unique_ptr<IsoSubspace>(space); 183 192 IGNORE_WARNINGS_BEGIN("unreachable-code") 184 193 IGNORE_WARNINGS_BEGIN("tautological-compare") 185 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestClassWithJSBuiltinConstructor::visitOutputConstraints;186 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;187 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)188 clientData.outputConstraintSpaces().append(space);194 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestClassWithJSBuiltinConstructor::visitOutputConstraints; 195 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 196 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 197 heapData.outputConstraintSpaces().append(space); 189 198 IGNORE_WARNINGS_END 190 199 IGNORE_WARNINGS_END 191 return space; 200 } 201 202 clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 203 return clientSpaces.m_clientSubspaceForTestClassWithJSBuiltinConstructor.get(); 192 204 } 193 205 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionalIncludes.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 125 126 DECLARE_INFO; 126 127 template<typename CellType, JSC::SubspaceAccess> 127 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)128 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 128 129 { 129 130 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestConditionalIncludesPrototype, Base); … … 782 783 #endif 783 784 784 JSC:: IsoSubspace* JSTestConditionalIncludes::subspaceForImpl(JSC::VM& vm)785 JSC::GCClient::IsoSubspace* JSTestConditionalIncludes::subspaceForImpl(JSC::VM& vm) 785 786 { 786 787 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 787 auto& spaces = clientData.subspaces(); 788 if (auto* space = spaces.m_subspaceForTestConditionalIncludes.get()) 789 return space; 790 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes> || !JSTestConditionalIncludes::needsDestruction); 791 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes>) 792 spaces.m_subspaceForTestConditionalIncludes = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestConditionalIncludes); 793 else 794 spaces.m_subspaceForTestConditionalIncludes = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestConditionalIncludes); 795 auto* space = spaces.m_subspaceForTestConditionalIncludes.get(); 788 auto& clientSpaces = clientData.clientSubspaces(); 789 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestConditionalIncludes.get()) 790 return clientSpace; 791 792 auto& heapData = clientData.heapData(); 793 Locker locker { heapData.lock() }; 794 795 auto& spaces = heapData.subspaces(); 796 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 797 if (!space) { 798 Heap& heap = vm.heap; 799 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes> || !JSTestConditionalIncludes::needsDestruction); 800 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionalIncludes>) 801 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestConditionalIncludes); 802 else 803 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestConditionalIncludes); 804 spaces.m_subspaceForTestConditionalIncludes = std::unique_ptr<IsoSubspace>(space); 796 805 IGNORE_WARNINGS_BEGIN("unreachable-code") 797 806 IGNORE_WARNINGS_BEGIN("tautological-compare") 798 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionalIncludes::visitOutputConstraints;799 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;800 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)801 clientData.outputConstraintSpaces().append(space);807 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionalIncludes::visitOutputConstraints; 808 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 809 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 810 heapData.outputConstraintSpaces().append(space); 802 811 IGNORE_WARNINGS_END 803 812 IGNORE_WARNINGS_END 804 return space; 813 } 814 815 clientSpaces.m_clientSubspaceForTestConditionalIncludes = makeUnique<JSC::GCClient::IsoSubspace>(*space); 816 return clientSpaces.m_clientSubspaceForTestConditionalIncludes.get(); 805 817 } 806 818 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionalIncludes.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionallyReadWrite.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMPromiseProxy.h" … … 96 97 DECLARE_INFO; 97 98 template<typename CellType, JSC::SubspaceAccess> 98 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)99 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 99 100 { 100 101 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestConditionallyReadWritePrototype, Base); … … 604 605 } 605 606 606 JSC:: IsoSubspace* JSTestConditionallyReadWrite::subspaceForImpl(JSC::VM& vm)607 JSC::GCClient::IsoSubspace* JSTestConditionallyReadWrite::subspaceForImpl(JSC::VM& vm) 607 608 { 608 609 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 609 auto& spaces = clientData.subspaces(); 610 if (auto* space = spaces.m_subspaceForTestConditionallyReadWrite.get()) 611 return space; 612 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite> || !JSTestConditionallyReadWrite::needsDestruction); 613 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite>) 614 spaces.m_subspaceForTestConditionallyReadWrite = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestConditionallyReadWrite); 615 else 616 spaces.m_subspaceForTestConditionallyReadWrite = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestConditionallyReadWrite); 617 auto* space = spaces.m_subspaceForTestConditionallyReadWrite.get(); 610 auto& clientSpaces = clientData.clientSubspaces(); 611 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestConditionallyReadWrite.get()) 612 return clientSpace; 613 614 auto& heapData = clientData.heapData(); 615 Locker locker { heapData.lock() }; 616 617 auto& spaces = heapData.subspaces(); 618 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 619 if (!space) { 620 Heap& heap = vm.heap; 621 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite> || !JSTestConditionallyReadWrite::needsDestruction); 622 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestConditionallyReadWrite>) 623 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestConditionallyReadWrite); 624 else 625 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestConditionallyReadWrite); 626 spaces.m_subspaceForTestConditionallyReadWrite = std::unique_ptr<IsoSubspace>(space); 618 627 IGNORE_WARNINGS_BEGIN("unreachable-code") 619 628 IGNORE_WARNINGS_BEGIN("tautological-compare") 620 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionallyReadWrite::visitOutputConstraints;621 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;622 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)623 clientData.outputConstraintSpaces().append(space);629 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestConditionallyReadWrite::visitOutputConstraints; 630 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 631 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 632 heapData.outputConstraintSpaces().append(space); 624 633 IGNORE_WARNINGS_END 625 634 IGNORE_WARNINGS_END 626 return space; 635 } 636 637 clientSpaces.m_clientSubspaceForTestConditionallyReadWrite = makeUnique<JSC::GCClient::IsoSubspace>(*space); 638 return clientSpaces.m_clientSubspaceForTestConditionallyReadWrite.get(); 627 639 } 628 640 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestConditionallyReadWrite.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMJITAbstractHeapRepository.h" … … 479 480 DECLARE_INFO; 480 481 template<typename CellType, JSC::SubspaceAccess> 481 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)482 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 482 483 { 483 484 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDOMJITPrototype, Base); … … 1245 1246 } 1246 1247 1247 JSC:: IsoSubspace* JSTestDOMJIT::subspaceForImpl(JSC::VM& vm)1248 JSC::GCClient::IsoSubspace* JSTestDOMJIT::subspaceForImpl(JSC::VM& vm) 1248 1249 { 1249 1250 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1250 auto& spaces = clientData.subspaces(); 1251 if (auto* space = spaces.m_subspaceForTestDOMJIT.get()) 1252 return space; 1253 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT> || !JSTestDOMJIT::needsDestruction); 1254 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT>) 1255 spaces.m_subspaceForTestDOMJIT = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDOMJIT); 1256 else 1257 spaces.m_subspaceForTestDOMJIT = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDOMJIT); 1258 auto* space = spaces.m_subspaceForTestDOMJIT.get(); 1251 auto& clientSpaces = clientData.clientSubspaces(); 1252 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDOMJIT.get()) 1253 return clientSpace; 1254 1255 auto& heapData = clientData.heapData(); 1256 Locker locker { heapData.lock() }; 1257 1258 auto& spaces = heapData.subspaces(); 1259 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 1260 if (!space) { 1261 Heap& heap = vm.heap; 1262 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT> || !JSTestDOMJIT::needsDestruction); 1263 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDOMJIT>) 1264 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDOMJIT); 1265 else 1266 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDOMJIT); 1267 spaces.m_subspaceForTestDOMJIT = std::unique_ptr<IsoSubspace>(space); 1259 1268 IGNORE_WARNINGS_BEGIN("unreachable-code") 1260 1269 IGNORE_WARNINGS_BEGIN("tautological-compare") 1261 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDOMJIT::visitOutputConstraints;1262 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;1263 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)1264 clientData.outputConstraintSpaces().append(space);1270 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDOMJIT::visitOutputConstraints; 1271 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1272 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1273 heapData.outputConstraintSpaces().append(space); 1265 1274 IGNORE_WARNINGS_END 1266 1275 IGNORE_WARNINGS_END 1267 return space; 1276 } 1277 1278 clientSpaces.m_clientSubspaceForTestDOMJIT = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1279 return clientSpaces.m_clientSubspaceForTestDOMJIT.get(); 1268 1280 } 1269 1281 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 TestDOMJIT& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSON.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "EventNames.h" … … 122 123 DECLARE_INFO; 123 124 template<typename CellType, JSC::SubspaceAccess> 124 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)125 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 125 126 { 126 127 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDefaultToJSONPrototype, Base); … … 801 802 } 802 803 803 JSC:: IsoSubspace* JSTestDefaultToJSON::subspaceForImpl(JSC::VM& vm)804 JSC::GCClient::IsoSubspace* JSTestDefaultToJSON::subspaceForImpl(JSC::VM& vm) 804 805 { 805 806 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 806 auto& spaces = clientData.subspaces(); 807 if (auto* space = spaces.m_subspaceForTestDefaultToJSON.get()) 808 return space; 809 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON> || !JSTestDefaultToJSON::needsDestruction); 810 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON>) 811 spaces.m_subspaceForTestDefaultToJSON = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDefaultToJSON); 812 else 813 spaces.m_subspaceForTestDefaultToJSON = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDefaultToJSON); 814 auto* space = spaces.m_subspaceForTestDefaultToJSON.get(); 807 auto& clientSpaces = clientData.clientSubspaces(); 808 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSON.get()) 809 return clientSpace; 810 811 auto& heapData = clientData.heapData(); 812 Locker locker { heapData.lock() }; 813 814 auto& spaces = heapData.subspaces(); 815 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 816 if (!space) { 817 Heap& heap = vm.heap; 818 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON> || !JSTestDefaultToJSON::needsDestruction); 819 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSON>) 820 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSON); 821 else 822 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSON); 823 spaces.m_subspaceForTestDefaultToJSON = std::unique_ptr<IsoSubspace>(space); 815 824 IGNORE_WARNINGS_BEGIN("unreachable-code") 816 825 IGNORE_WARNINGS_BEGIN("tautological-compare") 817 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSON::visitOutputConstraints;818 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;819 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)820 clientData.outputConstraintSpaces().append(space);826 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSON::visitOutputConstraints; 827 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 828 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 829 heapData.outputConstraintSpaces().append(space); 821 830 IGNORE_WARNINGS_END 822 831 IGNORE_WARNINGS_END 823 return space; 832 } 833 834 clientSpaces.m_clientSubspaceForTestDefaultToJSON = makeUnique<JSC::GCClient::IsoSubspace>(*space); 835 return clientSpaces.m_clientSubspaceForTestDefaultToJSON.get(); 824 836 } 825 837 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSON.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDefaultToJSONFilteredByExposedPrototype, Base); … … 263 264 } 264 265 265 JSC:: IsoSubspace* JSTestDefaultToJSONFilteredByExposed::subspaceForImpl(JSC::VM& vm)266 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONFilteredByExposed::subspaceForImpl(JSC::VM& vm) 266 267 { 267 268 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 268 auto& spaces = clientData.subspaces(); 269 if (auto* space = spaces.m_subspaceForTestDefaultToJSONFilteredByExposed.get()) 270 return space; 271 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed> || !JSTestDefaultToJSONFilteredByExposed::needsDestruction); 272 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed>) 273 spaces.m_subspaceForTestDefaultToJSONFilteredByExposed = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDefaultToJSONFilteredByExposed); 274 else 275 spaces.m_subspaceForTestDefaultToJSONFilteredByExposed = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDefaultToJSONFilteredByExposed); 276 auto* space = spaces.m_subspaceForTestDefaultToJSONFilteredByExposed.get(); 269 auto& clientSpaces = clientData.clientSubspaces(); 270 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed.get()) 271 return clientSpace; 272 273 auto& heapData = clientData.heapData(); 274 Locker locker { heapData.lock() }; 275 276 auto& spaces = heapData.subspaces(); 277 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 278 if (!space) { 279 Heap& heap = vm.heap; 280 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed> || !JSTestDefaultToJSONFilteredByExposed::needsDestruction); 281 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONFilteredByExposed>) 282 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONFilteredByExposed); 283 else 284 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONFilteredByExposed); 285 spaces.m_subspaceForTestDefaultToJSONFilteredByExposed = std::unique_ptr<IsoSubspace>(space); 277 286 IGNORE_WARNINGS_BEGIN("unreachable-code") 278 287 IGNORE_WARNINGS_BEGIN("tautological-compare") 279 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONFilteredByExposed::visitOutputConstraints;280 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;281 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)282 clientData.outputConstraintSpaces().append(space);288 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONFilteredByExposed::visitOutputConstraints; 289 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 290 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 291 heapData.outputConstraintSpaces().append(space); 283 292 IGNORE_WARNINGS_END 284 293 IGNORE_WARNINGS_END 285 return space; 294 } 295 296 clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed = makeUnique<JSC::GCClient::IsoSubspace>(*space); 297 return clientSpaces.m_clientSubspaceForTestDefaultToJSONFilteredByExposed.get(); 286 298 } 287 299 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONFilteredByExposed.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 60 61 DECLARE_INFO; 61 62 template<typename CellType, JSC::SubspaceAccess> 62 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)63 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 63 64 { 64 65 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDefaultToJSONIndirectInheritancePrototype, Base); … … 155 156 } 156 157 157 JSC:: IsoSubspace* JSTestDefaultToJSONIndirectInheritance::subspaceForImpl(JSC::VM& vm)158 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONIndirectInheritance::subspaceForImpl(JSC::VM& vm) 158 159 { 159 160 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 160 auto& spaces = clientData.subspaces(); 161 if (auto* space = spaces.m_subspaceForTestDefaultToJSONIndirectInheritance.get()) 162 return space; 163 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance> || !JSTestDefaultToJSONIndirectInheritance::needsDestruction); 164 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance>) 165 spaces.m_subspaceForTestDefaultToJSONIndirectInheritance = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDefaultToJSONIndirectInheritance); 166 else 167 spaces.m_subspaceForTestDefaultToJSONIndirectInheritance = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDefaultToJSONIndirectInheritance); 168 auto* space = spaces.m_subspaceForTestDefaultToJSONIndirectInheritance.get(); 161 auto& clientSpaces = clientData.clientSubspaces(); 162 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance.get()) 163 return clientSpace; 164 165 auto& heapData = clientData.heapData(); 166 Locker locker { heapData.lock() }; 167 168 auto& spaces = heapData.subspaces(); 169 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 170 if (!space) { 171 Heap& heap = vm.heap; 172 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance> || !JSTestDefaultToJSONIndirectInheritance::needsDestruction); 173 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONIndirectInheritance>) 174 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONIndirectInheritance); 175 else 176 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONIndirectInheritance); 177 spaces.m_subspaceForTestDefaultToJSONIndirectInheritance = std::unique_ptr<IsoSubspace>(space); 169 178 IGNORE_WARNINGS_BEGIN("unreachable-code") 170 179 IGNORE_WARNINGS_BEGIN("tautological-compare") 171 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONIndirectInheritance::visitOutputConstraints;172 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;173 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)174 clientData.outputConstraintSpaces().append(space);180 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONIndirectInheritance::visitOutputConstraints; 181 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 182 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 183 heapData.outputConstraintSpaces().append(space); 175 184 IGNORE_WARNINGS_END 176 185 IGNORE_WARNINGS_END 177 return space; 186 } 187 188 clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance = makeUnique<JSC::GCClient::IsoSubspace>(*space); 189 return clientSpaces.m_clientSubspaceForTestDefaultToJSONIndirectInheritance.get(); 178 190 } 179 191 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONIndirectInheritance.h ¶
r285730 r290129 49 49 50 50 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 51 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)51 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 52 52 { 53 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 55 55 return subspaceForImpl(vm); 56 56 } 57 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);57 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 58 58 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 59 59 TestDefaultToJSONIndirectInheritance& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInherit.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 87 88 DECLARE_INFO; 88 89 template<typename CellType, JSC::SubspaceAccess> 89 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)90 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 90 91 { 91 92 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDefaultToJSONInheritPrototype, Base); … … 285 286 } 286 287 287 JSC:: IsoSubspace* JSTestDefaultToJSONInherit::subspaceForImpl(JSC::VM& vm)288 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONInherit::subspaceForImpl(JSC::VM& vm) 288 289 { 289 290 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 290 auto& spaces = clientData.subspaces(); 291 if (auto* space = spaces.m_subspaceForTestDefaultToJSONInherit.get()) 292 return space; 293 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit> || !JSTestDefaultToJSONInherit::needsDestruction); 294 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit>) 295 spaces.m_subspaceForTestDefaultToJSONInherit = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDefaultToJSONInherit); 296 else 297 spaces.m_subspaceForTestDefaultToJSONInherit = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDefaultToJSONInherit); 298 auto* space = spaces.m_subspaceForTestDefaultToJSONInherit.get(); 291 auto& clientSpaces = clientData.clientSubspaces(); 292 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit.get()) 293 return clientSpace; 294 295 auto& heapData = clientData.heapData(); 296 Locker locker { heapData.lock() }; 297 298 auto& spaces = heapData.subspaces(); 299 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 300 if (!space) { 301 Heap& heap = vm.heap; 302 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit> || !JSTestDefaultToJSONInherit::needsDestruction); 303 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInherit>) 304 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONInherit); 305 else 306 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONInherit); 307 spaces.m_subspaceForTestDefaultToJSONInherit = std::unique_ptr<IsoSubspace>(space); 299 308 IGNORE_WARNINGS_BEGIN("unreachable-code") 300 309 IGNORE_WARNINGS_BEGIN("tautological-compare") 301 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInherit::visitOutputConstraints;302 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;303 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)304 clientData.outputConstraintSpaces().append(space);310 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInherit::visitOutputConstraints; 311 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 312 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 313 heapData.outputConstraintSpaces().append(space); 305 314 IGNORE_WARNINGS_END 306 315 IGNORE_WARNINGS_END 307 return space; 316 } 317 318 clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit = makeUnique<JSC::GCClient::IsoSubspace>(*space); 319 return clientSpaces.m_clientSubspaceForTestDefaultToJSONInherit.get(); 308 320 } 309 321 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInherit.h ¶
r285730 r290129 49 49 50 50 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 51 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)51 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 52 52 { 53 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 55 55 return subspaceForImpl(vm); 56 56 } 57 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);57 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 58 58 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 59 59 TestDefaultToJSONInherit& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 89 90 DECLARE_INFO; 90 91 template<typename CellType, JSC::SubspaceAccess> 91 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)92 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 92 93 { 93 94 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDefaultToJSONInheritFinalPrototype, Base); … … 325 326 } 326 327 327 JSC:: IsoSubspace* JSTestDefaultToJSONInheritFinal::subspaceForImpl(JSC::VM& vm)328 JSC::GCClient::IsoSubspace* JSTestDefaultToJSONInheritFinal::subspaceForImpl(JSC::VM& vm) 328 329 { 329 330 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 330 auto& spaces = clientData.subspaces(); 331 if (auto* space = spaces.m_subspaceForTestDefaultToJSONInheritFinal.get()) 332 return space; 333 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal> || !JSTestDefaultToJSONInheritFinal::needsDestruction); 334 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal>) 335 spaces.m_subspaceForTestDefaultToJSONInheritFinal = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDefaultToJSONInheritFinal); 336 else 337 spaces.m_subspaceForTestDefaultToJSONInheritFinal = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDefaultToJSONInheritFinal); 338 auto* space = spaces.m_subspaceForTestDefaultToJSONInheritFinal.get(); 331 auto& clientSpaces = clientData.clientSubspaces(); 332 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal.get()) 333 return clientSpace; 334 335 auto& heapData = clientData.heapData(); 336 Locker locker { heapData.lock() }; 337 338 auto& spaces = heapData.subspaces(); 339 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 340 if (!space) { 341 Heap& heap = vm.heap; 342 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal> || !JSTestDefaultToJSONInheritFinal::needsDestruction); 343 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDefaultToJSONInheritFinal>) 344 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDefaultToJSONInheritFinal); 345 else 346 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDefaultToJSONInheritFinal); 347 spaces.m_subspaceForTestDefaultToJSONInheritFinal = std::unique_ptr<IsoSubspace>(space); 339 348 IGNORE_WARNINGS_BEGIN("unreachable-code") 340 349 IGNORE_WARNINGS_BEGIN("tautological-compare") 341 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInheritFinal::visitOutputConstraints;342 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;343 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)344 clientData.outputConstraintSpaces().append(space);350 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDefaultToJSONInheritFinal::visitOutputConstraints; 351 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 352 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 353 heapData.outputConstraintSpaces().append(space); 345 354 IGNORE_WARNINGS_END 346 355 IGNORE_WARNINGS_END 347 return space; 356 } 357 358 clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal = makeUnique<JSC::GCClient::IsoSubspace>(*space); 359 return clientSpaces.m_clientSubspaceForTestDefaultToJSONInheritFinal.get(); 348 360 } 349 361 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDefaultToJSONInheritFinal.h ¶
r285730 r290129 49 49 50 50 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 51 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)51 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 52 52 { 53 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 55 55 return subspaceForImpl(vm); 56 56 } 57 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);57 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 58 58 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 59 59 TestDefaultToJSONInheritFinal& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.cpp ¶
r288118 r290129 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include "DOMClientIsoSubspaces.h" 26 27 #include "DOMIsoSubspaces.h" 27 28 #include "JSDOMAttribute.h" … … 68 69 DECLARE_INFO; 69 70 template<typename CellType, JSC::SubspaceAccess> 70 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)71 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 71 72 { 72 73 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDelegateToSharedSyntheticAttributePrototype, Base); … … 239 240 } 240 241 241 JSC:: IsoSubspace* JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl(JSC::VM& vm)242 JSC::GCClient::IsoSubspace* JSTestDelegateToSharedSyntheticAttribute::subspaceForImpl(JSC::VM& vm) 242 243 { 243 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 244 auto& spaces = clientData.subspaces(); 245 if (auto* space = spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute.get()) 246 return space; 247 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute> || !JSTestDelegateToSharedSyntheticAttribute::needsDestruction); 248 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute>) 249 spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDelegateToSharedSyntheticAttribute); 250 else 251 spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDelegateToSharedSyntheticAttribute); 252 auto* space = spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute.get(); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute> || !JSTestDelegateToSharedSyntheticAttribute::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDelegateToSharedSyntheticAttribute>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDelegateToSharedSyntheticAttribute); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDelegateToSharedSyntheticAttribute); 261 spaces.m_subspaceForTestDelegateToSharedSyntheticAttribute = std::unique_ptr<IsoSubspace>(space); 253 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 254 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 255 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDelegateToSharedSyntheticAttribute::visitOutputConstraints;256 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;257 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)258 clientData.outputConstraintSpaces().append(space);264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDelegateToSharedSyntheticAttribute::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 259 268 IGNORE_WARNINGS_END 260 269 IGNORE_WARNINGS_END 261 return space; 270 } 271 272 clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestDelegateToSharedSyntheticAttribute.get(); 262 274 } 263 275 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDelegateToSharedSyntheticAttribute.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDomainSecurity.cpp ¶
r288118 r290129 24 24 #include "ActiveDOMObject.h" 25 25 #include "CustomElementReactionQueue.h" 26 #include "DOMClientIsoSubspaces.h" 26 27 #include "DOMIsoSubspaces.h" 27 28 #include "IDLTypes.h" … … 78 79 DECLARE_INFO; 79 80 template<typename CellType, JSC::SubspaceAccess> 80 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)81 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 81 82 { 82 83 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestDomainSecurityPrototype, Base); … … 313 314 } 314 315 315 JSC:: IsoSubspace* JSTestDomainSecurity::subspaceForImpl(JSC::VM& vm)316 JSC::GCClient::IsoSubspace* JSTestDomainSecurity::subspaceForImpl(JSC::VM& vm) 316 317 { 317 318 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 318 auto& spaces = clientData.subspaces(); 319 if (auto* space = spaces.m_subspaceForTestDomainSecurity.get()) 320 return space; 321 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity> || !JSTestDomainSecurity::needsDestruction); 322 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity>) 323 spaces.m_subspaceForTestDomainSecurity = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestDomainSecurity); 324 else 325 spaces.m_subspaceForTestDomainSecurity = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestDomainSecurity); 326 auto* space = spaces.m_subspaceForTestDomainSecurity.get(); 319 auto& clientSpaces = clientData.clientSubspaces(); 320 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestDomainSecurity.get()) 321 return clientSpace; 322 323 auto& heapData = clientData.heapData(); 324 Locker locker { heapData.lock() }; 325 326 auto& spaces = heapData.subspaces(); 327 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 328 if (!space) { 329 Heap& heap = vm.heap; 330 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity> || !JSTestDomainSecurity::needsDestruction); 331 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestDomainSecurity>) 332 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestDomainSecurity); 333 else 334 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestDomainSecurity); 335 spaces.m_subspaceForTestDomainSecurity = std::unique_ptr<IsoSubspace>(space); 327 336 IGNORE_WARNINGS_BEGIN("unreachable-code") 328 337 IGNORE_WARNINGS_BEGIN("tautological-compare") 329 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDomainSecurity::visitOutputConstraints;330 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;331 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)332 clientData.outputConstraintSpaces().append(space);338 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestDomainSecurity::visitOutputConstraints; 339 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 340 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 341 heapData.outputConstraintSpaces().append(space); 333 342 IGNORE_WARNINGS_END 334 343 IGNORE_WARNINGS_END 335 return space; 344 } 345 346 clientSpaces.m_clientSubspaceForTestDomainSecurity = makeUnique<JSC::GCClient::IsoSubspace>(*space); 347 return clientSpaces.m_clientSubspaceForTestDomainSecurity.get(); 336 348 } 337 349 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDomainSecurity.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 90 91 DECLARE_INFO; 91 92 template<typename CellType, JSC::SubspaceAccess> 92 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)93 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 93 94 { 94 95 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestEnabledBySettingPrototype, Base); … … 452 453 #endif 453 454 454 JSC:: IsoSubspace* JSTestEnabledBySetting::subspaceForImpl(JSC::VM& vm)455 JSC::GCClient::IsoSubspace* JSTestEnabledBySetting::subspaceForImpl(JSC::VM& vm) 455 456 { 456 457 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 457 auto& spaces = clientData.subspaces(); 458 if (auto* space = spaces.m_subspaceForTestEnabledBySetting.get()) 459 return space; 460 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting> || !JSTestEnabledBySetting::needsDestruction); 461 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting>) 462 spaces.m_subspaceForTestEnabledBySetting = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestEnabledBySetting); 463 else 464 spaces.m_subspaceForTestEnabledBySetting = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestEnabledBySetting); 465 auto* space = spaces.m_subspaceForTestEnabledBySetting.get(); 458 auto& clientSpaces = clientData.clientSubspaces(); 459 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEnabledBySetting.get()) 460 return clientSpace; 461 462 auto& heapData = clientData.heapData(); 463 Locker locker { heapData.lock() }; 464 465 auto& spaces = heapData.subspaces(); 466 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 467 if (!space) { 468 Heap& heap = vm.heap; 469 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting> || !JSTestEnabledBySetting::needsDestruction); 470 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledBySetting>) 471 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEnabledBySetting); 472 else 473 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEnabledBySetting); 474 spaces.m_subspaceForTestEnabledBySetting = std::unique_ptr<IsoSubspace>(space); 466 475 IGNORE_WARNINGS_BEGIN("unreachable-code") 467 476 IGNORE_WARNINGS_BEGIN("tautological-compare") 468 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledBySetting::visitOutputConstraints;469 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;470 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)471 clientData.outputConstraintSpaces().append(space);477 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledBySetting::visitOutputConstraints; 478 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 479 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 480 heapData.outputConstraintSpaces().append(space); 472 481 IGNORE_WARNINGS_END 473 482 IGNORE_WARNINGS_END 474 return space; 483 } 484 485 clientSpaces.m_clientSubspaceForTestEnabledBySetting = makeUnique<JSC::GCClient::IsoSubspace>(*space); 486 return clientSpaces.m_clientSubspaceForTestEnabledBySetting.get(); 475 487 } 476 488 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestEnabledForContextPrototype, Base); … … 179 180 } 180 181 181 JSC:: IsoSubspace* JSTestEnabledForContext::subspaceForImpl(JSC::VM& vm)182 JSC::GCClient::IsoSubspace* JSTestEnabledForContext::subspaceForImpl(JSC::VM& vm) 182 183 { 183 184 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 184 auto& spaces = clientData.subspaces(); 185 if (auto* space = spaces.m_subspaceForTestEnabledForContext.get()) 186 return space; 187 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext> || !JSTestEnabledForContext::needsDestruction); 188 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext>) 189 spaces.m_subspaceForTestEnabledForContext = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestEnabledForContext); 190 else 191 spaces.m_subspaceForTestEnabledForContext = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestEnabledForContext); 192 auto* space = spaces.m_subspaceForTestEnabledForContext.get(); 185 auto& clientSpaces = clientData.clientSubspaces(); 186 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEnabledForContext.get()) 187 return clientSpace; 188 189 auto& heapData = clientData.heapData(); 190 Locker locker { heapData.lock() }; 191 192 auto& spaces = heapData.subspaces(); 193 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 194 if (!space) { 195 Heap& heap = vm.heap; 196 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext> || !JSTestEnabledForContext::needsDestruction); 197 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEnabledForContext>) 198 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEnabledForContext); 199 else 200 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEnabledForContext); 201 spaces.m_subspaceForTestEnabledForContext = std::unique_ptr<IsoSubspace>(space); 193 202 IGNORE_WARNINGS_BEGIN("unreachable-code") 194 203 IGNORE_WARNINGS_BEGIN("tautological-compare") 195 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledForContext::visitOutputConstraints;196 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;197 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)198 clientData.outputConstraintSpaces().append(space);204 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEnabledForContext::visitOutputConstraints; 205 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 206 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 207 heapData.outputConstraintSpaces().append(space); 199 208 IGNORE_WARNINGS_END 200 209 IGNORE_WARNINGS_END 201 return space; 210 } 211 212 clientSpaces.m_clientSubspaceForTestEnabledForContext = makeUnique<JSC::GCClient::IsoSubspace>(*space); 213 return clientSpaces.m_clientSubspaceForTestEnabledForContext.get(); 202 214 } 203 215 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 145 146 DECLARE_INFO; 146 147 template<typename CellType, JSC::SubspaceAccess> 147 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)148 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 148 149 { 149 150 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestEventConstructorPrototype, Base); … … 316 317 #endif 317 318 318 JSC:: IsoSubspace* JSTestEventConstructor::subspaceForImpl(JSC::VM& vm)319 JSC::GCClient::IsoSubspace* JSTestEventConstructor::subspaceForImpl(JSC::VM& vm) 319 320 { 320 321 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 321 auto& spaces = clientData.subspaces(); 322 if (auto* space = spaces.m_subspaceForTestEventConstructor.get()) 323 return space; 324 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor> || !JSTestEventConstructor::needsDestruction); 325 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor>) 326 spaces.m_subspaceForTestEventConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestEventConstructor); 327 else 328 spaces.m_subspaceForTestEventConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestEventConstructor); 329 auto* space = spaces.m_subspaceForTestEventConstructor.get(); 322 auto& clientSpaces = clientData.clientSubspaces(); 323 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEventConstructor.get()) 324 return clientSpace; 325 326 auto& heapData = clientData.heapData(); 327 Locker locker { heapData.lock() }; 328 329 auto& spaces = heapData.subspaces(); 330 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 331 if (!space) { 332 Heap& heap = vm.heap; 333 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor> || !JSTestEventConstructor::needsDestruction); 334 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventConstructor>) 335 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEventConstructor); 336 else 337 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEventConstructor); 338 spaces.m_subspaceForTestEventConstructor = std::unique_ptr<IsoSubspace>(space); 330 339 IGNORE_WARNINGS_BEGIN("unreachable-code") 331 340 IGNORE_WARNINGS_BEGIN("tautological-compare") 332 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventConstructor::visitOutputConstraints;333 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;334 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)335 clientData.outputConstraintSpaces().append(space);341 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventConstructor::visitOutputConstraints; 342 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 343 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 344 heapData.outputConstraintSpaces().append(space); 336 345 IGNORE_WARNINGS_END 337 346 IGNORE_WARNINGS_END 338 return space; 347 } 348 349 clientSpaces.m_clientSubspaceForTestEventConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 350 return clientSpaces.m_clientSubspaceForTestEventConstructor.get(); 339 351 } 340 352 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 TestEventConstructor& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 71 72 DECLARE_INFO; 72 73 template<typename CellType, JSC::SubspaceAccess> 73 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)74 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 74 75 { 75 76 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestEventTargetPrototype, Base); … … 255 256 } 256 257 257 JSC:: IsoSubspace* JSTestEventTarget::subspaceForImpl(JSC::VM& vm)258 JSC::GCClient::IsoSubspace* JSTestEventTarget::subspaceForImpl(JSC::VM& vm) 258 259 { 259 260 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 260 auto& spaces = clientData.subspaces(); 261 if (auto* space = spaces.m_subspaceForTestEventTarget.get()) 262 return space; 263 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget> || !JSTestEventTarget::needsDestruction); 264 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget>) 265 spaces.m_subspaceForTestEventTarget = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestEventTarget); 266 else 267 spaces.m_subspaceForTestEventTarget = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestEventTarget); 268 auto* space = spaces.m_subspaceForTestEventTarget.get(); 261 auto& clientSpaces = clientData.clientSubspaces(); 262 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestEventTarget.get()) 263 return clientSpace; 264 265 auto& heapData = clientData.heapData(); 266 Locker locker { heapData.lock() }; 267 268 auto& spaces = heapData.subspaces(); 269 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 270 if (!space) { 271 Heap& heap = vm.heap; 272 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget> || !JSTestEventTarget::needsDestruction); 273 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestEventTarget>) 274 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestEventTarget); 275 else 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestEventTarget); 277 spaces.m_subspaceForTestEventTarget = std::unique_ptr<IsoSubspace>(space); 269 278 IGNORE_WARNINGS_BEGIN("unreachable-code") 270 279 IGNORE_WARNINGS_BEGIN("tautological-compare") 271 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventTarget::visitOutputConstraints;272 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;273 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)274 clientData.outputConstraintSpaces().append(space);280 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestEventTarget::visitOutputConstraints; 281 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 282 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 283 heapData.outputConstraintSpaces().append(space); 275 284 IGNORE_WARNINGS_END 276 285 IGNORE_WARNINGS_END 277 return space; 286 } 287 288 clientSpaces.m_clientSubspaceForTestEventTarget = makeUnique<JSC::GCClient::IsoSubspace>(*space); 289 return clientSpaces.m_clientSubspaceForTestEventTarget.get(); 278 290 } 279 291 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h ¶
r285730 r290129 54 54 55 55 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 56 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)56 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 57 57 { 58 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 60 60 return subspaceForImpl(vm); 61 61 } 62 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);62 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 63 63 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 64 64 TestEventTarget& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestExceptionPrototype, Base); … … 180 181 } 181 182 182 JSC:: IsoSubspace* JSTestException::subspaceForImpl(JSC::VM& vm)183 JSC::GCClient::IsoSubspace* JSTestException::subspaceForImpl(JSC::VM& vm) 183 184 { 184 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 185 auto& spaces = clientData.subspaces(); 186 if (auto* space = spaces.m_subspaceForTestException.get()) 187 return space; 188 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestException> || !JSTestException::needsDestruction); 189 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestException>) 190 spaces.m_subspaceForTestException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestException); 191 else 192 spaces.m_subspaceForTestException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestException); 193 auto* space = spaces.m_subspaceForTestException.get(); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestException.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestException> || !JSTestException::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestException>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestException); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestException); 202 spaces.m_subspaceForTestException = std::unique_ptr<IsoSubspace>(space); 194 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 195 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 196 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestException::visitOutputConstraints;197 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;198 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)199 clientData.outputConstraintSpaces().append(space);205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestException::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 200 209 IGNORE_WARNINGS_END 201 210 IGNORE_WARNINGS_END 202 return space; 211 } 212 213 clientSpaces.m_clientSubspaceForTestException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestException.get(); 203 215 } 204 216 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h ¶
r285730 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestGenerateAddOpaqueRootPrototype, Base); … … 180 181 } 181 182 182 JSC:: IsoSubspace* JSTestGenerateAddOpaqueRoot::subspaceForImpl(JSC::VM& vm)183 JSC::GCClient::IsoSubspace* JSTestGenerateAddOpaqueRoot::subspaceForImpl(JSC::VM& vm) 183 184 { 184 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 185 auto& spaces = clientData.subspaces(); 186 if (auto* space = spaces.m_subspaceForTestGenerateAddOpaqueRoot.get()) 187 return space; 188 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot> || !JSTestGenerateAddOpaqueRoot::needsDestruction); 189 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot>) 190 spaces.m_subspaceForTestGenerateAddOpaqueRoot = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestGenerateAddOpaqueRoot); 191 else 192 spaces.m_subspaceForTestGenerateAddOpaqueRoot = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestGenerateAddOpaqueRoot); 193 auto* space = spaces.m_subspaceForTestGenerateAddOpaqueRoot.get(); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot> || !JSTestGenerateAddOpaqueRoot::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateAddOpaqueRoot>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestGenerateAddOpaqueRoot); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestGenerateAddOpaqueRoot); 202 spaces.m_subspaceForTestGenerateAddOpaqueRoot = std::unique_ptr<IsoSubspace>(space); 194 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 195 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 196 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateAddOpaqueRoot::visitOutputConstraints;197 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;198 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)199 clientData.outputConstraintSpaces().append(space);205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateAddOpaqueRoot::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 200 209 IGNORE_WARNINGS_END 201 210 IGNORE_WARNINGS_END 202 return space; 211 } 212 213 clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestGenerateAddOpaqueRoot.get(); 203 215 } 204 216 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateAddOpaqueRoot.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 DECLARE_VISIT_CHILDREN; 60 60 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestGenerateIsReachablePrototype, Base); … … 190 191 } 191 192 192 JSC:: IsoSubspace* JSTestGenerateIsReachable::subspaceForImpl(JSC::VM& vm)193 JSC::GCClient::IsoSubspace* JSTestGenerateIsReachable::subspaceForImpl(JSC::VM& vm) 193 194 { 194 195 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 195 auto& spaces = clientData.subspaces(); 196 if (auto* space = spaces.m_subspaceForTestGenerateIsReachable.get()) 197 return space; 198 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable> || !JSTestGenerateIsReachable::needsDestruction); 199 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable>) 200 spaces.m_subspaceForTestGenerateIsReachable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestGenerateIsReachable); 201 else 202 spaces.m_subspaceForTestGenerateIsReachable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestGenerateIsReachable); 203 auto* space = spaces.m_subspaceForTestGenerateIsReachable.get(); 196 auto& clientSpaces = clientData.clientSubspaces(); 197 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGenerateIsReachable.get()) 198 return clientSpace; 199 200 auto& heapData = clientData.heapData(); 201 Locker locker { heapData.lock() }; 202 203 auto& spaces = heapData.subspaces(); 204 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 205 if (!space) { 206 Heap& heap = vm.heap; 207 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable> || !JSTestGenerateIsReachable::needsDestruction); 208 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestGenerateIsReachable>) 209 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestGenerateIsReachable); 210 else 211 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestGenerateIsReachable); 212 spaces.m_subspaceForTestGenerateIsReachable = std::unique_ptr<IsoSubspace>(space); 204 213 IGNORE_WARNINGS_BEGIN("unreachable-code") 205 214 IGNORE_WARNINGS_BEGIN("tautological-compare") 206 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateIsReachable::visitOutputConstraints;207 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;208 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)209 clientData.outputConstraintSpaces().append(space);215 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGenerateIsReachable::visitOutputConstraints; 216 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 217 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 218 heapData.outputConstraintSpaces().append(space); 210 219 IGNORE_WARNINGS_END 211 220 IGNORE_WARNINGS_END 212 return space; 221 } 222 223 clientSpaces.m_clientSubspaceForTestGenerateIsReachable = makeUnique<JSC::GCClient::IsoSubspace>(*space); 224 return clientSpaces.m_clientSubspaceForTestGenerateIsReachable.get(); 213 225 } 214 226 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp ¶
r289531 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMPromiseProxy.h" … … 1823 1824 #endif 1824 1825 1825 JSC:: IsoSubspace* JSTestGlobalObject::subspaceForImpl(JSC::VM& vm)1826 JSC::GCClient::IsoSubspace* JSTestGlobalObject::subspaceForImpl(JSC::VM& vm) 1826 1827 { 1827 1828 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1828 auto& spaces = clientData.subspaces(); 1829 if (auto* space = spaces.m_subspaceForTestGlobalObject.get()) 1830 return space; 1831 spaces.m_subspaceForTestGlobalObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSTestGlobalObject, JSTestGlobalObject); 1832 auto* space = spaces.m_subspaceForTestGlobalObject.get(); 1829 auto& clientSpaces = clientData.clientSubspaces(); 1830 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestGlobalObject.get()) 1831 return clientSpace; 1832 1833 auto& heapData = clientData.heapData(); 1834 Locker locker { heapData.lock() }; 1835 1836 auto& spaces = heapData.subspaces(); 1837 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 1838 if (!space) { 1839 Heap& heap = vm.heap; 1840 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSTestGlobalObject, JSTestGlobalObject); 1841 spaces.m_subspaceForTestGlobalObject = std::unique_ptr<IsoSubspace>(space); 1833 1842 IGNORE_WARNINGS_BEGIN("unreachable-code") 1834 1843 IGNORE_WARNINGS_BEGIN("tautological-compare") 1835 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGlobalObject::visitOutputConstraints;1836 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;1837 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)1838 clientData.outputConstraintSpaces().append(space);1844 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestGlobalObject::visitOutputConstraints; 1845 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1846 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1847 heapData.outputConstraintSpaces().append(space); 1839 1848 IGNORE_WARNINGS_END 1840 1849 IGNORE_WARNINGS_END 1841 return space; 1850 } 1851 1852 clientSpaces.m_clientSubspaceForTestGlobalObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1853 return clientSpaces.m_clientSubspaceForTestGlobalObject.get(); 1842 1854 } 1843 1855 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h ¶
r286347 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: … … 96 96 DECLARE_INFO; 97 97 template<typename CellType, JSC::SubspaceAccess> 98 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)98 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 99 99 { 100 100 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestGlobalObjectPrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestIndexedSetterNoIdentifierPrototype, Base); … … 269 270 } 270 271 271 JSC:: IsoSubspace* JSTestIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)272 JSC::GCClient::IsoSubspace* JSTestIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 272 273 { 273 274 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 274 auto& spaces = clientData.subspaces(); 275 if (auto* space = spaces.m_subspaceForTestIndexedSetterNoIdentifier.get()) 276 return space; 277 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier> || !JSTestIndexedSetterNoIdentifier::needsDestruction); 278 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier>) 279 spaces.m_subspaceForTestIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestIndexedSetterNoIdentifier); 280 else 281 spaces.m_subspaceForTestIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestIndexedSetterNoIdentifier); 282 auto* space = spaces.m_subspaceForTestIndexedSetterNoIdentifier.get(); 275 auto& clientSpaces = clientData.clientSubspaces(); 276 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier.get()) 277 return clientSpace; 278 279 auto& heapData = clientData.heapData(); 280 Locker locker { heapData.lock() }; 281 282 auto& spaces = heapData.subspaces(); 283 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 284 if (!space) { 285 Heap& heap = vm.heap; 286 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier> || !JSTestIndexedSetterNoIdentifier::needsDestruction); 287 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterNoIdentifier>) 288 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterNoIdentifier); 289 else 290 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterNoIdentifier); 291 spaces.m_subspaceForTestIndexedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 283 292 IGNORE_WARNINGS_BEGIN("unreachable-code") 284 293 IGNORE_WARNINGS_BEGIN("tautological-compare") 285 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterNoIdentifier::visitOutputConstraints;286 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;287 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)288 clientData.outputConstraintSpaces().append(space);294 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterNoIdentifier::visitOutputConstraints; 295 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 296 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 297 heapData.outputConstraintSpaces().append(space); 289 298 IGNORE_WARNINGS_END 290 299 IGNORE_WARNINGS_END 291 return space; 300 } 301 302 clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 303 return clientSpaces.m_clientSubspaceForTestIndexedSetterNoIdentifier.get(); 292 304 } 293 305 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestIndexedSetterThrowingExceptionPrototype, Base); … … 269 270 } 270 271 271 JSC:: IsoSubspace* JSTestIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm)272 JSC::GCClient::IsoSubspace* JSTestIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 272 273 { 273 274 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 274 auto& spaces = clientData.subspaces(); 275 if (auto* space = spaces.m_subspaceForTestIndexedSetterThrowingException.get()) 276 return space; 277 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException> || !JSTestIndexedSetterThrowingException::needsDestruction); 278 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException>) 279 spaces.m_subspaceForTestIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestIndexedSetterThrowingException); 280 else 281 spaces.m_subspaceForTestIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestIndexedSetterThrowingException); 282 auto* space = spaces.m_subspaceForTestIndexedSetterThrowingException.get(); 275 auto& clientSpaces = clientData.clientSubspaces(); 276 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException.get()) 277 return clientSpace; 278 279 auto& heapData = clientData.heapData(); 280 Locker locker { heapData.lock() }; 281 282 auto& spaces = heapData.subspaces(); 283 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 284 if (!space) { 285 Heap& heap = vm.heap; 286 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException> || !JSTestIndexedSetterThrowingException::needsDestruction); 287 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterThrowingException>) 288 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterThrowingException); 289 else 290 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterThrowingException); 291 spaces.m_subspaceForTestIndexedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 283 292 IGNORE_WARNINGS_BEGIN("unreachable-code") 284 293 IGNORE_WARNINGS_BEGIN("tautological-compare") 285 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterThrowingException::visitOutputConstraints;286 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;287 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)288 clientData.outputConstraintSpaces().append(space);294 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterThrowingException::visitOutputConstraints; 295 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 296 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 297 heapData.outputConstraintSpaces().append(space); 289 298 IGNORE_WARNINGS_END 290 299 IGNORE_WARNINGS_END 291 return space; 300 } 301 302 clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 303 return clientSpaces.m_clientSubspaceForTestIndexedSetterThrowingException.get(); 292 304 } 293 305 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 71 72 DECLARE_INFO; 72 73 template<typename CellType, JSC::SubspaceAccess> 73 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)74 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 74 75 { 75 76 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestIndexedSetterWithIdentifierPrototype, Base); … … 301 302 } 302 303 303 JSC:: IsoSubspace* JSTestIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)304 JSC::GCClient::IsoSubspace* JSTestIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 304 305 { 305 306 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 306 auto& spaces = clientData.subspaces(); 307 if (auto* space = spaces.m_subspaceForTestIndexedSetterWithIdentifier.get()) 308 return space; 309 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier> || !JSTestIndexedSetterWithIdentifier::needsDestruction); 310 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier>) 311 spaces.m_subspaceForTestIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestIndexedSetterWithIdentifier); 312 else 313 spaces.m_subspaceForTestIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestIndexedSetterWithIdentifier); 314 auto* space = spaces.m_subspaceForTestIndexedSetterWithIdentifier.get(); 307 auto& clientSpaces = clientData.clientSubspaces(); 308 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier.get()) 309 return clientSpace; 310 311 auto& heapData = clientData.heapData(); 312 Locker locker { heapData.lock() }; 313 314 auto& spaces = heapData.subspaces(); 315 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 316 if (!space) { 317 Heap& heap = vm.heap; 318 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier> || !JSTestIndexedSetterWithIdentifier::needsDestruction); 319 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIndexedSetterWithIdentifier>) 320 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIndexedSetterWithIdentifier); 321 else 322 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIndexedSetterWithIdentifier); 323 spaces.m_subspaceForTestIndexedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 315 324 IGNORE_WARNINGS_BEGIN("unreachable-code") 316 325 IGNORE_WARNINGS_BEGIN("tautological-compare") 317 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterWithIdentifier::visitOutputConstraints;318 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;319 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)320 clientData.outputConstraintSpaces().append(space);326 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIndexedSetterWithIdentifier::visitOutputConstraints; 327 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 328 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 329 heapData.outputConstraintSpaces().append(space); 321 330 IGNORE_WARNINGS_END 322 331 IGNORE_WARNINGS_END 323 return space; 332 } 333 334 clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 335 return clientSpaces.m_clientSubspaceForTestIndexedSetterWithIdentifier.get(); 324 336 } 325 337 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp ¶
r288118 r290129 26 26 27 27 #include "ActiveDOMObject.h" 28 #include "DOMClientIsoSubspaces.h" 28 29 #include "DOMIsoSubspaces.h" 29 30 #include "ElementInlines.h" … … 179 180 DECLARE_INFO; 180 181 template<typename CellType, JSC::SubspaceAccess> 181 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)182 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 182 183 { 183 184 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestInterfacePrototype, Base); … … 1097 1098 DECLARE_INFO; 1098 1099 1099 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)1100 template<typename, SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 1100 1101 { 1101 1102 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 1102 1103 return nullptr; 1103 1104 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1104 auto& spaces = clientData.subspaces(); 1105 if (auto* space = spaces.m_subspaceForTestInterfaceIterator.get()) 1106 return space; 1107 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator> || !TestInterfaceIterator::needsDestruction); 1108 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator>) 1109 spaces.m_subspaceForTestInterfaceIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), TestInterfaceIterator); 1110 else 1111 spaces.m_subspaceForTestInterfaceIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), TestInterfaceIterator); 1112 auto* space = spaces.m_subspaceForTestInterfaceIterator.get(); 1105 auto& clientSpaces = clientData.clientSubspaces(); 1106 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterfaceIterator.get()) 1107 return clientSpace; 1108 1109 auto& heapData = clientData.heapData(); 1110 Locker locker { heapData.lock() }; 1111 1112 auto& spaces = heapData.subspaces(); 1113 IsoSubspace* space = spaces.m_subspaceForTestInterfaceIterator.get(); 1114 if (!space) { 1115 Heap& heap = vm.heap; 1116 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator> || !TestInterfaceIterator::needsDestruction); 1117 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestInterfaceIterator>) 1118 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestInterfaceIterator); 1119 else 1120 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestInterfaceIterator); 1121 spaces.m_subspaceForTestInterfaceIterator = std::unique_ptr<IsoSubspace>(space); 1113 1122 IGNORE_WARNINGS_BEGIN("unreachable-code") 1114 1123 IGNORE_WARNINGS_BEGIN("tautological-compare") 1115 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestInterfaceIterator::visitOutputConstraints;1116 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;1117 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)1118 clientData.outputConstraintSpaces().append(space);1124 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestInterfaceIterator::visitOutputConstraints; 1125 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1126 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1127 heapData.outputConstraintSpaces().append(space); 1119 1128 IGNORE_WARNINGS_END 1120 1129 IGNORE_WARNINGS_END 1121 return space; 1130 } 1131 1132 clientSpaces.m_clientSubspaceForTestInterfaceIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1133 return clientSpaces.m_clientSubspaceForTestInterfaceIterator.get(); 1122 1134 } 1123 1135 … … 1191 1203 } 1192 1204 1193 JSC:: IsoSubspace* JSTestInterface::subspaceForImpl(JSC::VM& vm)1205 JSC::GCClient::IsoSubspace* JSTestInterface::subspaceForImpl(JSC::VM& vm) 1194 1206 { 1195 1207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 1196 auto& spaces = clientData.subspaces(); 1197 if (auto* space = spaces.m_subspaceForTestInterface.get()) 1198 return space; 1199 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface> || !JSTestInterface::needsDestruction); 1200 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface>) 1201 spaces.m_subspaceForTestInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestInterface); 1202 else 1203 spaces.m_subspaceForTestInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestInterface); 1204 auto* space = spaces.m_subspaceForTestInterface.get(); 1208 auto& clientSpaces = clientData.clientSubspaces(); 1209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterface.get()) 1210 return clientSpace; 1211 1212 auto& heapData = clientData.heapData(); 1213 Locker locker { heapData.lock() }; 1214 1215 auto& spaces = heapData.subspaces(); 1216 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 1217 if (!space) { 1218 Heap& heap = vm.heap; 1219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface> || !JSTestInterface::needsDestruction); 1220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterface>) 1221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestInterface); 1222 else 1223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestInterface); 1224 spaces.m_subspaceForTestInterface = std::unique_ptr<IsoSubspace>(space); 1205 1225 IGNORE_WARNINGS_BEGIN("unreachable-code") 1206 1226 IGNORE_WARNINGS_BEGIN("tautological-compare") 1207 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterface::visitOutputConstraints;1208 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;1209 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)1210 clientData.outputConstraintSpaces().append(space);1227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterface::visitOutputConstraints; 1228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 1229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 1230 heapData.outputConstraintSpaces().append(space); 1211 1231 IGNORE_WARNINGS_END 1212 1232 IGNORE_WARNINGS_END 1213 return space; 1233 } 1234 1235 clientSpaces.m_clientSubspaceForTestInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 1236 return clientSpaces.m_clientSubspaceForTestInterface.get(); 1214 1237 } 1215 1238 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h ¶
r285730 r290129 54 54 55 55 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 56 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)56 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 57 57 { 58 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 60 60 return subspaceForImpl(vm); 61 61 } 62 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);62 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 63 63 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 64 64 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestInterfaceLeadingUnderscorePrototype, Base); … … 180 181 } 181 182 182 JSC:: IsoSubspace* JSTestInterfaceLeadingUnderscore::subspaceForImpl(JSC::VM& vm)183 JSC::GCClient::IsoSubspace* JSTestInterfaceLeadingUnderscore::subspaceForImpl(JSC::VM& vm) 183 184 { 184 185 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 185 auto& spaces = clientData.subspaces(); 186 if (auto* space = spaces.m_subspaceForTestInterfaceLeadingUnderscore.get()) 187 return space; 188 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore> || !JSTestInterfaceLeadingUnderscore::needsDestruction); 189 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore>) 190 spaces.m_subspaceForTestInterfaceLeadingUnderscore = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestInterfaceLeadingUnderscore); 191 else 192 spaces.m_subspaceForTestInterfaceLeadingUnderscore = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestInterfaceLeadingUnderscore); 193 auto* space = spaces.m_subspaceForTestInterfaceLeadingUnderscore.get(); 186 auto& clientSpaces = clientData.clientSubspaces(); 187 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore.get()) 188 return clientSpace; 189 190 auto& heapData = clientData.heapData(); 191 Locker locker { heapData.lock() }; 192 193 auto& spaces = heapData.subspaces(); 194 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 195 if (!space) { 196 Heap& heap = vm.heap; 197 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore> || !JSTestInterfaceLeadingUnderscore::needsDestruction); 198 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestInterfaceLeadingUnderscore>) 199 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestInterfaceLeadingUnderscore); 200 else 201 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestInterfaceLeadingUnderscore); 202 spaces.m_subspaceForTestInterfaceLeadingUnderscore = std::unique_ptr<IsoSubspace>(space); 194 203 IGNORE_WARNINGS_BEGIN("unreachable-code") 195 204 IGNORE_WARNINGS_BEGIN("tautological-compare") 196 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterfaceLeadingUnderscore::visitOutputConstraints;197 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;198 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)199 clientData.outputConstraintSpaces().append(space);205 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestInterfaceLeadingUnderscore::visitOutputConstraints; 206 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 207 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 208 heapData.outputConstraintSpaces().append(space); 200 209 IGNORE_WARNINGS_END 201 210 IGNORE_WARNINGS_END 202 return space; 211 } 212 213 clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore = makeUnique<JSC::GCClient::IsoSubspace>(*space); 214 return clientSpaces.m_clientSubspaceForTestInterfaceLeadingUnderscore.get(); 203 215 } 204 216 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestIterablePrototype, Base); … … 192 193 DECLARE_INFO; 193 194 194 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)195 template<typename, SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 195 196 { 196 197 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 197 198 return nullptr; 198 199 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 199 auto& spaces = clientData.subspaces(); 200 if (auto* space = spaces.m_subspaceForTestIterableIterator.get()) 201 return space; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator> || !TestIterableIterator::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator>) 204 spaces.m_subspaceForTestIterableIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), TestIterableIterator); 205 else 206 spaces.m_subspaceForTestIterableIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), TestIterableIterator); 207 auto* space = spaces.m_subspaceForTestIterableIterator.get(); 200 auto& clientSpaces = clientData.clientSubspaces(); 201 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIterableIterator.get()) 202 return clientSpace; 203 204 auto& heapData = clientData.heapData(); 205 Locker locker { heapData.lock() }; 206 207 auto& spaces = heapData.subspaces(); 208 IsoSubspace* space = spaces.m_subspaceForTestIterableIterator.get(); 209 if (!space) { 210 Heap& heap = vm.heap; 211 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator> || !TestIterableIterator::needsDestruction); 212 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestIterableIterator>) 213 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestIterableIterator); 214 else 215 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestIterableIterator); 216 spaces.m_subspaceForTestIterableIterator = std::unique_ptr<IsoSubspace>(space); 208 217 IGNORE_WARNINGS_BEGIN("unreachable-code") 209 218 IGNORE_WARNINGS_BEGIN("tautological-compare") 210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestIterableIterator::visitOutputConstraints;211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)213 clientData.outputConstraintSpaces().append(space);219 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestIterableIterator::visitOutputConstraints; 220 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 221 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 222 heapData.outputConstraintSpaces().append(space); 214 223 IGNORE_WARNINGS_END 215 224 IGNORE_WARNINGS_END 216 return space; 225 } 226 227 clientSpaces.m_clientSubspaceForTestIterableIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 228 return clientSpaces.m_clientSubspaceForTestIterableIterator.get(); 217 229 } 218 230 … … 286 298 } 287 299 288 JSC:: IsoSubspace* JSTestIterable::subspaceForImpl(JSC::VM& vm)300 JSC::GCClient::IsoSubspace* JSTestIterable::subspaceForImpl(JSC::VM& vm) 289 301 { 290 302 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 291 auto& spaces = clientData.subspaces(); 292 if (auto* space = spaces.m_subspaceForTestIterable.get()) 293 return space; 294 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable> || !JSTestIterable::needsDestruction); 295 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable>) 296 spaces.m_subspaceForTestIterable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestIterable); 297 else 298 spaces.m_subspaceForTestIterable = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestIterable); 299 auto* space = spaces.m_subspaceForTestIterable.get(); 303 auto& clientSpaces = clientData.clientSubspaces(); 304 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestIterable.get()) 305 return clientSpace; 306 307 auto& heapData = clientData.heapData(); 308 Locker locker { heapData.lock() }; 309 310 auto& spaces = heapData.subspaces(); 311 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 312 if (!space) { 313 Heap& heap = vm.heap; 314 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable> || !JSTestIterable::needsDestruction); 315 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestIterable>) 316 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestIterable); 317 else 318 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestIterable); 319 spaces.m_subspaceForTestIterable = std::unique_ptr<IsoSubspace>(space); 300 320 IGNORE_WARNINGS_BEGIN("unreachable-code") 301 321 IGNORE_WARNINGS_BEGIN("tautological-compare") 302 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIterable::visitOutputConstraints;303 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;304 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)305 clientData.outputConstraintSpaces().append(space);322 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestIterable::visitOutputConstraints; 323 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 324 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 325 heapData.outputConstraintSpaces().append(space); 306 326 IGNORE_WARNINGS_END 307 327 IGNORE_WARNINGS_END 308 return space; 328 } 329 330 clientSpaces.m_clientSubspaceForTestIterable = makeUnique<JSC::GCClient::IsoSubspace>(*space); 331 return clientSpaces.m_clientSubspaceForTestIterable.get(); 309 332 } 310 333 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp ¶
r286347 r290129 22 22 #include "JSTestJSBuiltinConstructor.h" 23 23 24 #include "DOMClientIsoSubspaces.h" 24 25 #include "DOMIsoSubspaces.h" 25 26 #include "JSDOMAttribute.h" … … 67 68 DECLARE_INFO; 68 69 template<typename CellType, JSC::SubspaceAccess> 69 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)70 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 70 71 { 71 72 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestJSBuiltinConstructorPrototype, Base); … … 223 224 } 224 225 225 JSC:: IsoSubspace* JSTestJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm)226 JSC::GCClient::IsoSubspace* JSTestJSBuiltinConstructor::subspaceForImpl(JSC::VM& vm) 226 227 { 227 228 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 228 auto& spaces = clientData.subspaces(); 229 if (auto* space = spaces.m_subspaceForTestJSBuiltinConstructor.get()) 230 return space; 231 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor> || !JSTestJSBuiltinConstructor::needsDestruction); 232 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor>) 233 spaces.m_subspaceForTestJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestJSBuiltinConstructor); 234 else 235 spaces.m_subspaceForTestJSBuiltinConstructor = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestJSBuiltinConstructor); 236 auto* space = spaces.m_subspaceForTestJSBuiltinConstructor.get(); 229 auto& clientSpaces = clientData.clientSubspaces(); 230 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor.get()) 231 return clientSpace; 232 233 auto& heapData = clientData.heapData(); 234 Locker locker { heapData.lock() }; 235 236 auto& spaces = heapData.subspaces(); 237 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 238 if (!space) { 239 Heap& heap = vm.heap; 240 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor> || !JSTestJSBuiltinConstructor::needsDestruction); 241 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestJSBuiltinConstructor>) 242 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestJSBuiltinConstructor); 243 else 244 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestJSBuiltinConstructor); 245 spaces.m_subspaceForTestJSBuiltinConstructor = std::unique_ptr<IsoSubspace>(space); 237 246 IGNORE_WARNINGS_BEGIN("unreachable-code") 238 247 IGNORE_WARNINGS_BEGIN("tautological-compare") 239 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestJSBuiltinConstructor::visitOutputConstraints;240 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;241 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)242 clientData.outputConstraintSpaces().append(space);248 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestJSBuiltinConstructor::visitOutputConstraints; 249 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 250 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 251 heapData.outputConstraintSpaces().append(space); 243 252 IGNORE_WARNINGS_END 244 253 IGNORE_WARNINGS_END 245 return space; 246 } 247 248 249 } 254 } 255 256 clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor = makeUnique<JSC::GCClient::IsoSubspace>(*space); 257 return clientSpaces.m_clientSubspaceForTestJSBuiltinConstructor.get(); 258 } 259 260 261 } -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h ¶
r285730 r290129 47 47 48 48 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 49 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)49 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 50 50 { 51 51 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 53 53 return subspaceForImpl(vm); 54 54 } 55 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);55 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 56 56 57 57 // Custom attributes -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyFactoryFunction.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "Document.h" … … 65 66 DECLARE_INFO; 66 67 template<typename CellType, JSC::SubspaceAccess> 67 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)68 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 68 69 { 69 70 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestLegacyFactoryFunctionPrototype, Base); … … 225 226 } 226 227 227 JSC:: IsoSubspace* JSTestLegacyFactoryFunction::subspaceForImpl(JSC::VM& vm)228 JSC::GCClient::IsoSubspace* JSTestLegacyFactoryFunction::subspaceForImpl(JSC::VM& vm) 228 229 { 229 230 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 230 auto& spaces = clientData.subspaces(); 231 if (auto* space = spaces.m_subspaceForTestLegacyFactoryFunction.get()) 232 return space; 233 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction> || !JSTestLegacyFactoryFunction::needsDestruction); 234 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction>) 235 spaces.m_subspaceForTestLegacyFactoryFunction = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestLegacyFactoryFunction); 236 else 237 spaces.m_subspaceForTestLegacyFactoryFunction = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestLegacyFactoryFunction); 238 auto* space = spaces.m_subspaceForTestLegacyFactoryFunction.get(); 231 auto& clientSpaces = clientData.clientSubspaces(); 232 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction.get()) 233 return clientSpace; 234 235 auto& heapData = clientData.heapData(); 236 Locker locker { heapData.lock() }; 237 238 auto& spaces = heapData.subspaces(); 239 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 240 if (!space) { 241 Heap& heap = vm.heap; 242 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction> || !JSTestLegacyFactoryFunction::needsDestruction); 243 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyFactoryFunction>) 244 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyFactoryFunction); 245 else 246 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyFactoryFunction); 247 spaces.m_subspaceForTestLegacyFactoryFunction = std::unique_ptr<IsoSubspace>(space); 239 248 IGNORE_WARNINGS_BEGIN("unreachable-code") 240 249 IGNORE_WARNINGS_BEGIN("tautological-compare") 241 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyFactoryFunction::visitOutputConstraints;242 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;243 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)244 clientData.outputConstraintSpaces().append(space);250 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyFactoryFunction::visitOutputConstraints; 251 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 252 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 253 heapData.outputConstraintSpaces().append(space); 245 254 IGNORE_WARNINGS_END 246 255 IGNORE_WARNINGS_END 247 return space; 256 } 257 258 clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction = makeUnique<JSC::GCClient::IsoSubspace>(*space); 259 return clientSpaces.m_clientSubspaceForTestLegacyFactoryFunction.get(); 248 260 } 249 261 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyFactoryFunction.h ¶
r285730 r290129 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 52 static JSC::JSValue getLegacyFactoryFunction(JSC::VM&, JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.cpp ¶
r288118 r290129 26 26 27 27 #include "ActiveDOMObject.h" 28 #include "DOMClientIsoSubspaces.h" 28 29 #include "DOMIsoSubspaces.h" 29 30 #include "IDLTypes.h" … … 83 84 DECLARE_INFO; 84 85 template<typename CellType, JSC::SubspaceAccess> 85 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)86 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 86 87 { 87 88 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestLegacyNoInterfaceObjectPrototype, Base); … … 328 329 } 329 330 330 JSC:: IsoSubspace* JSTestLegacyNoInterfaceObject::subspaceForImpl(JSC::VM& vm)331 JSC::GCClient::IsoSubspace* JSTestLegacyNoInterfaceObject::subspaceForImpl(JSC::VM& vm) 331 332 { 332 333 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 333 auto& spaces = clientData.subspaces(); 334 if (auto* space = spaces.m_subspaceForTestLegacyNoInterfaceObject.get()) 335 return space; 336 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject> || !JSTestLegacyNoInterfaceObject::needsDestruction); 337 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject>) 338 spaces.m_subspaceForTestLegacyNoInterfaceObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestLegacyNoInterfaceObject); 339 else 340 spaces.m_subspaceForTestLegacyNoInterfaceObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestLegacyNoInterfaceObject); 341 auto* space = spaces.m_subspaceForTestLegacyNoInterfaceObject.get(); 334 auto& clientSpaces = clientData.clientSubspaces(); 335 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject.get()) 336 return clientSpace; 337 338 auto& heapData = clientData.heapData(); 339 Locker locker { heapData.lock() }; 340 341 auto& spaces = heapData.subspaces(); 342 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 343 if (!space) { 344 Heap& heap = vm.heap; 345 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject> || !JSTestLegacyNoInterfaceObject::needsDestruction); 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyNoInterfaceObject>) 347 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyNoInterfaceObject); 348 else 349 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyNoInterfaceObject); 350 spaces.m_subspaceForTestLegacyNoInterfaceObject = std::unique_ptr<IsoSubspace>(space); 342 351 IGNORE_WARNINGS_BEGIN("unreachable-code") 343 352 IGNORE_WARNINGS_BEGIN("tautological-compare") 344 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyNoInterfaceObject::visitOutputConstraints;345 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;346 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)347 clientData.outputConstraintSpaces().append(space);353 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyNoInterfaceObject::visitOutputConstraints; 354 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 355 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 356 heapData.outputConstraintSpaces().append(space); 348 357 IGNORE_WARNINGS_END 349 358 IGNORE_WARNINGS_END 350 return space; 359 } 360 361 clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 362 return clientSpaces.m_clientSubspaceForTestLegacyNoInterfaceObject.get(); 351 363 } 352 364 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyNoInterfaceObject.h ¶
r285730 r290129 51 51 } 52 52 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 71 72 DECLARE_INFO; 72 73 template<typename CellType, JSC::SubspaceAccess> 73 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)74 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 74 75 { 75 76 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestLegacyOverrideBuiltInsPrototype, Base); … … 242 243 } 243 244 244 JSC:: IsoSubspace* JSTestLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm)245 JSC::GCClient::IsoSubspace* JSTestLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 245 246 { 246 247 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 247 auto& spaces = clientData.subspaces(); 248 if (auto* space = spaces.m_subspaceForTestLegacyOverrideBuiltIns.get()) 249 return space; 250 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns> || !JSTestLegacyOverrideBuiltIns::needsDestruction); 251 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns>) 252 spaces.m_subspaceForTestLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestLegacyOverrideBuiltIns); 253 else 254 spaces.m_subspaceForTestLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestLegacyOverrideBuiltIns); 255 auto* space = spaces.m_subspaceForTestLegacyOverrideBuiltIns.get(); 248 auto& clientSpaces = clientData.clientSubspaces(); 249 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns.get()) 250 return clientSpace; 251 252 auto& heapData = clientData.heapData(); 253 Locker locker { heapData.lock() }; 254 255 auto& spaces = heapData.subspaces(); 256 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 257 if (!space) { 258 Heap& heap = vm.heap; 259 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns> || !JSTestLegacyOverrideBuiltIns::needsDestruction); 260 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestLegacyOverrideBuiltIns>) 261 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestLegacyOverrideBuiltIns); 262 else 263 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestLegacyOverrideBuiltIns); 264 spaces.m_subspaceForTestLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 256 265 IGNORE_WARNINGS_BEGIN("unreachable-code") 257 266 IGNORE_WARNINGS_BEGIN("tautological-compare") 258 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyOverrideBuiltIns::visitOutputConstraints;259 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;260 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)261 clientData.outputConstraintSpaces().append(space);267 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestLegacyOverrideBuiltIns::visitOutputConstraints; 268 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 269 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 270 heapData.outputConstraintSpaces().append(space); 262 271 IGNORE_WARNINGS_END 263 272 IGNORE_WARNINGS_END 264 return space; 273 } 274 275 clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 276 return clientSpaces.m_clientSubspaceForTestLegacyOverrideBuiltIns.get(); 265 277 } 266 278 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestLegacyOverrideBuiltIns.h ¶
r285730 r290129 53 53 54 54 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 55 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)55 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 56 56 { 57 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 59 59 return subspaceForImpl(vm); 60 60 } 61 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);61 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 62 62 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 63 63 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLike.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 80 81 DECLARE_INFO; 81 82 template<typename CellType, JSC::SubspaceAccess> 82 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)83 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 83 84 { 84 85 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestMapLikePrototype, Base); … … 359 360 } 360 361 361 JSC:: IsoSubspace* JSTestMapLike::subspaceForImpl(JSC::VM& vm)362 JSC::GCClient::IsoSubspace* JSTestMapLike::subspaceForImpl(JSC::VM& vm) 362 363 { 363 364 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 364 auto& spaces = clientData.subspaces(); 365 if (auto* space = spaces.m_subspaceForTestMapLike.get()) 366 return space; 367 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike> || !JSTestMapLike::needsDestruction); 368 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike>) 369 spaces.m_subspaceForTestMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestMapLike); 370 else 371 spaces.m_subspaceForTestMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestMapLike); 372 auto* space = spaces.m_subspaceForTestMapLike.get(); 365 auto& clientSpaces = clientData.clientSubspaces(); 366 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestMapLike.get()) 367 return clientSpace; 368 369 auto& heapData = clientData.heapData(); 370 Locker locker { heapData.lock() }; 371 372 auto& spaces = heapData.subspaces(); 373 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 374 if (!space) { 375 Heap& heap = vm.heap; 376 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike> || !JSTestMapLike::needsDestruction); 377 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLike>) 378 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestMapLike); 379 else 380 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestMapLike); 381 spaces.m_subspaceForTestMapLike = std::unique_ptr<IsoSubspace>(space); 373 382 IGNORE_WARNINGS_BEGIN("unreachable-code") 374 383 IGNORE_WARNINGS_BEGIN("tautological-compare") 375 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLike::visitOutputConstraints;376 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;377 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)378 clientData.outputConstraintSpaces().append(space);384 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLike::visitOutputConstraints; 385 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 386 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 387 heapData.outputConstraintSpaces().append(space); 379 388 IGNORE_WARNINGS_END 380 389 IGNORE_WARNINGS_END 381 return space; 390 } 391 392 clientSpaces.m_clientSubspaceForTestMapLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 393 return clientSpaces.m_clientSubspaceForTestMapLike.get(); 382 394 } 383 395 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLike.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 84 85 DECLARE_INFO; 85 86 template<typename CellType, JSC::SubspaceAccess> 86 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)87 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 87 88 { 88 89 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestMapLikeWithOverriddenOperationsPrototype, Base); … … 373 374 } 374 375 375 JSC:: IsoSubspace* JSTestMapLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm)376 JSC::GCClient::IsoSubspace* JSTestMapLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm) 376 377 { 377 378 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 378 auto& spaces = clientData.subspaces(); 379 if (auto* space = spaces.m_subspaceForTestMapLikeWithOverriddenOperations.get()) 380 return space; 381 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations> || !JSTestMapLikeWithOverriddenOperations::needsDestruction); 382 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations>) 383 spaces.m_subspaceForTestMapLikeWithOverriddenOperations = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestMapLikeWithOverriddenOperations); 384 else 385 spaces.m_subspaceForTestMapLikeWithOverriddenOperations = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestMapLikeWithOverriddenOperations); 386 auto* space = spaces.m_subspaceForTestMapLikeWithOverriddenOperations.get(); 379 auto& clientSpaces = clientData.clientSubspaces(); 380 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations.get()) 381 return clientSpace; 382 383 auto& heapData = clientData.heapData(); 384 Locker locker { heapData.lock() }; 385 386 auto& spaces = heapData.subspaces(); 387 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 388 if (!space) { 389 Heap& heap = vm.heap; 390 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations> || !JSTestMapLikeWithOverriddenOperations::needsDestruction); 391 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestMapLikeWithOverriddenOperations>) 392 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestMapLikeWithOverriddenOperations); 393 else 394 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestMapLikeWithOverriddenOperations); 395 spaces.m_subspaceForTestMapLikeWithOverriddenOperations = std::unique_ptr<IsoSubspace>(space); 387 396 IGNORE_WARNINGS_BEGIN("unreachable-code") 388 397 IGNORE_WARNINGS_BEGIN("tautological-compare") 389 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLikeWithOverriddenOperations::visitOutputConstraints;390 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;391 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)392 clientData.outputConstraintSpaces().append(space);398 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestMapLikeWithOverriddenOperations::visitOutputConstraints; 399 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 400 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 401 heapData.outputConstraintSpaces().append(space); 393 402 IGNORE_WARNINGS_END 394 403 IGNORE_WARNINGS_END 395 return space; 404 } 405 406 clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations = makeUnique<JSC::GCClient::IsoSubspace>(*space); 407 return clientSpaces.m_clientSubspaceForTestMapLikeWithOverriddenOperations.get(); 396 408 } 397 409 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMapLikeWithOverriddenOperations.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedAndIndexedSetterNoIdentifierPrototype, Base); … … 337 338 } 338 339 339 JSC:: IsoSubspace* JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)340 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 340 341 { 341 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 342 auto& spaces = clientData.subspaces(); 343 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get()) 344 return space; 345 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier> || !JSTestNamedAndIndexedSetterNoIdentifier::needsDestruction); 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier>) 347 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedAndIndexedSetterNoIdentifier); 348 else 349 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedAndIndexedSetterNoIdentifier); 350 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier.get(); 343 auto& clientSpaces = clientData.clientSubspaces(); 344 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier.get()) 345 return clientSpace; 346 347 auto& heapData = clientData.heapData(); 348 Locker locker { heapData.lock() }; 349 350 auto& spaces = heapData.subspaces(); 351 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 352 if (!space) { 353 Heap& heap = vm.heap; 354 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier> || !JSTestNamedAndIndexedSetterNoIdentifier::needsDestruction); 355 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterNoIdentifier>) 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterNoIdentifier); 357 else 358 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterNoIdentifier); 359 spaces.m_subspaceForTestNamedAndIndexedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 351 360 IGNORE_WARNINGS_BEGIN("unreachable-code") 352 361 IGNORE_WARNINGS_BEGIN("tautological-compare") 353 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterNoIdentifier::visitOutputConstraints;354 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;355 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)356 clientData.outputConstraintSpaces().append(space);362 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterNoIdentifier::visitOutputConstraints; 363 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 364 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 365 heapData.outputConstraintSpaces().append(space); 357 366 IGNORE_WARNINGS_END 358 367 IGNORE_WARNINGS_END 359 return space; 368 } 369 370 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 371 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterNoIdentifier.get(); 360 372 } 361 373 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedAndIndexedSetterThrowingExceptionPrototype, Base); … … 337 338 } 338 339 339 JSC:: IsoSubspace* JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm)340 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 340 341 { 341 342 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 342 auto& spaces = clientData.subspaces(); 343 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get()) 344 return space; 345 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException> || !JSTestNamedAndIndexedSetterThrowingException::needsDestruction); 346 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException>) 347 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedAndIndexedSetterThrowingException); 348 else 349 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedAndIndexedSetterThrowingException); 350 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException.get(); 343 auto& clientSpaces = clientData.clientSubspaces(); 344 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException.get()) 345 return clientSpace; 346 347 auto& heapData = clientData.heapData(); 348 Locker locker { heapData.lock() }; 349 350 auto& spaces = heapData.subspaces(); 351 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 352 if (!space) { 353 Heap& heap = vm.heap; 354 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException> || !JSTestNamedAndIndexedSetterThrowingException::needsDestruction); 355 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterThrowingException>) 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterThrowingException); 357 else 358 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterThrowingException); 359 spaces.m_subspaceForTestNamedAndIndexedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 351 360 IGNORE_WARNINGS_BEGIN("unreachable-code") 352 361 IGNORE_WARNINGS_BEGIN("tautological-compare") 353 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterThrowingException::visitOutputConstraints;354 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;355 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)356 clientData.outputConstraintSpaces().append(space);362 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterThrowingException::visitOutputConstraints; 363 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 364 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 365 heapData.outputConstraintSpaces().append(space); 357 366 IGNORE_WARNINGS_END 358 367 IGNORE_WARNINGS_END 359 return space; 368 } 369 370 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 371 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterThrowingException.get(); 360 372 } 361 373 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedAndIndexedSetterWithIdentifierPrototype, Base); … … 394 395 } 395 396 396 JSC:: IsoSubspace* JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)397 JSC::GCClient::IsoSubspace* JSTestNamedAndIndexedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 397 398 { 398 399 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 399 auto& spaces = clientData.subspaces(); 400 if (auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get()) 401 return space; 402 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier> || !JSTestNamedAndIndexedSetterWithIdentifier::needsDestruction); 403 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier>) 404 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedAndIndexedSetterWithIdentifier); 405 else 406 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedAndIndexedSetterWithIdentifier); 407 auto* space = spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier.get(); 400 auto& clientSpaces = clientData.clientSubspaces(); 401 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier.get()) 402 return clientSpace; 403 404 auto& heapData = clientData.heapData(); 405 Locker locker { heapData.lock() }; 406 407 auto& spaces = heapData.subspaces(); 408 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 409 if (!space) { 410 Heap& heap = vm.heap; 411 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier> || !JSTestNamedAndIndexedSetterWithIdentifier::needsDestruction); 412 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedAndIndexedSetterWithIdentifier>) 413 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedAndIndexedSetterWithIdentifier); 414 else 415 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedAndIndexedSetterWithIdentifier); 416 spaces.m_subspaceForTestNamedAndIndexedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 408 417 IGNORE_WARNINGS_BEGIN("unreachable-code") 409 418 IGNORE_WARNINGS_BEGIN("tautological-compare") 410 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterWithIdentifier::visitOutputConstraints;411 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;412 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)413 clientData.outputConstraintSpaces().append(space);419 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedAndIndexedSetterWithIdentifier::visitOutputConstraints; 420 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 421 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 422 heapData.outputConstraintSpaces().append(space); 414 423 IGNORE_WARNINGS_END 415 424 IGNORE_WARNINGS_END 416 return space; 425 } 426 427 clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 428 return clientSpaces.m_clientSubspaceForTestNamedAndIndexedSetterWithIdentifier.get(); 417 429 } 418 430 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedDeleterNoIdentifierPrototype, Base); … … 239 240 } 240 241 241 JSC:: IsoSubspace* JSTestNamedDeleterNoIdentifier::subspaceForImpl(JSC::VM& vm)242 JSC::GCClient::IsoSubspace* JSTestNamedDeleterNoIdentifier::subspaceForImpl(JSC::VM& vm) 242 243 { 243 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 244 auto& spaces = clientData.subspaces(); 245 if (auto* space = spaces.m_subspaceForTestNamedDeleterNoIdentifier.get()) 246 return space; 247 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier> || !JSTestNamedDeleterNoIdentifier::needsDestruction); 248 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier>) 249 spaces.m_subspaceForTestNamedDeleterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedDeleterNoIdentifier); 250 else 251 spaces.m_subspaceForTestNamedDeleterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedDeleterNoIdentifier); 252 auto* space = spaces.m_subspaceForTestNamedDeleterNoIdentifier.get(); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier> || !JSTestNamedDeleterNoIdentifier::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterNoIdentifier>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterNoIdentifier); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterNoIdentifier); 261 spaces.m_subspaceForTestNamedDeleterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 253 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 254 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 255 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterNoIdentifier::visitOutputConstraints;256 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;257 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)258 clientData.outputConstraintSpaces().append(space);264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterNoIdentifier::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 259 268 IGNORE_WARNINGS_END 260 269 IGNORE_WARNINGS_END 261 return space; 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedDeleterNoIdentifier.get(); 262 274 } 263 275 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h ¶
r285730 r290129 55 55 56 56 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 57 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)57 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 58 58 { 59 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 61 61 return subspaceForImpl(vm); 62 62 } 63 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);63 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 64 64 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 65 65 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedDeleterThrowingExceptionPrototype, Base); … … 239 240 } 240 241 241 JSC:: IsoSubspace* JSTestNamedDeleterThrowingException::subspaceForImpl(JSC::VM& vm)242 JSC::GCClient::IsoSubspace* JSTestNamedDeleterThrowingException::subspaceForImpl(JSC::VM& vm) 242 243 { 243 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 244 auto& spaces = clientData.subspaces(); 245 if (auto* space = spaces.m_subspaceForTestNamedDeleterThrowingException.get()) 246 return space; 247 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException> || !JSTestNamedDeleterThrowingException::needsDestruction); 248 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException>) 249 spaces.m_subspaceForTestNamedDeleterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedDeleterThrowingException); 250 else 251 spaces.m_subspaceForTestNamedDeleterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedDeleterThrowingException); 252 auto* space = spaces.m_subspaceForTestNamedDeleterThrowingException.get(); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException> || !JSTestNamedDeleterThrowingException::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterThrowingException>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterThrowingException); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterThrowingException); 261 spaces.m_subspaceForTestNamedDeleterThrowingException = std::unique_ptr<IsoSubspace>(space); 253 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 254 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 255 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterThrowingException::visitOutputConstraints;256 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;257 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)258 clientData.outputConstraintSpaces().append(space);264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterThrowingException::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 259 268 IGNORE_WARNINGS_END 260 269 IGNORE_WARNINGS_END 261 return space; 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedDeleterThrowingException.get(); 262 274 } 263 275 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h ¶
r285730 r290129 55 55 56 56 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 57 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)57 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 58 58 { 59 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 61 61 return subspaceForImpl(vm); 62 62 } 63 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);63 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 64 64 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 65 65 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 70 71 DECLARE_INFO; 71 72 template<typename CellType, JSC::SubspaceAccess> 72 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)73 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 73 74 { 74 75 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedDeleterWithIdentifierPrototype, Base); … … 263 264 } 264 265 265 JSC:: IsoSubspace* JSTestNamedDeleterWithIdentifier::subspaceForImpl(JSC::VM& vm)266 JSC::GCClient::IsoSubspace* JSTestNamedDeleterWithIdentifier::subspaceForImpl(JSC::VM& vm) 266 267 { 267 268 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 268 auto& spaces = clientData.subspaces(); 269 if (auto* space = spaces.m_subspaceForTestNamedDeleterWithIdentifier.get()) 270 return space; 271 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier> || !JSTestNamedDeleterWithIdentifier::needsDestruction); 272 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier>) 273 spaces.m_subspaceForTestNamedDeleterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedDeleterWithIdentifier); 274 else 275 spaces.m_subspaceForTestNamedDeleterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedDeleterWithIdentifier); 276 auto* space = spaces.m_subspaceForTestNamedDeleterWithIdentifier.get(); 269 auto& clientSpaces = clientData.clientSubspaces(); 270 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier.get()) 271 return clientSpace; 272 273 auto& heapData = clientData.heapData(); 274 Locker locker { heapData.lock() }; 275 276 auto& spaces = heapData.subspaces(); 277 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 278 if (!space) { 279 Heap& heap = vm.heap; 280 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier> || !JSTestNamedDeleterWithIdentifier::needsDestruction); 281 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIdentifier>) 282 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterWithIdentifier); 283 else 284 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterWithIdentifier); 285 spaces.m_subspaceForTestNamedDeleterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 277 286 IGNORE_WARNINGS_BEGIN("unreachable-code") 278 287 IGNORE_WARNINGS_BEGIN("tautological-compare") 279 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIdentifier::visitOutputConstraints;280 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;281 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)282 clientData.outputConstraintSpaces().append(space);288 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIdentifier::visitOutputConstraints; 289 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 290 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 291 heapData.outputConstraintSpaces().append(space); 283 292 IGNORE_WARNINGS_END 284 293 IGNORE_WARNINGS_END 285 return space; 294 } 295 296 clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 297 return clientSpaces.m_clientSubspaceForTestNamedDeleterWithIdentifier.get(); 286 298 } 287 299 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h ¶
r285730 r290129 55 55 56 56 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 57 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)57 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 58 58 { 59 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 61 61 return subspaceForImpl(vm); 62 62 } 63 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);63 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 64 64 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 65 65 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 64 65 DECLARE_INFO; 65 66 template<typename CellType, JSC::SubspaceAccess> 66 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)67 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 67 68 { 68 69 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedDeleterWithIndexedGetterPrototype, Base); … … 255 256 } 256 257 257 JSC:: IsoSubspace* JSTestNamedDeleterWithIndexedGetter::subspaceForImpl(JSC::VM& vm)258 JSC::GCClient::IsoSubspace* JSTestNamedDeleterWithIndexedGetter::subspaceForImpl(JSC::VM& vm) 258 259 { 259 260 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 260 auto& spaces = clientData.subspaces(); 261 if (auto* space = spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get()) 262 return space; 263 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter> || !JSTestNamedDeleterWithIndexedGetter::needsDestruction); 264 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter>) 265 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedDeleterWithIndexedGetter); 266 else 267 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedDeleterWithIndexedGetter); 268 auto* space = spaces.m_subspaceForTestNamedDeleterWithIndexedGetter.get(); 261 auto& clientSpaces = clientData.clientSubspaces(); 262 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter.get()) 263 return clientSpace; 264 265 auto& heapData = clientData.heapData(); 266 Locker locker { heapData.lock() }; 267 268 auto& spaces = heapData.subspaces(); 269 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 270 if (!space) { 271 Heap& heap = vm.heap; 272 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter> || !JSTestNamedDeleterWithIndexedGetter::needsDestruction); 273 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedDeleterWithIndexedGetter>) 274 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedDeleterWithIndexedGetter); 275 else 276 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedDeleterWithIndexedGetter); 277 spaces.m_subspaceForTestNamedDeleterWithIndexedGetter = std::unique_ptr<IsoSubspace>(space); 269 278 IGNORE_WARNINGS_BEGIN("unreachable-code") 270 279 IGNORE_WARNINGS_BEGIN("tautological-compare") 271 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIndexedGetter::visitOutputConstraints;272 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;273 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)274 clientData.outputConstraintSpaces().append(space);280 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedDeleterWithIndexedGetter::visitOutputConstraints; 281 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 282 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 283 heapData.outputConstraintSpaces().append(space); 275 284 IGNORE_WARNINGS_END 276 285 IGNORE_WARNINGS_END 277 return space; 286 } 287 288 clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 289 return clientSpaces.m_clientSubspaceForTestNamedDeleterWithIndexedGetter.get(); 278 290 } 279 291 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h ¶
r285730 r290129 55 55 56 56 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 57 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)57 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 58 58 { 59 59 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 61 61 return subspaceForImpl(vm); 62 62 } 63 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);63 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 64 64 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 65 65 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedGetterCallWithPrototype, Base); … … 213 214 } 214 215 215 JSC:: IsoSubspace* JSTestNamedGetterCallWith::subspaceForImpl(JSC::VM& vm)216 JSC::GCClient::IsoSubspace* JSTestNamedGetterCallWith::subspaceForImpl(JSC::VM& vm) 216 217 { 217 218 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 218 auto& spaces = clientData.subspaces(); 219 if (auto* space = spaces.m_subspaceForTestNamedGetterCallWith.get()) 220 return space; 221 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith> || !JSTestNamedGetterCallWith::needsDestruction); 222 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith>) 223 spaces.m_subspaceForTestNamedGetterCallWith = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedGetterCallWith); 224 else 225 spaces.m_subspaceForTestNamedGetterCallWith = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedGetterCallWith); 226 auto* space = spaces.m_subspaceForTestNamedGetterCallWith.get(); 219 auto& clientSpaces = clientData.clientSubspaces(); 220 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterCallWith.get()) 221 return clientSpace; 222 223 auto& heapData = clientData.heapData(); 224 Locker locker { heapData.lock() }; 225 226 auto& spaces = heapData.subspaces(); 227 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 228 if (!space) { 229 Heap& heap = vm.heap; 230 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith> || !JSTestNamedGetterCallWith::needsDestruction); 231 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterCallWith>) 232 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterCallWith); 233 else 234 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterCallWith); 235 spaces.m_subspaceForTestNamedGetterCallWith = std::unique_ptr<IsoSubspace>(space); 227 236 IGNORE_WARNINGS_BEGIN("unreachable-code") 228 237 IGNORE_WARNINGS_BEGIN("tautological-compare") 229 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterCallWith::visitOutputConstraints;230 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;231 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)232 clientData.outputConstraintSpaces().append(space);238 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterCallWith::visitOutputConstraints; 239 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 240 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 241 heapData.outputConstraintSpaces().append(space); 233 242 IGNORE_WARNINGS_END 234 243 IGNORE_WARNINGS_END 235 return space; 244 } 245 246 clientSpaces.m_clientSubspaceForTestNamedGetterCallWith = makeUnique<JSC::GCClient::IsoSubspace>(*space); 247 return clientSpaces.m_clientSubspaceForTestNamedGetterCallWith.get(); 236 248 } 237 249 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.h ¶
r285730 r290129 53 53 54 54 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 55 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)55 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 56 56 { 57 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 59 59 return subspaceForImpl(vm); 60 60 } 61 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);61 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 62 62 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 63 63 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedGetterNoIdentifierPrototype, Base); … … 213 214 } 214 215 215 JSC:: IsoSubspace* JSTestNamedGetterNoIdentifier::subspaceForImpl(JSC::VM& vm)216 JSC::GCClient::IsoSubspace* JSTestNamedGetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 216 217 { 217 218 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 218 auto& spaces = clientData.subspaces(); 219 if (auto* space = spaces.m_subspaceForTestNamedGetterNoIdentifier.get()) 220 return space; 221 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier> || !JSTestNamedGetterNoIdentifier::needsDestruction); 222 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier>) 223 spaces.m_subspaceForTestNamedGetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedGetterNoIdentifier); 224 else 225 spaces.m_subspaceForTestNamedGetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedGetterNoIdentifier); 226 auto* space = spaces.m_subspaceForTestNamedGetterNoIdentifier.get(); 219 auto& clientSpaces = clientData.clientSubspaces(); 220 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier.get()) 221 return clientSpace; 222 223 auto& heapData = clientData.heapData(); 224 Locker locker { heapData.lock() }; 225 226 auto& spaces = heapData.subspaces(); 227 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 228 if (!space) { 229 Heap& heap = vm.heap; 230 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier> || !JSTestNamedGetterNoIdentifier::needsDestruction); 231 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterNoIdentifier>) 232 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterNoIdentifier); 233 else 234 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterNoIdentifier); 235 spaces.m_subspaceForTestNamedGetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 227 236 IGNORE_WARNINGS_BEGIN("unreachable-code") 228 237 IGNORE_WARNINGS_BEGIN("tautological-compare") 229 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterNoIdentifier::visitOutputConstraints;230 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;231 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)232 clientData.outputConstraintSpaces().append(space);238 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterNoIdentifier::visitOutputConstraints; 239 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 240 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 241 heapData.outputConstraintSpaces().append(space); 233 242 IGNORE_WARNINGS_END 234 243 IGNORE_WARNINGS_END 235 return space; 244 } 245 246 clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 247 return clientSpaces.m_clientSubspaceForTestNamedGetterNoIdentifier.get(); 236 248 } 237 249 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h ¶
r285730 r290129 53 53 54 54 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 55 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)55 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 56 56 { 57 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 59 59 return subspaceForImpl(vm); 60 60 } 61 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);61 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 62 62 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 63 63 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 68 69 DECLARE_INFO; 69 70 template<typename CellType, JSC::SubspaceAccess> 70 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)71 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 71 72 { 72 73 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedGetterWithIdentifierPrototype, Base); … … 239 240 } 240 241 241 JSC:: IsoSubspace* JSTestNamedGetterWithIdentifier::subspaceForImpl(JSC::VM& vm)242 JSC::GCClient::IsoSubspace* JSTestNamedGetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 242 243 { 243 244 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 244 auto& spaces = clientData.subspaces(); 245 if (auto* space = spaces.m_subspaceForTestNamedGetterWithIdentifier.get()) 246 return space; 247 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier> || !JSTestNamedGetterWithIdentifier::needsDestruction); 248 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier>) 249 spaces.m_subspaceForTestNamedGetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedGetterWithIdentifier); 250 else 251 spaces.m_subspaceForTestNamedGetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedGetterWithIdentifier); 252 auto* space = spaces.m_subspaceForTestNamedGetterWithIdentifier.get(); 245 auto& clientSpaces = clientData.clientSubspaces(); 246 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier.get()) 247 return clientSpace; 248 249 auto& heapData = clientData.heapData(); 250 Locker locker { heapData.lock() }; 251 252 auto& spaces = heapData.subspaces(); 253 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 254 if (!space) { 255 Heap& heap = vm.heap; 256 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier> || !JSTestNamedGetterWithIdentifier::needsDestruction); 257 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedGetterWithIdentifier>) 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedGetterWithIdentifier); 259 else 260 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedGetterWithIdentifier); 261 spaces.m_subspaceForTestNamedGetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 253 262 IGNORE_WARNINGS_BEGIN("unreachable-code") 254 263 IGNORE_WARNINGS_BEGIN("tautological-compare") 255 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterWithIdentifier::visitOutputConstraints;256 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;257 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)258 clientData.outputConstraintSpaces().append(space);264 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedGetterWithIdentifier::visitOutputConstraints; 265 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 266 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 267 heapData.outputConstraintSpaces().append(space); 259 268 IGNORE_WARNINGS_END 260 269 IGNORE_WARNINGS_END 261 return space; 270 } 271 272 clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 273 return clientSpaces.m_clientSubspaceForTestNamedGetterWithIdentifier.get(); 262 274 } 263 275 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h ¶
r285730 r290129 53 53 54 54 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 55 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)55 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 56 56 { 57 57 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 59 59 return subspaceForImpl(vm); 60 60 } 61 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);61 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 62 62 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 63 63 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterNoIdentifierPrototype, Base); … … 293 294 } 294 295 295 JSC:: IsoSubspace* JSTestNamedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm)296 JSC::GCClient::IsoSubspace* JSTestNamedSetterNoIdentifier::subspaceForImpl(JSC::VM& vm) 296 297 { 297 298 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 298 auto& spaces = clientData.subspaces(); 299 if (auto* space = spaces.m_subspaceForTestNamedSetterNoIdentifier.get()) 300 return space; 301 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier> || !JSTestNamedSetterNoIdentifier::needsDestruction); 302 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier>) 303 spaces.m_subspaceForTestNamedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterNoIdentifier); 304 else 305 spaces.m_subspaceForTestNamedSetterNoIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterNoIdentifier); 306 auto* space = spaces.m_subspaceForTestNamedSetterNoIdentifier.get(); 299 auto& clientSpaces = clientData.clientSubspaces(); 300 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier.get()) 301 return clientSpace; 302 303 auto& heapData = clientData.heapData(); 304 Locker locker { heapData.lock() }; 305 306 auto& spaces = heapData.subspaces(); 307 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 308 if (!space) { 309 Heap& heap = vm.heap; 310 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier> || !JSTestNamedSetterNoIdentifier::needsDestruction); 311 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterNoIdentifier>) 312 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterNoIdentifier); 313 else 314 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterNoIdentifier); 315 spaces.m_subspaceForTestNamedSetterNoIdentifier = std::unique_ptr<IsoSubspace>(space); 307 316 IGNORE_WARNINGS_BEGIN("unreachable-code") 308 317 IGNORE_WARNINGS_BEGIN("tautological-compare") 309 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterNoIdentifier::visitOutputConstraints;310 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;311 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)312 clientData.outputConstraintSpaces().append(space);318 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterNoIdentifier::visitOutputConstraints; 319 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 320 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 321 heapData.outputConstraintSpaces().append(space); 313 322 IGNORE_WARNINGS_END 314 323 IGNORE_WARNINGS_END 315 return space; 324 } 325 326 clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 327 return clientSpaces.m_clientSubspaceForTestNamedSetterNoIdentifier.get(); 316 328 } 317 329 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterThrowingExceptionPrototype, Base); … … 293 294 } 294 295 295 JSC:: IsoSubspace* JSTestNamedSetterThrowingException::subspaceForImpl(JSC::VM& vm)296 JSC::GCClient::IsoSubspace* JSTestNamedSetterThrowingException::subspaceForImpl(JSC::VM& vm) 296 297 { 297 298 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 298 auto& spaces = clientData.subspaces(); 299 if (auto* space = spaces.m_subspaceForTestNamedSetterThrowingException.get()) 300 return space; 301 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException> || !JSTestNamedSetterThrowingException::needsDestruction); 302 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException>) 303 spaces.m_subspaceForTestNamedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterThrowingException); 304 else 305 spaces.m_subspaceForTestNamedSetterThrowingException = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterThrowingException); 306 auto* space = spaces.m_subspaceForTestNamedSetterThrowingException.get(); 299 auto& clientSpaces = clientData.clientSubspaces(); 300 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException.get()) 301 return clientSpace; 302 303 auto& heapData = clientData.heapData(); 304 Locker locker { heapData.lock() }; 305 306 auto& spaces = heapData.subspaces(); 307 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 308 if (!space) { 309 Heap& heap = vm.heap; 310 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException> || !JSTestNamedSetterThrowingException::needsDestruction); 311 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterThrowingException>) 312 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterThrowingException); 313 else 314 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterThrowingException); 315 spaces.m_subspaceForTestNamedSetterThrowingException = std::unique_ptr<IsoSubspace>(space); 307 316 IGNORE_WARNINGS_BEGIN("unreachable-code") 308 317 IGNORE_WARNINGS_BEGIN("tautological-compare") 309 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterThrowingException::visitOutputConstraints;310 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;311 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)312 clientData.outputConstraintSpaces().append(space);318 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterThrowingException::visitOutputConstraints; 319 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 320 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 321 heapData.outputConstraintSpaces().append(space); 313 322 IGNORE_WARNINGS_END 314 323 IGNORE_WARNINGS_END 315 return space; 324 } 325 326 clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException = makeUnique<JSC::GCClient::IsoSubspace>(*space); 327 return clientSpaces.m_clientSubspaceForTestNamedSetterThrowingException.get(); 316 328 } 317 329 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 70 71 DECLARE_INFO; 71 72 template<typename CellType, JSC::SubspaceAccess> 72 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)73 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 73 74 { 74 75 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithIdentifierPrototype, Base); … … 324 325 } 325 326 326 JSC:: IsoSubspace* JSTestNamedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm)327 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIdentifier::subspaceForImpl(JSC::VM& vm) 327 328 { 328 329 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 329 auto& spaces = clientData.subspaces(); 330 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIdentifier.get()) 331 return space; 332 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier> || !JSTestNamedSetterWithIdentifier::needsDestruction); 333 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier>) 334 spaces.m_subspaceForTestNamedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithIdentifier); 335 else 336 spaces.m_subspaceForTestNamedSetterWithIdentifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithIdentifier); 337 auto* space = spaces.m_subspaceForTestNamedSetterWithIdentifier.get(); 330 auto& clientSpaces = clientData.clientSubspaces(); 331 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier.get()) 332 return clientSpace; 333 334 auto& heapData = clientData.heapData(); 335 Locker locker { heapData.lock() }; 336 337 auto& spaces = heapData.subspaces(); 338 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 339 if (!space) { 340 Heap& heap = vm.heap; 341 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier> || !JSTestNamedSetterWithIdentifier::needsDestruction); 342 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIdentifier>) 343 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIdentifier); 344 else 345 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIdentifier); 346 spaces.m_subspaceForTestNamedSetterWithIdentifier = std::unique_ptr<IsoSubspace>(space); 338 347 IGNORE_WARNINGS_BEGIN("unreachable-code") 339 348 IGNORE_WARNINGS_BEGIN("tautological-compare") 340 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIdentifier::visitOutputConstraints;341 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;342 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)343 clientData.outputConstraintSpaces().append(space);349 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIdentifier::visitOutputConstraints; 350 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 351 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 352 heapData.outputConstraintSpaces().append(space); 344 353 IGNORE_WARNINGS_END 345 354 IGNORE_WARNINGS_END 346 return space; 355 } 356 357 clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 358 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIdentifier.get(); 347 359 } 348 360 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithIndexedGetterPrototype, Base); … … 371 372 } 372 373 373 JSC:: IsoSubspace* JSTestNamedSetterWithIndexedGetter::subspaceForImpl(JSC::VM& vm)374 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIndexedGetter::subspaceForImpl(JSC::VM& vm) 374 375 { 375 376 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 376 auto& spaces = clientData.subspaces(); 377 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get()) 378 return space; 379 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter> || !JSTestNamedSetterWithIndexedGetter::needsDestruction); 380 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter>) 381 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithIndexedGetter); 382 else 383 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithIndexedGetter); 384 auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetter.get(); 377 auto& clientSpaces = clientData.clientSubspaces(); 378 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter.get()) 379 return clientSpace; 380 381 auto& heapData = clientData.heapData(); 382 Locker locker { heapData.lock() }; 383 384 auto& spaces = heapData.subspaces(); 385 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 386 if (!space) { 387 Heap& heap = vm.heap; 388 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter> || !JSTestNamedSetterWithIndexedGetter::needsDestruction); 389 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetter>) 390 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIndexedGetter); 391 else 392 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIndexedGetter); 393 spaces.m_subspaceForTestNamedSetterWithIndexedGetter = std::unique_ptr<IsoSubspace>(space); 385 394 IGNORE_WARNINGS_BEGIN("unreachable-code") 386 395 IGNORE_WARNINGS_BEGIN("tautological-compare") 387 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetter::visitOutputConstraints;388 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;389 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)390 clientData.outputConstraintSpaces().append(space);396 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetter::visitOutputConstraints; 397 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 398 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 399 heapData.outputConstraintSpaces().append(space); 391 400 IGNORE_WARNINGS_END 392 401 IGNORE_WARNINGS_END 393 return space; 402 } 403 404 clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 405 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetter.get(); 394 406 } 395 407 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 73 74 DECLARE_INFO; 74 75 template<typename CellType, JSC::SubspaceAccess> 75 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)76 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 76 77 { 77 78 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithIndexedGetterAndSetterPrototype, Base); … … 421 422 } 422 423 423 JSC:: IsoSubspace* JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl(JSC::VM& vm)424 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithIndexedGetterAndSetter::subspaceForImpl(JSC::VM& vm) 424 425 { 425 426 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 426 auto& spaces = clientData.subspaces(); 427 if (auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get()) 428 return space; 429 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter> || !JSTestNamedSetterWithIndexedGetterAndSetter::needsDestruction); 430 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter>) 431 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithIndexedGetterAndSetter); 432 else 433 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithIndexedGetterAndSetter); 434 auto* space = spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); 427 auto& clientSpaces = clientData.clientSubspaces(); 428 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter.get()) 429 return clientSpace; 430 431 auto& heapData = clientData.heapData(); 432 Locker locker { heapData.lock() }; 433 434 auto& spaces = heapData.subspaces(); 435 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 436 if (!space) { 437 Heap& heap = vm.heap; 438 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter> || !JSTestNamedSetterWithIndexedGetterAndSetter::needsDestruction); 439 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithIndexedGetterAndSetter>) 440 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithIndexedGetterAndSetter); 441 else 442 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithIndexedGetterAndSetter); 443 spaces.m_subspaceForTestNamedSetterWithIndexedGetterAndSetter = std::unique_ptr<IsoSubspace>(space); 435 444 IGNORE_WARNINGS_BEGIN("unreachable-code") 436 445 IGNORE_WARNINGS_BEGIN("tautological-compare") 437 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetterAndSetter::visitOutputConstraints;438 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;439 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)440 clientData.outputConstraintSpaces().append(space);446 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithIndexedGetterAndSetter::visitOutputConstraints; 447 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 448 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 449 heapData.outputConstraintSpaces().append(space); 441 450 IGNORE_WARNINGS_END 442 451 IGNORE_WARNINGS_END 443 return space; 452 } 453 454 clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter = makeUnique<JSC::GCClient::IsoSubspace>(*space); 455 return clientSpaces.m_clientSubspaceForTestNamedSetterWithIndexedGetterAndSetter.get(); 444 456 } 445 457 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAbstractOperations.h" … … 63 64 DECLARE_INFO; 64 65 template<typename CellType, JSC::SubspaceAccess> 65 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)66 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 66 67 { 67 68 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithLegacyOverrideBuiltInsPrototype, Base); … … 270 271 } 271 272 272 JSC:: IsoSubspace* JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm)273 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 273 274 { 274 275 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 275 auto& spaces = clientData.subspaces(); 276 if (auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get()) 277 return space; 278 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyOverrideBuiltIns::needsDestruction); 279 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns>) 280 spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithLegacyOverrideBuiltIns); 281 else 282 spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithLegacyOverrideBuiltIns); 283 auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); 276 auto& clientSpaces = clientData.clientSubspaces(); 277 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get()) 278 return clientSpace; 279 280 auto& heapData = clientData.heapData(); 281 Locker locker { heapData.lock() }; 282 283 auto& spaces = heapData.subspaces(); 284 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 285 if (!space) { 286 Heap& heap = vm.heap; 287 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyOverrideBuiltIns::needsDestruction); 288 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyOverrideBuiltIns>) 289 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyOverrideBuiltIns); 290 else 291 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyOverrideBuiltIns); 292 spaces.m_subspaceForTestNamedSetterWithLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 284 293 IGNORE_WARNINGS_BEGIN("unreachable-code") 285 294 IGNORE_WARNINGS_BEGIN("tautological-compare") 286 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyOverrideBuiltIns::visitOutputConstraints;287 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;288 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)289 clientData.outputConstraintSpaces().append(space);295 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyOverrideBuiltIns::visitOutputConstraints; 296 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 297 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 298 heapData.outputConstraintSpaces().append(space); 290 299 IGNORE_WARNINGS_END 291 300 IGNORE_WARNINGS_END 292 return space; 301 } 302 303 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 304 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyOverrideBuiltIns.get(); 293 305 } 294 306 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyOverrideBuiltIns.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 72 73 DECLARE_INFO; 73 74 template<typename CellType, JSC::SubspaceAccess> 74 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)75 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 75 76 { 76 77 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithLegacyUnforgeablePropertiesPrototype, Base); … … 354 355 } 355 356 356 JSC:: IsoSubspace* JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl(JSC::VM& vm)357 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyUnforgeableProperties::subspaceForImpl(JSC::VM& vm) 357 358 { 358 359 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 359 auto& spaces = clientData.subspaces(); 360 if (auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties.get()) 361 return space; 362 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties> || !JSTestNamedSetterWithLegacyUnforgeableProperties::needsDestruction); 363 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties>) 364 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithLegacyUnforgeableProperties); 365 else 366 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithLegacyUnforgeableProperties); 367 auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); 360 auto& clientSpaces = clientData.clientSubspaces(); 361 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties.get()) 362 return clientSpace; 363 364 auto& heapData = clientData.heapData(); 365 Locker locker { heapData.lock() }; 366 367 auto& spaces = heapData.subspaces(); 368 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 369 if (!space) { 370 Heap& heap = vm.heap; 371 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties> || !JSTestNamedSetterWithLegacyUnforgeableProperties::needsDestruction); 372 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeableProperties>) 373 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyUnforgeableProperties); 374 else 375 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyUnforgeableProperties); 376 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeableProperties = std::unique_ptr<IsoSubspace>(space); 368 377 IGNORE_WARNINGS_BEGIN("unreachable-code") 369 378 IGNORE_WARNINGS_BEGIN("tautological-compare") 370 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeableProperties::visitOutputConstraints;371 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;372 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)373 clientData.outputConstraintSpaces().append(space);379 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeableProperties::visitOutputConstraints; 380 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 381 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 382 heapData.outputConstraintSpaces().append(space); 374 383 IGNORE_WARNINGS_END 375 384 IGNORE_WARNINGS_END 376 return space; 385 } 386 387 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties = makeUnique<JSC::GCClient::IsoSubspace>(*space); 388 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeableProperties.get(); 377 389 } 378 390 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeableProperties.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 72 73 DECLARE_INFO; 73 74 template<typename CellType, JSC::SubspaceAccess> 74 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)75 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 75 76 { 76 77 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltInsPrototype, Base); … … 331 332 } 332 333 333 JSC:: IsoSubspace* JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm)334 JSC::GCClient::IsoSubspace* JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::subspaceForImpl(JSC::VM& vm) 334 335 { 335 336 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 336 auto& spaces = clientData.subspaces(); 337 if (auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get()) 338 return space; 339 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::needsDestruction); 340 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns>) 341 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 342 else 343 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 344 auto* space = spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); 337 auto& clientSpaces = clientData.clientSubspaces(); 338 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get()) 339 return clientSpace; 340 341 auto& heapData = clientData.heapData(); 342 Locker locker { heapData.lock() }; 343 344 auto& spaces = heapData.subspaces(); 345 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 346 if (!space) { 347 Heap& heap = vm.heap; 348 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns> || !JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::needsDestruction); 349 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns>) 350 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 351 else 352 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns); 353 spaces.m_subspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = std::unique_ptr<IsoSubspace>(space); 345 354 IGNORE_WARNINGS_BEGIN("unreachable-code") 346 355 IGNORE_WARNINGS_BEGIN("tautological-compare") 347 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::visitOutputConstraints;348 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;349 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)350 clientData.outputConstraintSpaces().append(space);356 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns::visitOutputConstraints; 357 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 358 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 359 heapData.outputConstraintSpaces().append(space); 351 360 IGNORE_WARNINGS_END 352 361 IGNORE_WARNINGS_END 353 return space; 362 } 363 364 clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns = makeUnique<JSC::GCClient::IsoSubspace>(*space); 365 return clientSpaces.m_clientSubspaceForTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.get(); 354 366 } 355 367 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithLegacyUnforgeablePropertiesAndLegacyOverrideBuiltIns.h ¶
r285730 r290129 56 56 57 57 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 58 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)58 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 59 59 { 60 60 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 62 62 return subspaceForImpl(vm); 63 63 } 64 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);64 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 65 65 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 66 66 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceObject.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 273 274 #endif 274 275 275 JSC:: IsoSubspace* JSTestNamespaceObject::subspaceForImpl(JSC::VM& vm)276 JSC::GCClient::IsoSubspace* JSTestNamespaceObject::subspaceForImpl(JSC::VM& vm) 276 277 { 277 278 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 278 auto& spaces = clientData.subspaces(); 279 if (auto* space = spaces.m_subspaceForTestNamespaceObject.get()) 280 return space; 281 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject> || !JSTestNamespaceObject::needsDestruction); 282 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject>) 283 spaces.m_subspaceForTestNamespaceObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNamespaceObject); 284 else 285 spaces.m_subspaceForTestNamespaceObject = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNamespaceObject); 286 auto* space = spaces.m_subspaceForTestNamespaceObject.get(); 279 auto& clientSpaces = clientData.clientSubspaces(); 280 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNamespaceObject.get()) 281 return clientSpace; 282 283 auto& heapData = clientData.heapData(); 284 Locker locker { heapData.lock() }; 285 286 auto& spaces = heapData.subspaces(); 287 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 288 if (!space) { 289 Heap& heap = vm.heap; 290 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject> || !JSTestNamespaceObject::needsDestruction); 291 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNamespaceObject>) 292 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNamespaceObject); 293 else 294 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNamespaceObject); 295 spaces.m_subspaceForTestNamespaceObject = std::unique_ptr<IsoSubspace>(space); 287 296 IGNORE_WARNINGS_BEGIN("unreachable-code") 288 297 IGNORE_WARNINGS_BEGIN("tautological-compare") 289 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamespaceObject::visitOutputConstraints;290 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;291 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)292 clientData.outputConstraintSpaces().append(space);298 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNamespaceObject::visitOutputConstraints; 299 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 300 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 301 heapData.outputConstraintSpaces().append(space); 293 302 IGNORE_WARNINGS_END 294 303 IGNORE_WARNINGS_END 295 return space; 296 } 297 298 299 } 304 } 305 306 clientSpaces.m_clientSubspaceForTestNamespaceObject = makeUnique<JSC::GCClient::IsoSubspace>(*space); 307 return clientSpaces.m_clientSubspaceForTestNamespaceObject.get(); 308 } 309 310 311 } -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamespaceObject.h ¶
r285730 r290129 45 45 46 46 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 47 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)47 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 48 48 { 49 49 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 51 51 return subspaceForImpl(vm); 52 52 } 53 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);53 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 54 54 protected: 55 55 JSTestNamespaceObject(JSC::Structure*, JSDOMGlobalObject&); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMPromiseProxy.h" … … 93 94 DECLARE_INFO; 94 95 template<typename CellType, JSC::SubspaceAccess> 95 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)96 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 96 97 { 97 98 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestNodePrototype, Base); … … 398 399 DECLARE_INFO; 399 400 400 template<typename, JSC::SubspaceAccess mode> static JSC::IsoSubspace* subspaceFor(JSC::VM& vm)401 template<typename, SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 401 402 { 402 403 if constexpr (mode == JSC::SubspaceAccess::Concurrently) 403 404 return nullptr; 404 405 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 405 auto& spaces = clientData.subspaces(); 406 if (auto* space = spaces.m_subspaceForTestNodeIterator.get()) 407 return space; 408 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator> || !TestNodeIterator::needsDestruction); 409 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator>) 410 spaces.m_subspaceForTestNodeIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), TestNodeIterator); 411 else 412 spaces.m_subspaceForTestNodeIterator = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), TestNodeIterator); 413 auto* space = spaces.m_subspaceForTestNodeIterator.get(); 406 auto& clientSpaces = clientData.clientSubspaces(); 407 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNodeIterator.get()) 408 return clientSpace; 409 410 auto& heapData = clientData.heapData(); 411 Locker locker { heapData.lock() }; 412 413 auto& spaces = heapData.subspaces(); 414 IsoSubspace* space = spaces.m_subspaceForTestNodeIterator.get(); 415 if (!space) { 416 Heap& heap = vm.heap; 417 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator> || !TestNodeIterator::needsDestruction); 418 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, TestNodeIterator>) 419 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, TestNodeIterator); 420 else 421 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, TestNodeIterator); 422 spaces.m_subspaceForTestNodeIterator = std::unique_ptr<IsoSubspace>(space); 414 423 IGNORE_WARNINGS_BEGIN("unreachable-code") 415 424 IGNORE_WARNINGS_BEGIN("tautological-compare") 416 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestNodeIterator::visitOutputConstraints;417 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;418 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)419 clientData.outputConstraintSpaces().append(space);425 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = TestNodeIterator::visitOutputConstraints; 426 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 427 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 428 heapData.outputConstraintSpaces().append(space); 420 429 IGNORE_WARNINGS_END 421 430 IGNORE_WARNINGS_END 422 return space; 431 } 432 433 clientSpaces.m_clientSubspaceForTestNodeIterator = makeUnique<JSC::GCClient::IsoSubspace>(*space); 434 return clientSpaces.m_clientSubspaceForTestNodeIterator.get(); 423 435 } 424 436 … … 492 504 } 493 505 494 JSC:: IsoSubspace* JSTestNode::subspaceForImpl(JSC::VM& vm)506 JSC::GCClient::IsoSubspace* JSTestNode::subspaceForImpl(JSC::VM& vm) 495 507 { 496 508 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 497 auto& spaces = clientData.subspaces(); 498 if (auto* space = spaces.m_subspaceForTestNode.get()) 499 return space; 500 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode> || !JSTestNode::needsDestruction); 501 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode>) 502 spaces.m_subspaceForTestNode = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestNode); 503 else 504 spaces.m_subspaceForTestNode = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestNode); 505 auto* space = spaces.m_subspaceForTestNode.get(); 509 auto& clientSpaces = clientData.clientSubspaces(); 510 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestNode.get()) 511 return clientSpace; 512 513 auto& heapData = clientData.heapData(); 514 Locker locker { heapData.lock() }; 515 516 auto& spaces = heapData.subspaces(); 517 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 518 if (!space) { 519 Heap& heap = vm.heap; 520 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode> || !JSTestNode::needsDestruction); 521 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestNode>) 522 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestNode); 523 else 524 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestNode); 525 spaces.m_subspaceForTestNode = std::unique_ptr<IsoSubspace>(space); 506 526 IGNORE_WARNINGS_BEGIN("unreachable-code") 507 527 IGNORE_WARNINGS_BEGIN("tautological-compare") 508 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNode::visitOutputConstraints;509 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;510 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)511 clientData.outputConstraintSpaces().append(space);528 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestNode::visitOutputConstraints; 529 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 530 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 531 heapData.outputConstraintSpaces().append(space); 512 532 IGNORE_WARNINGS_END 513 533 IGNORE_WARNINGS_END 514 return space; 534 } 535 536 clientSpaces.m_clientSubspaceForTestNode = makeUnique<JSC::GCClient::IsoSubspace>(*space); 537 return clientSpaces.m_clientSubspaceForTestNode.get(); 515 538 } 516 539 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h ¶
r285730 r290129 49 49 50 50 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 51 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)51 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 52 52 { 53 53 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 55 55 return subspaceForImpl(vm); 56 56 } 57 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);57 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 58 58 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 59 59 TestNode& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp ¶
r289117 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMPromiseProxy.h" … … 1867 1868 DECLARE_INFO; 1868 1869 template<typename CellType, JSC::SubspaceAccess> 1869 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)1870 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 1870 1871 { 1871 1872 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestObjPrototype, Base); … … 9060 9061 } 9061 9062 9062 JSC:: IsoSubspace* JSTestObj::subspaceForImpl(JSC::VM& vm)9063 JSC::GCClient::IsoSubspace* JSTestObj::subspaceForImpl(JSC::VM& vm) 9063 9064 { 9064 9065 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 9065 auto& spaces = clientData.subspaces(); 9066 if (auto* space = spaces.m_subspaceForTestObj.get()) 9067 return space; 9068 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj> || !JSTestObj::needsDestruction); 9069 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj>) 9070 spaces.m_subspaceForTestObj = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestObj); 9071 else 9072 spaces.m_subspaceForTestObj = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestObj); 9073 auto* space = spaces.m_subspaceForTestObj.get(); 9066 auto& clientSpaces = clientData.clientSubspaces(); 9067 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestObj.get()) 9068 return clientSpace; 9069 9070 auto& heapData = clientData.heapData(); 9071 Locker locker { heapData.lock() }; 9072 9073 auto& spaces = heapData.subspaces(); 9074 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 9075 if (!space) { 9076 Heap& heap = vm.heap; 9077 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj> || !JSTestObj::needsDestruction); 9078 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestObj>) 9079 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestObj); 9080 else 9081 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestObj); 9082 spaces.m_subspaceForTestObj = std::unique_ptr<IsoSubspace>(space); 9074 9083 IGNORE_WARNINGS_BEGIN("unreachable-code") 9075 9084 IGNORE_WARNINGS_BEGIN("tautological-compare") 9076 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestObj::visitOutputConstraints;9077 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;9078 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)9079 clientData.outputConstraintSpaces().append(space);9085 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestObj::visitOutputConstraints; 9086 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 9087 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 9088 heapData.outputConstraintSpaces().append(space); 9080 9089 IGNORE_WARNINGS_END 9081 9090 IGNORE_WARNINGS_END 9082 return space; 9091 } 9092 9093 clientSpaces.m_clientSubspaceForTestObj = makeUnique<JSC::GCClient::IsoSubspace>(*space); 9094 return clientSpaces.m_clientSubspaceForTestObj.get(); 9083 9095 } 9084 9096 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h ¶
r285730 r290129 60 60 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute3; 61 61 #endif 62 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)62 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 63 63 { 64 64 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 66 66 return subspaceForImpl(vm); 67 67 } 68 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);68 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 69 69 DECLARE_VISIT_CHILDREN; 70 70 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.cpp ¶
r288118 r290129 26 26 27 27 #include "ActiveDOMObject.h" 28 #include "DOMClientIsoSubspaces.h" 28 29 #include "DOMIsoSubspaces.h" 29 30 #include "JSDOMBinding.h" … … 79 80 DECLARE_INFO; 80 81 template<typename CellType, JSC::SubspaceAccess> 81 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 82 83 { 83 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestOperationConditionalPrototype, Base); … … 227 228 #endif 228 229 229 JSC:: IsoSubspace* JSTestOperationConditional::subspaceForImpl(JSC::VM& vm)230 JSC::GCClient::IsoSubspace* JSTestOperationConditional::subspaceForImpl(JSC::VM& vm) 230 231 { 231 232 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 232 auto& spaces = clientData.subspaces(); 233 if (auto* space = spaces.m_subspaceForTestOperationConditional.get()) 234 return space; 235 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional> || !JSTestOperationConditional::needsDestruction); 236 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional>) 237 spaces.m_subspaceForTestOperationConditional = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestOperationConditional); 238 else 239 spaces.m_subspaceForTestOperationConditional = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestOperationConditional); 240 auto* space = spaces.m_subspaceForTestOperationConditional.get(); 233 auto& clientSpaces = clientData.clientSubspaces(); 234 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOperationConditional.get()) 235 return clientSpace; 236 237 auto& heapData = clientData.heapData(); 238 Locker locker { heapData.lock() }; 239 240 auto& spaces = heapData.subspaces(); 241 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 242 if (!space) { 243 Heap& heap = vm.heap; 244 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional> || !JSTestOperationConditional::needsDestruction); 245 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOperationConditional>) 246 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOperationConditional); 247 else 248 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOperationConditional); 249 spaces.m_subspaceForTestOperationConditional = std::unique_ptr<IsoSubspace>(space); 241 250 IGNORE_WARNINGS_BEGIN("unreachable-code") 242 251 IGNORE_WARNINGS_BEGIN("tautological-compare") 243 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOperationConditional::visitOutputConstraints;244 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;245 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)246 clientData.outputConstraintSpaces().append(space);252 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOperationConditional::visitOutputConstraints; 253 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 254 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 255 heapData.outputConstraintSpaces().append(space); 247 256 IGNORE_WARNINGS_END 248 257 IGNORE_WARNINGS_END 249 return space; 258 } 259 260 clientSpaces.m_clientSubspaceForTestOperationConditional = makeUnique<JSC::GCClient::IsoSubspace>(*space); 261 return clientSpaces.m_clientSubspaceForTestOperationConditional.get(); 250 262 } 251 263 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOperationConditional.h ¶
r285730 r290129 52 52 53 53 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 54 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)54 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 55 55 { 56 56 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 58 58 return subspaceForImpl(vm); 59 59 } 60 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);60 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 61 61 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 62 62 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSBlob.h" … … 67 68 DECLARE_INFO; 68 69 template<typename CellType, JSC::SubspaceAccess> 69 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)70 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 70 71 { 71 72 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestOverloadedConstructorsPrototype, Base); … … 298 299 } 299 300 300 JSC:: IsoSubspace* JSTestOverloadedConstructors::subspaceForImpl(JSC::VM& vm)301 JSC::GCClient::IsoSubspace* JSTestOverloadedConstructors::subspaceForImpl(JSC::VM& vm) 301 302 { 302 303 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 303 auto& spaces = clientData.subspaces(); 304 if (auto* space = spaces.m_subspaceForTestOverloadedConstructors.get()) 305 return space; 306 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors> || !JSTestOverloadedConstructors::needsDestruction); 307 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors>) 308 spaces.m_subspaceForTestOverloadedConstructors = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestOverloadedConstructors); 309 else 310 spaces.m_subspaceForTestOverloadedConstructors = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestOverloadedConstructors); 311 auto* space = spaces.m_subspaceForTestOverloadedConstructors.get(); 304 auto& clientSpaces = clientData.clientSubspaces(); 305 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOverloadedConstructors.get()) 306 return clientSpace; 307 308 auto& heapData = clientData.heapData(); 309 Locker locker { heapData.lock() }; 310 311 auto& spaces = heapData.subspaces(); 312 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 313 if (!space) { 314 Heap& heap = vm.heap; 315 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors> || !JSTestOverloadedConstructors::needsDestruction); 316 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructors>) 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOverloadedConstructors); 318 else 319 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOverloadedConstructors); 320 spaces.m_subspaceForTestOverloadedConstructors = std::unique_ptr<IsoSubspace>(space); 312 321 IGNORE_WARNINGS_BEGIN("unreachable-code") 313 322 IGNORE_WARNINGS_BEGIN("tautological-compare") 314 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructors::visitOutputConstraints;315 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;316 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)317 clientData.outputConstraintSpaces().append(space);323 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructors::visitOutputConstraints; 324 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 325 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 326 heapData.outputConstraintSpaces().append(space); 318 327 IGNORE_WARNINGS_END 319 328 IGNORE_WARNINGS_END 320 return space; 329 } 330 331 clientSpaces.m_clientSubspaceForTestOverloadedConstructors = makeUnique<JSC::GCClient::IsoSubspace>(*space); 332 return clientSpaces.m_clientSubspaceForTestOverloadedConstructors.get(); 321 333 } 322 334 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 66 67 DECLARE_INFO; 67 68 template<typename CellType, JSC::SubspaceAccess> 68 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)69 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 69 70 { 70 71 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestOverloadedConstructorsWithSequencePrototype, Base); … … 235 236 } 236 237 237 JSC:: IsoSubspace* JSTestOverloadedConstructorsWithSequence::subspaceForImpl(JSC::VM& vm)238 JSC::GCClient::IsoSubspace* JSTestOverloadedConstructorsWithSequence::subspaceForImpl(JSC::VM& vm) 238 239 { 239 240 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 240 auto& spaces = clientData.subspaces(); 241 if (auto* space = spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get()) 242 return space; 243 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence> || !JSTestOverloadedConstructorsWithSequence::needsDestruction); 244 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence>) 245 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestOverloadedConstructorsWithSequence); 246 else 247 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestOverloadedConstructorsWithSequence); 248 auto* space = spaces.m_subspaceForTestOverloadedConstructorsWithSequence.get(); 241 auto& clientSpaces = clientData.clientSubspaces(); 242 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence.get()) 243 return clientSpace; 244 245 auto& heapData = clientData.heapData(); 246 Locker locker { heapData.lock() }; 247 248 auto& spaces = heapData.subspaces(); 249 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 250 if (!space) { 251 Heap& heap = vm.heap; 252 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence> || !JSTestOverloadedConstructorsWithSequence::needsDestruction); 253 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestOverloadedConstructorsWithSequence>) 254 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestOverloadedConstructorsWithSequence); 255 else 256 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestOverloadedConstructorsWithSequence); 257 spaces.m_subspaceForTestOverloadedConstructorsWithSequence = std::unique_ptr<IsoSubspace>(space); 249 258 IGNORE_WARNINGS_BEGIN("unreachable-code") 250 259 IGNORE_WARNINGS_BEGIN("tautological-compare") 251 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructorsWithSequence::visitOutputConstraints;252 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;253 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)254 clientData.outputConstraintSpaces().append(space);260 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestOverloadedConstructorsWithSequence::visitOutputConstraints; 261 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 262 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 263 heapData.outputConstraintSpaces().append(space); 255 264 IGNORE_WARNINGS_END 256 265 IGNORE_WARNINGS_END 257 return space; 266 } 267 268 clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence = makeUnique<JSC::GCClient::IsoSubspace>(*space); 269 return clientSpaces.m_clientSubspaceForTestOverloadedConstructorsWithSequence.get(); 258 270 } 259 271 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 62 63 DECLARE_INFO; 63 64 template<typename CellType, JSC::SubspaceAccess> 64 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)65 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 65 66 { 66 67 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestPluginInterfacePrototype, Base); … … 237 238 } 238 239 239 JSC:: IsoSubspace* JSTestPluginInterface::subspaceForImpl(JSC::VM& vm)240 JSC::GCClient::IsoSubspace* JSTestPluginInterface::subspaceForImpl(JSC::VM& vm) 240 241 { 241 242 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 242 auto& spaces = clientData.subspaces(); 243 if (auto* space = spaces.m_subspaceForTestPluginInterface.get()) 244 return space; 245 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface> || !JSTestPluginInterface::needsDestruction); 246 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface>) 247 spaces.m_subspaceForTestPluginInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestPluginInterface); 248 else 249 spaces.m_subspaceForTestPluginInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestPluginInterface); 250 auto* space = spaces.m_subspaceForTestPluginInterface.get(); 243 auto& clientSpaces = clientData.clientSubspaces(); 244 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestPluginInterface.get()) 245 return clientSpace; 246 247 auto& heapData = clientData.heapData(); 248 Locker locker { heapData.lock() }; 249 250 auto& spaces = heapData.subspaces(); 251 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 252 if (!space) { 253 Heap& heap = vm.heap; 254 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface> || !JSTestPluginInterface::needsDestruction); 255 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPluginInterface>) 256 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestPluginInterface); 257 else 258 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestPluginInterface); 259 spaces.m_subspaceForTestPluginInterface = std::unique_ptr<IsoSubspace>(space); 251 260 IGNORE_WARNINGS_BEGIN("unreachable-code") 252 261 IGNORE_WARNINGS_BEGIN("tautological-compare") 253 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPluginInterface::visitOutputConstraints;254 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;255 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)256 clientData.outputConstraintSpaces().append(space);262 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPluginInterface::visitOutputConstraints; 263 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 264 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 265 heapData.outputConstraintSpaces().append(space); 257 266 IGNORE_WARNINGS_END 258 267 IGNORE_WARNINGS_END 259 return space; 268 } 269 270 clientSpaces.m_clientSubspaceForTestPluginInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 271 return clientSpaces.m_clientSubspaceForTestPluginInterface.get(); 260 272 } 261 273 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.h ¶
r285730 r290129 57 57 58 58 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 59 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)59 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 60 60 { 61 61 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 63 63 return subspaceForImpl(vm); 64 64 } 65 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);65 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 66 66 DECLARE_VISIT_CHILDREN; 67 67 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "DOMPromiseProxy.h" … … 146 147 DECLARE_INFO; 147 148 template<typename CellType, JSC::SubspaceAccess> 148 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)149 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 149 150 { 150 151 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestPromiseRejectionEventPrototype, Base); … … 296 297 } 297 298 298 JSC:: IsoSubspace* JSTestPromiseRejectionEvent::subspaceForImpl(JSC::VM& vm)299 JSC::GCClient::IsoSubspace* JSTestPromiseRejectionEvent::subspaceForImpl(JSC::VM& vm) 299 300 { 300 301 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 301 auto& spaces = clientData.subspaces(); 302 if (auto* space = spaces.m_subspaceForTestPromiseRejectionEvent.get()) 303 return space; 304 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent> || !JSTestPromiseRejectionEvent::needsDestruction); 305 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent>) 306 spaces.m_subspaceForTestPromiseRejectionEvent = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestPromiseRejectionEvent); 307 else 308 spaces.m_subspaceForTestPromiseRejectionEvent = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestPromiseRejectionEvent); 309 auto* space = spaces.m_subspaceForTestPromiseRejectionEvent.get(); 302 auto& clientSpaces = clientData.clientSubspaces(); 303 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent.get()) 304 return clientSpace; 305 306 auto& heapData = clientData.heapData(); 307 Locker locker { heapData.lock() }; 308 309 auto& spaces = heapData.subspaces(); 310 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 311 if (!space) { 312 Heap& heap = vm.heap; 313 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent> || !JSTestPromiseRejectionEvent::needsDestruction); 314 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestPromiseRejectionEvent>) 315 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestPromiseRejectionEvent); 316 else 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestPromiseRejectionEvent); 318 spaces.m_subspaceForTestPromiseRejectionEvent = std::unique_ptr<IsoSubspace>(space); 310 319 IGNORE_WARNINGS_BEGIN("unreachable-code") 311 320 IGNORE_WARNINGS_BEGIN("tautological-compare") 312 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPromiseRejectionEvent::visitOutputConstraints;313 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;314 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)315 clientData.outputConstraintSpaces().append(space);321 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestPromiseRejectionEvent::visitOutputConstraints; 322 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 323 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 324 heapData.outputConstraintSpaces().append(space); 316 325 IGNORE_WARNINGS_END 317 326 IGNORE_WARNINGS_END 318 return space; 327 } 328 329 clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent = makeUnique<JSC::GCClient::IsoSubspace>(*space); 330 return clientSpaces.m_clientSubspaceForTestPromiseRejectionEvent.get(); 319 331 } 320 332 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 TestPromiseRejectionEvent& wrapped() const -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlyMapLike.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 77 78 DECLARE_INFO; 78 79 template<typename CellType, JSC::SubspaceAccess> 79 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)80 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 80 81 { 81 82 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestReadOnlyMapLikePrototype, Base); … … 298 299 } 299 300 300 JSC:: IsoSubspace* JSTestReadOnlyMapLike::subspaceForImpl(JSC::VM& vm)301 JSC::GCClient::IsoSubspace* JSTestReadOnlyMapLike::subspaceForImpl(JSC::VM& vm) 301 302 { 302 303 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 303 auto& spaces = clientData.subspaces(); 304 if (auto* space = spaces.m_subspaceForTestReadOnlyMapLike.get()) 305 return space; 306 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike> || !JSTestReadOnlyMapLike::needsDestruction); 307 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike>) 308 spaces.m_subspaceForTestReadOnlyMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestReadOnlyMapLike); 309 else 310 spaces.m_subspaceForTestReadOnlyMapLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestReadOnlyMapLike); 311 auto* space = spaces.m_subspaceForTestReadOnlyMapLike.get(); 304 auto& clientSpaces = clientData.clientSubspaces(); 305 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReadOnlyMapLike.get()) 306 return clientSpace; 307 308 auto& heapData = clientData.heapData(); 309 Locker locker { heapData.lock() }; 310 311 auto& spaces = heapData.subspaces(); 312 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 313 if (!space) { 314 Heap& heap = vm.heap; 315 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike> || !JSTestReadOnlyMapLike::needsDestruction); 316 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlyMapLike>) 317 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReadOnlyMapLike); 318 else 319 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReadOnlyMapLike); 320 spaces.m_subspaceForTestReadOnlyMapLike = std::unique_ptr<IsoSubspace>(space); 312 321 IGNORE_WARNINGS_BEGIN("unreachable-code") 313 322 IGNORE_WARNINGS_BEGIN("tautological-compare") 314 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlyMapLike::visitOutputConstraints;315 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;316 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)317 clientData.outputConstraintSpaces().append(space);323 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlyMapLike::visitOutputConstraints; 324 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 325 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 326 heapData.outputConstraintSpaces().append(space); 318 327 IGNORE_WARNINGS_END 319 328 IGNORE_WARNINGS_END 320 return space; 329 } 330 331 clientSpaces.m_clientSubspaceForTestReadOnlyMapLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 332 return clientSpaces.m_clientSubspaceForTestReadOnlyMapLike.get(); 321 333 } 322 334 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlyMapLike.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlySetLike.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 76 77 DECLARE_INFO; 77 78 template<typename CellType, JSC::SubspaceAccess> 78 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)79 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 79 80 { 80 81 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestReadOnlySetLikePrototype, Base); … … 277 278 } 278 279 279 JSC:: IsoSubspace* JSTestReadOnlySetLike::subspaceForImpl(JSC::VM& vm)280 JSC::GCClient::IsoSubspace* JSTestReadOnlySetLike::subspaceForImpl(JSC::VM& vm) 280 281 { 281 282 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 282 auto& spaces = clientData.subspaces(); 283 if (auto* space = spaces.m_subspaceForTestReadOnlySetLike.get()) 284 return space; 285 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike> || !JSTestReadOnlySetLike::needsDestruction); 286 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike>) 287 spaces.m_subspaceForTestReadOnlySetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestReadOnlySetLike); 288 else 289 spaces.m_subspaceForTestReadOnlySetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestReadOnlySetLike); 290 auto* space = spaces.m_subspaceForTestReadOnlySetLike.get(); 283 auto& clientSpaces = clientData.clientSubspaces(); 284 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReadOnlySetLike.get()) 285 return clientSpace; 286 287 auto& heapData = clientData.heapData(); 288 Locker locker { heapData.lock() }; 289 290 auto& spaces = heapData.subspaces(); 291 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 292 if (!space) { 293 Heap& heap = vm.heap; 294 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike> || !JSTestReadOnlySetLike::needsDestruction); 295 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReadOnlySetLike>) 296 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReadOnlySetLike); 297 else 298 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReadOnlySetLike); 299 spaces.m_subspaceForTestReadOnlySetLike = std::unique_ptr<IsoSubspace>(space); 291 300 IGNORE_WARNINGS_BEGIN("unreachable-code") 292 301 IGNORE_WARNINGS_BEGIN("tautological-compare") 293 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlySetLike::visitOutputConstraints;294 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;295 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)296 clientData.outputConstraintSpaces().append(space);302 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReadOnlySetLike::visitOutputConstraints; 303 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 304 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 305 heapData.outputConstraintSpaces().append(space); 297 306 IGNORE_WARNINGS_END 298 307 IGNORE_WARNINGS_END 299 return space; 308 } 309 310 clientSpaces.m_clientSubspaceForTestReadOnlySetLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 311 return clientSpaces.m_clientSubspaceForTestReadOnlySetLike.get(); 300 312 } 301 313 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReadOnlySetLike.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 61 62 DECLARE_INFO; 62 63 template<typename CellType, JSC::SubspaceAccess> 63 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)64 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 64 65 { 65 66 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestReportExtraMemoryCostPrototype, Base); … … 164 165 } 165 166 166 JSC:: IsoSubspace* JSTestReportExtraMemoryCost::subspaceForImpl(JSC::VM& vm)167 JSC::GCClient::IsoSubspace* JSTestReportExtraMemoryCost::subspaceForImpl(JSC::VM& vm) 167 168 { 168 169 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 169 auto& spaces = clientData.subspaces(); 170 if (auto* space = spaces.m_subspaceForTestReportExtraMemoryCost.get()) 171 return space; 172 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost> || !JSTestReportExtraMemoryCost::needsDestruction); 173 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost>) 174 spaces.m_subspaceForTestReportExtraMemoryCost = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestReportExtraMemoryCost); 175 else 176 spaces.m_subspaceForTestReportExtraMemoryCost = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestReportExtraMemoryCost); 177 auto* space = spaces.m_subspaceForTestReportExtraMemoryCost.get(); 170 auto& clientSpaces = clientData.clientSubspaces(); 171 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost.get()) 172 return clientSpace; 173 174 auto& heapData = clientData.heapData(); 175 Locker locker { heapData.lock() }; 176 177 auto& spaces = heapData.subspaces(); 178 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 179 if (!space) { 180 Heap& heap = vm.heap; 181 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost> || !JSTestReportExtraMemoryCost::needsDestruction); 182 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestReportExtraMemoryCost>) 183 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestReportExtraMemoryCost); 184 else 185 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestReportExtraMemoryCost); 186 spaces.m_subspaceForTestReportExtraMemoryCost = std::unique_ptr<IsoSubspace>(space); 178 187 IGNORE_WARNINGS_BEGIN("unreachable-code") 179 188 IGNORE_WARNINGS_BEGIN("tautological-compare") 180 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReportExtraMemoryCost::visitOutputConstraints;181 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;182 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)183 clientData.outputConstraintSpaces().append(space);189 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestReportExtraMemoryCost::visitOutputConstraints; 190 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 191 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 192 heapData.outputConstraintSpaces().append(space); 184 193 IGNORE_WARNINGS_END 185 194 IGNORE_WARNINGS_END 186 return space; 195 } 196 197 clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost = makeUnique<JSC::GCClient::IsoSubspace>(*space); 198 return clientSpaces.m_clientSubspaceForTestReportExtraMemoryCost.get(); 187 199 } 188 200 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestReportExtraMemoryCost.h ¶
r285730 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 DECLARE_VISIT_CHILDREN; 61 61 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp ¶
r288118 r290129 26 26 27 27 #include "ActiveDOMObject.h" 28 #include "DOMClientIsoSubspaces.h" 28 29 #include "DOMIsoSubspaces.h" 29 30 #include "IDLTypes.h" … … 87 88 DECLARE_INFO; 88 89 template<typename CellType, JSC::SubspaceAccess> 89 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)90 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 90 91 { 91 92 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestSerializedScriptValueInterfacePrototype, Base); … … 342 343 } 343 344 344 JSC:: IsoSubspace* JSTestSerializedScriptValueInterface::subspaceForImpl(JSC::VM& vm)345 JSC::GCClient::IsoSubspace* JSTestSerializedScriptValueInterface::subspaceForImpl(JSC::VM& vm) 345 346 { 346 347 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 347 auto& spaces = clientData.subspaces(); 348 if (auto* space = spaces.m_subspaceForTestSerializedScriptValueInterface.get()) 349 return space; 350 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface> || !JSTestSerializedScriptValueInterface::needsDestruction); 351 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface>) 352 spaces.m_subspaceForTestSerializedScriptValueInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestSerializedScriptValueInterface); 353 else 354 spaces.m_subspaceForTestSerializedScriptValueInterface = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestSerializedScriptValueInterface); 355 auto* space = spaces.m_subspaceForTestSerializedScriptValueInterface.get(); 348 auto& clientSpaces = clientData.clientSubspaces(); 349 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface.get()) 350 return clientSpace; 351 352 auto& heapData = clientData.heapData(); 353 Locker locker { heapData.lock() }; 354 355 auto& spaces = heapData.subspaces(); 356 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 357 if (!space) { 358 Heap& heap = vm.heap; 359 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface> || !JSTestSerializedScriptValueInterface::needsDestruction); 360 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSerializedScriptValueInterface>) 361 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSerializedScriptValueInterface); 362 else 363 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSerializedScriptValueInterface); 364 spaces.m_subspaceForTestSerializedScriptValueInterface = std::unique_ptr<IsoSubspace>(space); 356 365 IGNORE_WARNINGS_BEGIN("unreachable-code") 357 366 IGNORE_WARNINGS_BEGIN("tautological-compare") 358 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSerializedScriptValueInterface::visitOutputConstraints;359 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;360 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)361 clientData.outputConstraintSpaces().append(space);367 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSerializedScriptValueInterface::visitOutputConstraints; 368 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 369 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 370 heapData.outputConstraintSpaces().append(space); 362 371 IGNORE_WARNINGS_END 363 372 IGNORE_WARNINGS_END 364 return space; 373 } 374 375 clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface = makeUnique<JSC::GCClient::IsoSubspace>(*space); 376 return clientSpaces.m_clientSubspaceForTestSerializedScriptValueInterface.get(); 365 377 } 366 378 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h ¶
r285730 r290129 54 54 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedValue; 55 55 mutable JSC::WriteBarrier<JSC::Unknown> m_cachedReadonlyValue; 56 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)56 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 57 57 { 58 58 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 60 60 return subspaceForImpl(vm); 61 61 } 62 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);62 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 63 63 DECLARE_VISIT_CHILDREN; 64 64 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLike.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 79 80 DECLARE_INFO; 80 81 template<typename CellType, JSC::SubspaceAccess> 81 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)82 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 82 83 { 83 84 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestSetLikePrototype, Base); … … 335 336 } 336 337 337 JSC:: IsoSubspace* JSTestSetLike::subspaceForImpl(JSC::VM& vm)338 JSC::GCClient::IsoSubspace* JSTestSetLike::subspaceForImpl(JSC::VM& vm) 338 339 { 339 340 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 340 auto& spaces = clientData.subspaces(); 341 if (auto* space = spaces.m_subspaceForTestSetLike.get()) 342 return space; 343 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike> || !JSTestSetLike::needsDestruction); 344 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike>) 345 spaces.m_subspaceForTestSetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestSetLike); 346 else 347 spaces.m_subspaceForTestSetLike = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestSetLike); 348 auto* space = spaces.m_subspaceForTestSetLike.get(); 341 auto& clientSpaces = clientData.clientSubspaces(); 342 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSetLike.get()) 343 return clientSpace; 344 345 auto& heapData = clientData.heapData(); 346 Locker locker { heapData.lock() }; 347 348 auto& spaces = heapData.subspaces(); 349 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 350 if (!space) { 351 Heap& heap = vm.heap; 352 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike> || !JSTestSetLike::needsDestruction); 353 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLike>) 354 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSetLike); 355 else 356 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSetLike); 357 spaces.m_subspaceForTestSetLike = std::unique_ptr<IsoSubspace>(space); 349 358 IGNORE_WARNINGS_BEGIN("unreachable-code") 350 359 IGNORE_WARNINGS_BEGIN("tautological-compare") 351 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLike::visitOutputConstraints;352 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;353 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)354 clientData.outputConstraintSpaces().append(space);360 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLike::visitOutputConstraints; 361 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 362 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 363 heapData.outputConstraintSpaces().append(space); 355 364 IGNORE_WARNINGS_END 356 365 IGNORE_WARNINGS_END 357 return space; 366 } 367 368 clientSpaces.m_clientSubspaceForTestSetLike = makeUnique<JSC::GCClient::IsoSubspace>(*space); 369 return clientSpaces.m_clientSubspaceForTestSetLike.get(); 358 370 } 359 371 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLike.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 83 84 DECLARE_INFO; 84 85 template<typename CellType, JSC::SubspaceAccess> 85 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)86 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 86 87 { 87 88 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestSetLikeWithOverriddenOperationsPrototype, Base); … … 347 348 } 348 349 349 JSC:: IsoSubspace* JSTestSetLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm)350 JSC::GCClient::IsoSubspace* JSTestSetLikeWithOverriddenOperations::subspaceForImpl(JSC::VM& vm) 350 351 { 351 352 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 352 auto& spaces = clientData.subspaces(); 353 if (auto* space = spaces.m_subspaceForTestSetLikeWithOverriddenOperations.get()) 354 return space; 355 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations> || !JSTestSetLikeWithOverriddenOperations::needsDestruction); 356 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations>) 357 spaces.m_subspaceForTestSetLikeWithOverriddenOperations = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestSetLikeWithOverriddenOperations); 358 else 359 spaces.m_subspaceForTestSetLikeWithOverriddenOperations = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestSetLikeWithOverriddenOperations); 360 auto* space = spaces.m_subspaceForTestSetLikeWithOverriddenOperations.get(); 353 auto& clientSpaces = clientData.clientSubspaces(); 354 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations.get()) 355 return clientSpace; 356 357 auto& heapData = clientData.heapData(); 358 Locker locker { heapData.lock() }; 359 360 auto& spaces = heapData.subspaces(); 361 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 362 if (!space) { 363 Heap& heap = vm.heap; 364 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations> || !JSTestSetLikeWithOverriddenOperations::needsDestruction); 365 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestSetLikeWithOverriddenOperations>) 366 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestSetLikeWithOverriddenOperations); 367 else 368 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestSetLikeWithOverriddenOperations); 369 spaces.m_subspaceForTestSetLikeWithOverriddenOperations = std::unique_ptr<IsoSubspace>(space); 361 370 IGNORE_WARNINGS_BEGIN("unreachable-code") 362 371 IGNORE_WARNINGS_BEGIN("tautological-compare") 363 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLikeWithOverriddenOperations::visitOutputConstraints;364 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;365 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)366 clientData.outputConstraintSpaces().append(space);372 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestSetLikeWithOverriddenOperations::visitOutputConstraints; 373 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 374 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 375 heapData.outputConstraintSpaces().append(space); 367 376 IGNORE_WARNINGS_END 368 377 IGNORE_WARNINGS_END 369 return space; 378 } 379 380 clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations = makeUnique<JSC::GCClient::IsoSubspace>(*space); 381 return clientSpaces.m_clientSubspaceForTestSetLikeWithOverriddenOperations.get(); 370 382 } 371 383 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSetLikeWithOverriddenOperations.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 67 68 DECLARE_INFO; 68 69 template<typename CellType, JSC::SubspaceAccess> 69 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)70 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 70 71 { 71 72 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierPrototype, Base); … … 185 186 } 186 187 187 JSC:: IsoSubspace* JSTestStringifier::subspaceForImpl(JSC::VM& vm)188 JSC::GCClient::IsoSubspace* JSTestStringifier::subspaceForImpl(JSC::VM& vm) 188 189 { 189 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 190 auto& spaces = clientData.subspaces(); 191 if (auto* space = spaces.m_subspaceForTestStringifier.get()) 192 return space; 193 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier> || !JSTestStringifier::needsDestruction); 194 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier>) 195 spaces.m_subspaceForTestStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifier); 196 else 197 spaces.m_subspaceForTestStringifier = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifier); 198 auto* space = spaces.m_subspaceForTestStringifier.get(); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifier.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier> || !JSTestStringifier::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifier>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifier); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifier); 207 spaces.m_subspaceForTestStringifier = std::unique_ptr<IsoSubspace>(space); 199 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 200 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 201 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifier::visitOutputConstraints;202 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;203 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)204 clientData.outputConstraintSpaces().append(space);210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifier::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 205 214 IGNORE_WARNINGS_END 206 215 IGNORE_WARNINGS_END 207 return space; 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifier = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifier.get(); 208 220 } 209 221 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 67 68 DECLARE_INFO; 68 69 template<typename CellType, JSC::SubspaceAccess> 69 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)70 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 70 71 { 71 72 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierAnonymousOperationPrototype, Base); … … 185 186 } 186 187 187 JSC:: IsoSubspace* JSTestStringifierAnonymousOperation::subspaceForImpl(JSC::VM& vm)188 JSC::GCClient::IsoSubspace* JSTestStringifierAnonymousOperation::subspaceForImpl(JSC::VM& vm) 188 189 { 189 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 190 auto& spaces = clientData.subspaces(); 191 if (auto* space = spaces.m_subspaceForTestStringifierAnonymousOperation.get()) 192 return space; 193 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation> || !JSTestStringifierAnonymousOperation::needsDestruction); 194 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation>) 195 spaces.m_subspaceForTestStringifierAnonymousOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierAnonymousOperation); 196 else 197 spaces.m_subspaceForTestStringifierAnonymousOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierAnonymousOperation); 198 auto* space = spaces.m_subspaceForTestStringifierAnonymousOperation.get(); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation> || !JSTestStringifierAnonymousOperation::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierAnonymousOperation>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierAnonymousOperation); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierAnonymousOperation); 207 spaces.m_subspaceForTestStringifierAnonymousOperation = std::unique_ptr<IsoSubspace>(space); 199 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 200 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 201 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierAnonymousOperation::visitOutputConstraints;202 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;203 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)204 clientData.outputConstraintSpaces().append(space);210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierAnonymousOperation::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 205 214 IGNORE_WARNINGS_END 206 215 IGNORE_WARNINGS_END 207 return space; 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifierAnonymousOperation.get(); 208 220 } 209 221 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 68 69 DECLARE_INFO; 69 70 template<typename CellType, JSC::SubspaceAccess> 70 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)71 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 71 72 { 72 73 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierNamedOperationPrototype, Base); … … 202 203 } 203 204 204 JSC:: IsoSubspace* JSTestStringifierNamedOperation::subspaceForImpl(JSC::VM& vm)205 JSC::GCClient::IsoSubspace* JSTestStringifierNamedOperation::subspaceForImpl(JSC::VM& vm) 205 206 { 206 207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 207 auto& spaces = clientData.subspaces(); 208 if (auto* space = spaces.m_subspaceForTestStringifierNamedOperation.get()) 209 return space; 210 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation> || !JSTestStringifierNamedOperation::needsDestruction); 211 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation>) 212 spaces.m_subspaceForTestStringifierNamedOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierNamedOperation); 213 else 214 spaces.m_subspaceForTestStringifierNamedOperation = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierNamedOperation); 215 auto* space = spaces.m_subspaceForTestStringifierNamedOperation.get(); 208 auto& clientSpaces = clientData.clientSubspaces(); 209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierNamedOperation.get()) 210 return clientSpace; 211 212 auto& heapData = clientData.heapData(); 213 Locker locker { heapData.lock() }; 214 215 auto& spaces = heapData.subspaces(); 216 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 217 if (!space) { 218 Heap& heap = vm.heap; 219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation> || !JSTestStringifierNamedOperation::needsDestruction); 220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierNamedOperation>) 221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierNamedOperation); 222 else 223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierNamedOperation); 224 spaces.m_subspaceForTestStringifierNamedOperation = std::unique_ptr<IsoSubspace>(space); 216 225 IGNORE_WARNINGS_BEGIN("unreachable-code") 217 226 IGNORE_WARNINGS_BEGIN("tautological-compare") 218 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierNamedOperation::visitOutputConstraints;219 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;220 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)221 clientData.outputConstraintSpaces().append(space);227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierNamedOperation::visitOutputConstraints; 228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 230 heapData.outputConstraintSpaces().append(space); 222 231 IGNORE_WARNINGS_END 223 232 IGNORE_WARNINGS_END 224 return space; 233 } 234 235 clientSpaces.m_clientSubspaceForTestStringifierNamedOperation = makeUnique<JSC::GCClient::IsoSubspace>(*space); 236 return clientSpaces.m_clientSubspaceForTestStringifierNamedOperation.get(); 225 237 } 226 238 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 68 69 DECLARE_INFO; 69 70 template<typename CellType, JSC::SubspaceAccess> 70 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)71 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 71 72 { 72 73 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierOperationImplementedAsPrototype, Base); … … 202 203 } 203 204 204 JSC:: IsoSubspace* JSTestStringifierOperationImplementedAs::subspaceForImpl(JSC::VM& vm)205 JSC::GCClient::IsoSubspace* JSTestStringifierOperationImplementedAs::subspaceForImpl(JSC::VM& vm) 205 206 { 206 207 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 207 auto& spaces = clientData.subspaces(); 208 if (auto* space = spaces.m_subspaceForTestStringifierOperationImplementedAs.get()) 209 return space; 210 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs> || !JSTestStringifierOperationImplementedAs::needsDestruction); 211 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs>) 212 spaces.m_subspaceForTestStringifierOperationImplementedAs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierOperationImplementedAs); 213 else 214 spaces.m_subspaceForTestStringifierOperationImplementedAs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierOperationImplementedAs); 215 auto* space = spaces.m_subspaceForTestStringifierOperationImplementedAs.get(); 208 auto& clientSpaces = clientData.clientSubspaces(); 209 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs.get()) 210 return clientSpace; 211 212 auto& heapData = clientData.heapData(); 213 Locker locker { heapData.lock() }; 214 215 auto& spaces = heapData.subspaces(); 216 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 217 if (!space) { 218 Heap& heap = vm.heap; 219 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs> || !JSTestStringifierOperationImplementedAs::needsDestruction); 220 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationImplementedAs>) 221 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierOperationImplementedAs); 222 else 223 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierOperationImplementedAs); 224 spaces.m_subspaceForTestStringifierOperationImplementedAs = std::unique_ptr<IsoSubspace>(space); 216 225 IGNORE_WARNINGS_BEGIN("unreachable-code") 217 226 IGNORE_WARNINGS_BEGIN("tautological-compare") 218 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationImplementedAs::visitOutputConstraints;219 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;220 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)221 clientData.outputConstraintSpaces().append(space);227 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationImplementedAs::visitOutputConstraints; 228 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 229 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 230 heapData.outputConstraintSpaces().append(space); 222 231 IGNORE_WARNINGS_END 223 232 IGNORE_WARNINGS_END 224 return space; 233 } 234 235 clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs = makeUnique<JSC::GCClient::IsoSubspace>(*space); 236 return clientSpaces.m_clientSubspaceForTestStringifierOperationImplementedAs.get(); 225 237 } 226 238 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 67 68 DECLARE_INFO; 68 69 template<typename CellType, JSC::SubspaceAccess> 69 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)70 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 70 71 { 71 72 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierOperationNamedToStringPrototype, Base); … … 185 186 } 186 187 187 JSC:: IsoSubspace* JSTestStringifierOperationNamedToString::subspaceForImpl(JSC::VM& vm)188 JSC::GCClient::IsoSubspace* JSTestStringifierOperationNamedToString::subspaceForImpl(JSC::VM& vm) 188 189 { 189 190 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 190 auto& spaces = clientData.subspaces(); 191 if (auto* space = spaces.m_subspaceForTestStringifierOperationNamedToString.get()) 192 return space; 193 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString> || !JSTestStringifierOperationNamedToString::needsDestruction); 194 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString>) 195 spaces.m_subspaceForTestStringifierOperationNamedToString = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierOperationNamedToString); 196 else 197 spaces.m_subspaceForTestStringifierOperationNamedToString = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierOperationNamedToString); 198 auto* space = spaces.m_subspaceForTestStringifierOperationNamedToString.get(); 191 auto& clientSpaces = clientData.clientSubspaces(); 192 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString.get()) 193 return clientSpace; 194 195 auto& heapData = clientData.heapData(); 196 Locker locker { heapData.lock() }; 197 198 auto& spaces = heapData.subspaces(); 199 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 200 if (!space) { 201 Heap& heap = vm.heap; 202 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString> || !JSTestStringifierOperationNamedToString::needsDestruction); 203 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierOperationNamedToString>) 204 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierOperationNamedToString); 205 else 206 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierOperationNamedToString); 207 spaces.m_subspaceForTestStringifierOperationNamedToString = std::unique_ptr<IsoSubspace>(space); 199 208 IGNORE_WARNINGS_BEGIN("unreachable-code") 200 209 IGNORE_WARNINGS_BEGIN("tautological-compare") 201 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationNamedToString::visitOutputConstraints;202 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;203 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)204 clientData.outputConstraintSpaces().append(space);210 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierOperationNamedToString::visitOutputConstraints; 211 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 212 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 213 heapData.outputConstraintSpaces().append(space); 205 214 IGNORE_WARNINGS_END 206 215 IGNORE_WARNINGS_END 207 return space; 216 } 217 218 clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString = makeUnique<JSC::GCClient::IsoSubspace>(*space); 219 return clientSpaces.m_clientSubspaceForTestStringifierOperationNamedToString.get(); 208 220 } 209 221 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 69 70 DECLARE_INFO; 70 71 template<typename CellType, JSC::SubspaceAccess> 71 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)72 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 72 73 { 73 74 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierReadOnlyAttributePrototype, Base); … … 201 202 } 202 203 203 JSC:: IsoSubspace* JSTestStringifierReadOnlyAttribute::subspaceForImpl(JSC::VM& vm)204 JSC::GCClient::IsoSubspace* JSTestStringifierReadOnlyAttribute::subspaceForImpl(JSC::VM& vm) 204 205 { 205 206 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 206 auto& spaces = clientData.subspaces(); 207 if (auto* space = spaces.m_subspaceForTestStringifierReadOnlyAttribute.get()) 208 return space; 209 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute> || !JSTestStringifierReadOnlyAttribute::needsDestruction); 210 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute>) 211 spaces.m_subspaceForTestStringifierReadOnlyAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierReadOnlyAttribute); 212 else 213 spaces.m_subspaceForTestStringifierReadOnlyAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierReadOnlyAttribute); 214 auto* space = spaces.m_subspaceForTestStringifierReadOnlyAttribute.get(); 207 auto& clientSpaces = clientData.clientSubspaces(); 208 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute.get()) 209 return clientSpace; 210 211 auto& heapData = clientData.heapData(); 212 Locker locker { heapData.lock() }; 213 214 auto& spaces = heapData.subspaces(); 215 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 216 if (!space) { 217 Heap& heap = vm.heap; 218 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute> || !JSTestStringifierReadOnlyAttribute::needsDestruction); 219 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadOnlyAttribute>) 220 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierReadOnlyAttribute); 221 else 222 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierReadOnlyAttribute); 223 spaces.m_subspaceForTestStringifierReadOnlyAttribute = std::unique_ptr<IsoSubspace>(space); 215 224 IGNORE_WARNINGS_BEGIN("unreachable-code") 216 225 IGNORE_WARNINGS_BEGIN("tautological-compare") 217 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadOnlyAttribute::visitOutputConstraints;218 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;219 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)220 clientData.outputConstraintSpaces().append(space);226 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadOnlyAttribute::visitOutputConstraints; 227 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 228 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 229 heapData.outputConstraintSpaces().append(space); 221 230 IGNORE_WARNINGS_END 222 231 IGNORE_WARNINGS_END 223 return space; 232 } 233 234 clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 235 return clientSpaces.m_clientSubspaceForTestStringifierReadOnlyAttribute.get(); 224 236 } 225 237 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp ¶
r288118 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 70 71 DECLARE_INFO; 71 72 template<typename CellType, JSC::SubspaceAccess> 72 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)73 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 73 74 { 74 75 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestStringifierReadWriteAttributePrototype, Base); … … 220 221 } 221 222 222 JSC:: IsoSubspace* JSTestStringifierReadWriteAttribute::subspaceForImpl(JSC::VM& vm)223 JSC::GCClient::IsoSubspace* JSTestStringifierReadWriteAttribute::subspaceForImpl(JSC::VM& vm) 223 224 { 224 225 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 225 auto& spaces = clientData.subspaces(); 226 if (auto* space = spaces.m_subspaceForTestStringifierReadWriteAttribute.get()) 227 return space; 228 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute> || !JSTestStringifierReadWriteAttribute::needsDestruction); 229 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute>) 230 spaces.m_subspaceForTestStringifierReadWriteAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestStringifierReadWriteAttribute); 231 else 232 spaces.m_subspaceForTestStringifierReadWriteAttribute = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestStringifierReadWriteAttribute); 233 auto* space = spaces.m_subspaceForTestStringifierReadWriteAttribute.get(); 226 auto& clientSpaces = clientData.clientSubspaces(); 227 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute.get()) 228 return clientSpace; 229 230 auto& heapData = clientData.heapData(); 231 Locker locker { heapData.lock() }; 232 233 auto& spaces = heapData.subspaces(); 234 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 235 if (!space) { 236 Heap& heap = vm.heap; 237 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute> || !JSTestStringifierReadWriteAttribute::needsDestruction); 238 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestStringifierReadWriteAttribute>) 239 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestStringifierReadWriteAttribute); 240 else 241 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestStringifierReadWriteAttribute); 242 spaces.m_subspaceForTestStringifierReadWriteAttribute = std::unique_ptr<IsoSubspace>(space); 234 243 IGNORE_WARNINGS_BEGIN("unreachable-code") 235 244 IGNORE_WARNINGS_BEGIN("tautological-compare") 236 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadWriteAttribute::visitOutputConstraints;237 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;238 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)239 clientData.outputConstraintSpaces().append(space);245 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestStringifierReadWriteAttribute::visitOutputConstraints; 246 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 247 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 248 heapData.outputConstraintSpaces().append(space); 240 249 IGNORE_WARNINGS_END 241 250 IGNORE_WARNINGS_END 242 return space; 251 } 252 253 clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute = makeUnique<JSC::GCClient::IsoSubspace>(*space); 254 return clientSpaces.m_clientSubspaceForTestStringifierReadWriteAttribute.get(); 243 255 } 244 256 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTaggedWrapper.cpp ¶
r289531 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMBinding.h" … … 61 62 DECLARE_INFO; 62 63 template<typename CellType, JSC::SubspaceAccess> 63 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)64 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 64 65 { 65 66 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestTaggedWrapperPrototype, Base); … … 163 164 } 164 165 165 JSC:: IsoSubspace* JSTestTaggedWrapper::subspaceForImpl(JSC::VM& vm)166 JSC::GCClient::IsoSubspace* JSTestTaggedWrapper::subspaceForImpl(JSC::VM& vm) 166 167 { 167 168 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 168 auto& spaces = clientData.subspaces(); 169 if (auto* space = spaces.m_subspaceForTestTaggedWrapper.get()) 170 return space; 171 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper> || !JSTestTaggedWrapper::needsDestruction); 172 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper>) 173 spaces.m_subspaceForTestTaggedWrapper = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestTaggedWrapper); 174 else 175 spaces.m_subspaceForTestTaggedWrapper = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestTaggedWrapper); 176 auto* space = spaces.m_subspaceForTestTaggedWrapper.get(); 169 auto& clientSpaces = clientData.clientSubspaces(); 170 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestTaggedWrapper.get()) 171 return clientSpace; 172 173 auto& heapData = clientData.heapData(); 174 Locker locker { heapData.lock() }; 175 176 auto& spaces = heapData.subspaces(); 177 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 178 if (!space) { 179 Heap& heap = vm.heap; 180 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper> || !JSTestTaggedWrapper::needsDestruction); 181 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTaggedWrapper>) 182 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestTaggedWrapper); 183 else 184 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestTaggedWrapper); 185 spaces.m_subspaceForTestTaggedWrapper = std::unique_ptr<IsoSubspace>(space); 177 186 IGNORE_WARNINGS_BEGIN("unreachable-code") 178 187 IGNORE_WARNINGS_BEGIN("tautological-compare") 179 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTaggedWrapper::visitOutputConstraints;180 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;181 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)182 clientData.outputConstraintSpaces().append(space);188 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTaggedWrapper::visitOutputConstraints; 189 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 190 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 191 heapData.outputConstraintSpaces().append(space); 183 192 IGNORE_WARNINGS_END 184 193 IGNORE_WARNINGS_END 185 return space; 194 } 195 196 clientSpaces.m_clientSubspaceForTestTaggedWrapper = makeUnique<JSC::GCClient::IsoSubspace>(*space); 197 return clientSpaces.m_clientSubspaceForTestTaggedWrapper.get(); 186 198 } 187 199 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTaggedWrapper.h ¶
r289531 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 protected: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp ¶
r288307 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "IDLTypes.h" … … 114 115 DECLARE_INFO; 115 116 template<typename CellType, JSC::SubspaceAccess> 116 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)117 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 117 118 { 118 119 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSTestTypedefsPrototype, Base); … … 773 774 } 774 775 775 JSC:: IsoSubspace* JSTestTypedefs::subspaceForImpl(JSC::VM& vm)776 JSC::GCClient::IsoSubspace* JSTestTypedefs::subspaceForImpl(JSC::VM& vm) 776 777 { 777 778 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 778 auto& spaces = clientData.subspaces(); 779 if (auto* space = spaces.m_subspaceForTestTypedefs.get()) 780 return space; 781 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs> || !JSTestTypedefs::needsDestruction); 782 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs>) 783 spaces.m_subspaceForTestTypedefs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.destructibleObjectHeapCellType(), JSTestTypedefs); 784 else 785 spaces.m_subspaceForTestTypedefs = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, vm.cellHeapCellType(), JSTestTypedefs); 786 auto* space = spaces.m_subspaceForTestTypedefs.get(); 779 auto& clientSpaces = clientData.clientSubspaces(); 780 if (auto* clientSpace = clientSpaces.m_clientSubspaceForTestTypedefs.get()) 781 return clientSpace; 782 783 auto& heapData = clientData.heapData(); 784 Locker locker { heapData.lock() }; 785 786 auto& spaces = heapData.subspaces(); 787 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 788 if (!space) { 789 Heap& heap = vm.heap; 790 static_assert(std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs> || !JSTestTypedefs::needsDestruction); 791 if constexpr (std::is_base_of_v<JSC::JSDestructibleObject, JSTestTypedefs>) 792 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.destructibleObjectHeapCellType, JSTestTypedefs); 793 else 794 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSTestTypedefs); 795 spaces.m_subspaceForTestTypedefs = std::unique_ptr<IsoSubspace>(space); 787 796 IGNORE_WARNINGS_BEGIN("unreachable-code") 788 797 IGNORE_WARNINGS_BEGIN("tautological-compare") 789 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTypedefs::visitOutputConstraints;790 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;791 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)792 clientData.outputConstraintSpaces().append(space);798 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSTestTypedefs::visitOutputConstraints; 799 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 800 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 801 heapData.outputConstraintSpaces().append(space); 793 802 IGNORE_WARNINGS_END 794 803 IGNORE_WARNINGS_END 795 return space; 804 } 805 806 clientSpaces.m_clientSubspaceForTestTypedefs = makeUnique<JSC::GCClient::IsoSubspace>(*space); 807 return clientSpaces.m_clientSubspaceForTestTypedefs.get(); 796 808 } 797 809 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h ¶
r285730 r290129 50 50 51 51 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 52 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)52 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 53 53 { 54 54 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 56 56 return subspaceForImpl(vm); 57 57 } 58 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);58 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 59 59 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 60 60 public: -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 244 245 } 245 246 246 JSC:: IsoSubspace* JSWorkerGlobalScope::subspaceForImpl(JSC::VM& vm)247 JSC::GCClient::IsoSubspace* JSWorkerGlobalScope::subspaceForImpl(JSC::VM& vm) 247 248 { 248 249 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 249 auto& spaces = clientData.subspaces(); 250 if (auto* space = spaces.m_subspaceForWorkerGlobalScope.get()) 251 return space; 252 spaces.m_subspaceForWorkerGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSWorkerGlobalScope, JSWorkerGlobalScope); 253 auto* space = spaces.m_subspaceForWorkerGlobalScope.get(); 250 auto& clientSpaces = clientData.clientSubspaces(); 251 if (auto* clientSpace = clientSpaces.m_clientSubspaceForWorkerGlobalScope.get()) 252 return clientSpace; 253 254 auto& heapData = clientData.heapData(); 255 Locker locker { heapData.lock() }; 256 257 auto& spaces = heapData.subspaces(); 258 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 259 if (!space) { 260 Heap& heap = vm.heap; 261 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSWorkerGlobalScope, JSWorkerGlobalScope); 262 spaces.m_subspaceForWorkerGlobalScope = std::unique_ptr<IsoSubspace>(space); 254 263 IGNORE_WARNINGS_BEGIN("unreachable-code") 255 264 IGNORE_WARNINGS_BEGIN("tautological-compare") 256 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkerGlobalScope::visitOutputConstraints;257 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;258 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)259 clientData.outputConstraintSpaces().append(space);265 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkerGlobalScope::visitOutputConstraints; 266 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 267 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 268 heapData.outputConstraintSpaces().append(space); 260 269 IGNORE_WARNINGS_END 261 270 IGNORE_WARNINGS_END 262 return space; 271 } 272 273 clientSpaces.m_clientSubspaceForWorkerGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 274 return clientSpaces.m_clientSubspaceForWorkerGlobalScope.get(); 263 275 } 264 276 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkerGlobalScope.h ¶
r286347 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 WorkerGlobalScope& wrapped() const … … 83 83 DECLARE_INFO; 84 84 template<typename CellType, JSC::SubspaceAccess> 85 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)85 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 86 86 { 87 87 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSWorkerGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.cpp ¶
r286347 r290129 23 23 24 24 #include "ActiveDOMObject.h" 25 #include "DOMClientIsoSubspaces.h" 25 26 #include "DOMIsoSubspaces.h" 26 27 #include "JSDOMAttribute.h" … … 158 159 } 159 160 160 JSC:: IsoSubspace* JSWorkletGlobalScope::subspaceForImpl(JSC::VM& vm)161 JSC::GCClient::IsoSubspace* JSWorkletGlobalScope::subspaceForImpl(JSC::VM& vm) 161 162 { 162 163 auto& clientData = *static_cast<JSVMClientData*>(vm.clientData); 163 auto& spaces = clientData.subspaces(); 164 if (auto* space = spaces.m_subspaceForWorkletGlobalScope.get()) 165 return space; 166 spaces.m_subspaceForWorkletGlobalScope = makeUnique<IsoSubspace> ISO_SUBSPACE_INIT(vm.heap, clientData.m_heapCellTypeForJSWorkletGlobalScope, JSWorkletGlobalScope); 167 auto* space = spaces.m_subspaceForWorkletGlobalScope.get(); 164 auto& clientSpaces = clientData.clientSubspaces(); 165 if (auto* clientSpace = clientSpaces.m_clientSubspaceForWorkletGlobalScope.get()) 166 return clientSpace; 167 168 auto& heapData = clientData.heapData(); 169 Locker locker { heapData.lock() }; 170 171 auto& spaces = heapData.subspaces(); 172 IsoSubspace* space = spaces.m_subspaceForGPUMapMode.get(); 173 if (!space) { 174 Heap& heap = vm.heap; 175 space = new IsoSubspace ISO_SUBSPACE_INIT(heap, heapData.m_heapCellTypeForJSWorkletGlobalScope, JSWorkletGlobalScope); 176 spaces.m_subspaceForWorkletGlobalScope = std::unique_ptr<IsoSubspace>(space); 168 177 IGNORE_WARNINGS_BEGIN("unreachable-code") 169 178 IGNORE_WARNINGS_BEGIN("tautological-compare") 170 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkletGlobalScope::visitOutputConstraints;171 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints;172 if (myVisitOutputConstraint != jsCellVisitOutputConstraint)173 clientData.outputConstraintSpaces().append(space);179 void (*myVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSWorkletGlobalScope::visitOutputConstraints; 180 void (*jsCellVisitOutputConstraint)(JSC::JSCell*, JSC::SlotVisitor&) = JSC::JSCell::visitOutputConstraints; 181 if (myVisitOutputConstraint != jsCellVisitOutputConstraint) 182 heapData.outputConstraintSpaces().append(space); 174 183 IGNORE_WARNINGS_END 175 184 IGNORE_WARNINGS_END 176 return space; 185 } 186 187 clientSpaces.m_clientSubspaceForWorkletGlobalScope = makeUnique<JSC::GCClient::IsoSubspace>(*space); 188 return clientSpaces.m_clientSubspaceForWorkletGlobalScope.get(); 177 189 } 178 190 -
TabularUnified trunk/Source/WebCore/bindings/scripts/test/JS/JSWorkletGlobalScope.h ¶
r286347 r290129 51 51 52 52 static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*); 53 template<typename, JSC::SubspaceAccess mode> static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)53 template<typename, JSC::SubspaceAccess mode> static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 54 54 { 55 55 if constexpr (mode == JSC::SubspaceAccess::Concurrently) … … 57 57 return subspaceForImpl(vm); 58 58 } 59 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM& vm);59 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM& vm); 60 60 static void analyzeHeap(JSCell*, JSC::HeapAnalyzer&); 61 61 WorkletGlobalScope& wrapped() const … … 83 83 DECLARE_INFO; 84 84 template<typename CellType, JSC::SubspaceAccess> 85 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)85 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 86 86 { 87 87 STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(JSWorkletGlobalScopePrototype, Base); -
TabularUnified trunk/Source/WebCore/bridge/objc/objc_runtime.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2004-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2004-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 96 96 97 97 template<typename CellType, JSC::SubspaceAccess> 98 static IsoSubspace* subspaceFor(JSC::VM& vm)98 static GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 99 99 { 100 100 return subspaceForImpl(vm); … … 139 139 bool toBoolean(JSGlobalObject*) const; // FIXME: Currently this is broken because none of the superclasses are marked virtual. We need to solve this in the longer term. 140 140 141 static IsoSubspace* subspaceForImpl(VM&);141 static GCClient::IsoSubspace* subspaceForImpl(VM&); 142 142 143 143 RefPtr<ObjcInstance> _instance; -
TabularUnified trunk/Source/WebCore/bridge/objc/objc_runtime.mm ¶
r286347 r290129 1 1 /* 2 * Copyright (C) 2004-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2004-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 333 333 } 334 334 335 JSC:: IsoSubspace* ObjcFallbackObjectImp::subspaceForImpl(JSC::VM& vm)336 { 337 static NeverDestroyed<JSC::IsoSubspacePerVM> perVM([] (JSC:: VM& vm) {338 return ISO_SUBSPACE_PARAMETERS( vm.destructibleObjectHeapCellType(), ObjcFallbackObjectImp);335 JSC::GCClient::IsoSubspace* ObjcFallbackObjectImp::subspaceForImpl(JSC::VM& vm) 336 { 337 static NeverDestroyed<JSC::IsoSubspacePerVM> perVM([] (JSC::Heap& heap) { 338 return ISO_SUBSPACE_PARAMETERS(heap.destructibleObjectHeapCellType, ObjcFallbackObjectImp); 339 339 }); 340 return &perVM.get(). forVM(vm);341 } 342 343 } 344 } 340 return &perVM.get().clientIsoSubspaceforVM(vm); 341 } 342 343 } // namespace Bindings 344 } // namespace JSC -
TabularUnified trunk/Source/WebCore/bridge/runtime_array.cpp ¶
r278253 r290129 1 1 /* 2 * Copyright (C) 2003-20 19Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 162 162 } 163 163 164 JSC:: IsoSubspace* RuntimeArray::subspaceForImpl(JSC::VM& vm)164 JSC::GCClient::IsoSubspace* RuntimeArray::subspaceForImpl(JSC::VM& vm) 165 165 { 166 166 return &static_cast<JSVMClientData*>(vm.clientData)->runtimeArraySpace(); -
TabularUnified trunk/Source/WebCore/bridge/runtime_array.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 40 40 41 41 template<typename CellType, JSC::SubspaceAccess> 42 static JSC:: IsoSubspace* subspaceFor(JSC::VM& vm)42 static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 43 43 { 44 44 return subspaceForImpl(vm); … … 89 89 void finishCreation(VM&, Bindings::Array*); 90 90 91 static JSC:: IsoSubspace* subspaceForImpl(JSC::VM&);91 static JSC::GCClient::IsoSubspace* subspaceForImpl(JSC::VM&); 92 92 93 93 BindingsArray* m_array; -
TabularUnified trunk/Source/WebCore/bridge/runtime_method.cpp ¶
r267727 r290129 1 1 /* 2 * Copyright (C) 2003-20 18Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 83 83 } 84 84 85 IsoSubspace* RuntimeMethod::subspaceForImpl(VM& vm)85 GCClient::IsoSubspace* RuntimeMethod::subspaceForImpl(VM& vm) 86 86 { 87 87 return &static_cast<JSVMClientData*>(vm.clientData)->runtimeMethodSpace(); -
TabularUnified trunk/Source/WebCore/bridge/runtime_method.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 39 39 40 40 template<typename CellType, JSC::SubspaceAccess> 41 static IsoSubspace* subspaceFor(JSC::VM& vm)41 static GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 42 42 { 43 43 static_assert(sizeof(CellType) == sizeof(RuntimeMethod), "RuntimeMethod subclasses that add fields need to override subspaceFor<>()"); … … 75 75 76 76 private: 77 static IsoSubspace* subspaceForImpl(VM&);77 static GCClient::IsoSubspace* subspaceForImpl(VM&); 78 78 79 79 Bindings::Method* m_method; -
TabularUnified trunk/Source/WebCore/bridge/runtime_object.cpp ¶
r282784 r290129 1 1 /* 2 * Copyright (C) 2003 , 2008-2009, 2016Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 314 314 } 315 315 316 JSC:: IsoSubspace* RuntimeObject::subspaceForImpl(JSC::VM& vm)316 JSC::GCClient::IsoSubspace* RuntimeObject::subspaceForImpl(JSC::VM& vm) 317 317 { 318 318 return &static_cast<JSVMClientData*>(vm.clientData)->runtimeObjectSpace(); -
TabularUnified trunk/Source/WebCore/bridge/runtime_object.h ¶
r285730 r290129 1 1 /* 2 * Copyright (C) 2003-202 1Apple Inc. All rights reserved.2 * Copyright (C) 2003-2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 42 42 43 43 template<typename CellType, JSC::SubspaceAccess> 44 static IsoSubspace* subspaceFor(JSC::VM& vm)44 static GCClient::IsoSubspace* subspaceFor(JSC::VM& vm) 45 45 { 46 46 static_assert(sizeof(CellType) == sizeof(RuntimeObject), "RuntimeObject subclasses that add fields need to override subspaceFor<>()"); … … 87 87 88 88 private: 89 static IsoSubspace* subspaceForImpl(VM&);89 static GCClient::IsoSubspace* subspaceForImpl(VM&); 90 90 91 91 RefPtr<Instance> m_instance;
Note:
See TracChangeset
for help on using the changeset viewer.