aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/CommonJSModuleRecord.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/CommonJSModuleRecord.h')
-rw-r--r--src/bun.js/bindings/CommonJSModuleRecord.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/bun.js/bindings/CommonJSModuleRecord.h b/src/bun.js/bindings/CommonJSModuleRecord.h
index 2f9ba648f..37353978e 100644
--- a/src/bun.js/bindings/CommonJSModuleRecord.h
+++ b/src/bun.js/bindings/CommonJSModuleRecord.h
@@ -72,11 +72,21 @@ public:
JSValue exportsObject();
JSValue id();
+ DECLARE_INFO;
DECLARE_VISIT_CHILDREN;
- DECLARE_INFO;
template<typename, SubspaceAccess mode>
- static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm);
+ static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
+ {
+ if constexpr (mode == JSC::SubspaceAccess::Concurrently)
+ return nullptr;
+ return WebCore::subspaceForImpl<JSCommonJSModule, WebCore::UseCustomHeapCellType::No>(
+ vm,
+ [](auto& spaces) { return spaces.m_clientSubspaceForCommonJSModuleRecord.get(); },
+ [](auto& spaces, auto&& space) { spaces.m_clientSubspaceForCommonJSModuleRecord = std::forward<decltype(space)>(space); },
+ [](auto& spaces) { return spaces.m_subspaceForCommonJSModuleRecord.get(); },
+ [](auto& spaces, auto&& space) { spaces.m_subspaceForCommonJSModuleRecord = std::forward<decltype(space)>(space); });
+ }
bool hasEvaluated = false;
@@ -110,7 +120,9 @@ inline std::optional<JSC::SourceCode> createCommonJSModule(
class RequireResolveFunctionPrototype final : public JSC::JSNonFinalObject {
public:
using Base = JSC::JSNonFinalObject;
+
static RequireResolveFunctionPrototype* create(JSC::JSGlobalObject* globalObject);
+ static Structure* createStructure(VM& vm, JSC::JSGlobalObject* globalObject);
DECLARE_INFO;
@@ -124,6 +136,7 @@ public:
template<typename CellType, JSC::SubspaceAccess>
static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
{
+ STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(RequireResolveFunctionPrototype, Base);
return &vm.plainObjectSpace();
}
@@ -133,7 +146,11 @@ public:
class RequireFunctionPrototype final : public JSC::JSNonFinalObject {
public:
using Base = JSC::JSNonFinalObject;
+
static RequireFunctionPrototype* create(JSC::JSGlobalObject* globalObject);
+ static Structure* createStructure(VM& vm, JSC::JSGlobalObject* globalObject);
+
+ DECLARE_INFO;
RequireFunctionPrototype(
JSC::VM& vm,
@@ -145,12 +162,11 @@ public:
template<typename CellType, JSC::SubspaceAccess>
static JSC::GCClient::IsoSubspace* subspaceFor(JSC::VM& vm)
{
+ STATIC_ASSERT_ISO_SUBSPACE_SHARABLE(RequireFunctionPrototype, Base);
return &vm.plainObjectSpace();
}
- DECLARE_INFO;
-
- void finishCreation(JSC::VM& vm);
+ void finishCreation(JSC::VM&);
};
} // namespace Bun