aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/BunClientData.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-27 02:42:02 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-27 02:45:30 -0700
commit309350e74cf0bf854c0148b627f6df8b5282ad2f (patch)
treee698660375ef137b1b16b06ba5c474fed18ce65b /src/javascript/jsc/bindings/BunClientData.cpp
parent0132b7164e956d56bf74dd8c45ad4cf90769961b (diff)
downloadbun-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.cpp28
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));