diff options
| author | 2022-08-26 18:28:01 -0700 | |
|---|---|---|
| committer | 2022-08-26 18:28:01 -0700 | |
| commit | 975477d0f0acf7b4aec915a93fe83ba39382dd72 (patch) | |
| tree | 78ec5e1af2724edfda30d0d8ed44b854cdfe0505 /src/bun.js/bindings/napi.cpp | |
| parent | 1580b5fb56143d494ea2307ce49a588c8fc463d4 (diff) | |
| download | bun-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.cpp | 13 |
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; } |
