aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-06 00:47:03 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-10-06 00:47:03 -0700
commit2c762f47c9c8ece73ce6d430e7814cac9e031bab (patch)
tree55145a5536201b26c51e347bbc78b86668182085 /src/bun.js/bindings/ZigGlobalObject.cpp
parent3246efa5809c3bd031e1d08863e4b06beedd318e (diff)
downloadbun-2c762f47c9c8ece73ce6d430e7814cac9e031bab.tar.gz
bun-2c762f47c9c8ece73ce6d430e7814cac9e031bab.tar.zst
bun-2c762f47c9c8ece73ce6d430e7814cac9e031bab.zip
Add simple Hot Module Reloading to bun's runtime
Diffstat (limited to 'src/bun.js/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/bun.js/bindings/ZigGlobalObject.cpp18
1 files changed, 18 insertions, 0 deletions
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<JSC::JSMap*>(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<Zig::GlobalObject*>(arg0);
+ globalObject->reload();
+}
+
JSC::Identifier GlobalObject::moduleLoaderResolve(JSGlobalObject* globalObject,
JSModuleLoader* loader, JSValue key,
JSValue referrer, JSValue origin)