diff options
author | 2022-03-27 02:42:02 -0700 | |
---|---|---|
committer | 2022-03-27 02:45:30 -0700 | |
commit | 309350e74cf0bf854c0148b627f6df8b5282ad2f (patch) | |
tree | e698660375ef137b1b16b06ba5c474fed18ce65b /src/javascript/jsc/bindings/BunClientData.cpp | |
parent | 0132b7164e956d56bf74dd8c45ad4cf90769961b (diff) | |
download | bun-309350e74cf0bf854c0148b627f6df8b5282ad2f.tar.gz bun-309350e74cf0bf854c0148b627f6df8b5282ad2f.tar.zst bun-309350e74cf0bf854c0148b627f6df8b5282ad2f.zip |
[bun.js] begin the webkit-ing
Diffstat (limited to 'src/javascript/jsc/bindings/BunClientData.cpp')
-rw-r--r-- | src/javascript/jsc/bindings/BunClientData.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/javascript/jsc/bindings/BunClientData.cpp b/src/javascript/jsc/bindings/BunClientData.cpp index 21db7cb7f..0bda7dd69 100644 --- a/src/javascript/jsc/bindings/BunClientData.cpp +++ b/src/javascript/jsc/bindings/BunClientData.cpp @@ -2,6 +2,7 @@ #include "BunClientData.h" #include "root.h" +#include "JSDOMURL.h" #include <JavaScriptCore/FastMallocAlignedMemoryAllocator.h> #include <JavaScriptCore/HeapInlines.h> #include <JavaScriptCore/IsoHeapCellType.h> @@ -15,10 +16,35 @@ namespace Bun { using namespace JSC; +using namespace WebCore; + +class ExtendedDOMClientIsoSubspaces; +class ExtendedDOMIsoSubspaces; + +#define CLIENT_ISO_SUBSPACE_INIT(subspace) subspace(m_heapData->subspace) +JSHeapData::JSHeapData(Heap& heap) + : m_domNamespaceObjectSpace ISO_SUBSPACE_INIT(heap, heap.cellHeapCellType, JSDOMObject) + +{ +} JSVMClientData::JSVMClientData(VM& vm) : m_builtinNames(vm) + , m_heapData(JSHeapData::ensureHeapData(vm.heap)) +{ +} + +JSHeapData* JSHeapData::ensureHeapData(Heap& heap) { + if (!Options::useGlobalGC()) + return new JSHeapData(heap); + + static JSHeapData* singleton = nullptr; + static std::once_flag onceFlag; + std::call_once(onceFlag, [&] { + singleton = new JSHeapData(heap); + }); + return singleton; } JSVMClientData::~JSVMClientData() {} @@ -28,7 +54,7 @@ void JSVMClientData::create(VM* vm) JSVMClientData* clientData = new JSVMClientData(*vm); vm->clientData = clientData; // ~VM deletes this pointer. - // vm->heap.addMarkingConstraint(makeUnique<BunGCOutputConstraint>(*vm, *clientData)); + // vm->heap.addMarkingConstraint(makeUnique<BunGCOutputConstraint>(*vm, *clientData)); // vm->m_typedArrayController = adoptRef(new WebCoreTypedArrayController( // type == WorkerThreadType::DedicatedWorker || type == WorkerThreadType::Worklet)); |