aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/napi.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-26 18:28:01 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-26 18:28:01 -0700
commit975477d0f0acf7b4aec915a93fe83ba39382dd72 (patch)
tree78ec5e1af2724edfda30d0d8ed44b854cdfe0505 /src/bun.js/bindings/napi.cpp
parent1580b5fb56143d494ea2307ce49a588c8fc463d4 (diff)
downloadbun-975477d0f0acf7b4aec915a93fe83ba39382dd72.tar.gz
bun-975477d0f0acf7b4aec915a93fe83ba39382dd72.tar.zst
bun-975477d0f0acf7b4aec915a93fe83ba39382dd72.zip
Implement `napi_add_finalizer`
Diffstat (limited to 'src/bun.js/bindings/napi.cpp')
-rw-r--r--src/bun.js/bindings/napi.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp
index 65ffc7704..35708eb93 100644
--- a/src/bun.js/bindings/napi.cpp
+++ b/src/bun.js/bindings/napi.cpp
@@ -727,6 +727,19 @@ extern "C" napi_status napi_add_finalizer(napi_env env, napi_value js_object,
void* finalize_hint,
napi_ref* result)
{
+ Zig::GlobalObject* globalObject = toJS(env);
+ JSC::VM& vm = globalObject->vm();
+
+ JSC::JSValue objectValue = toJS(js_object);
+ JSC::JSObject* object = objectValue.getObject();
+ if (!object) {
+ return napi_object_expected;
+ }
+
+ vm.heap.addFinalizer(object, [&](JSCell* cell) -> void {
+ finalize_cb(env, native_object, finalize_hint);
+ });
+
return napi_ok;
}