From 2c762f47c9c8ece73ce6d430e7814cac9e031bab Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Thu, 6 Oct 2022 00:47:03 -0700 Subject: Add simple Hot Module Reloading to bun's runtime --- src/bun.js/bindings/ZigGlobalObject.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp') diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 5b716ef79..f9ee0117a 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -2738,6 +2738,24 @@ DEFINE_VISIT_CHILDREN(GlobalObject); // DEFINE_VISIT_CHILDREN(Zig::GlobalObject); +void GlobalObject::reload() +{ + JSModuleLoader* moduleLoader = this->moduleLoader(); + JSC::JSMap* registry = jsCast(moduleLoader->get( + this, + Identifier::fromString(this->vm(), "registry"_s))); + + registry->clear(this->vm()); + this->requireMap()->clear(this->vm()); + this->vm().heap.collectSync(); +} + +extern "C" void JSC__JSGlobalObject__reload(JSC__JSGlobalObject* arg0) +{ + Zig::GlobalObject* globalObject = reinterpret_cast(arg0); + globalObject->reload(); +} + JSC::Identifier GlobalObject::moduleLoaderResolve(JSGlobalObject* globalObject, JSModuleLoader* loader, JSValue key, JSValue referrer, JSValue origin) -- cgit v1.2.3