diff options
author | 2022-11-10 15:05:06 -0800 | |
---|---|---|
committer | 2022-11-10 15:05:23 -0800 | |
commit | dddbce8a41aa266af106b19e583c152126900730 (patch) | |
tree | 0940f99ea3dca7b43764a47b5cc1e9849981da3c /src/bun.js/bindings/napi_external.cpp | |
parent | 7ce8328d28f415fd89cc025121b774d7a6e4661e (diff) | |
download | bun-dddbce8a41aa266af106b19e583c152126900730.tar.gz bun-dddbce8a41aa266af106b19e583c152126900730.tar.zst bun-dddbce8a41aa266af106b19e583c152126900730.zip |
Implement `napi_create_external` and `napi_get_value_external`
Diffstat (limited to 'src/bun.js/bindings/napi_external.cpp')
-rw-r--r-- | src/bun.js/bindings/napi_external.cpp | 60 |
1 files changed, 15 insertions, 45 deletions
diff --git a/src/bun.js/bindings/napi_external.cpp b/src/bun.js/bindings/napi_external.cpp index 15e46aa97..eb5786b6f 100644 --- a/src/bun.js/bindings/napi_external.cpp +++ b/src/bun.js/bindings/napi_external.cpp @@ -1,50 +1,20 @@ +#include "napi_external.h" +#include "napi.h" +namespace Bun { -// #pragma once +NapiExternal::~NapiExternal() +{ + if (finalizer) { + finalizer(toNapi(globalObject()), m_value, m_finalizerHint); + } +} -// #include "root.h" +void NapiExternal::destroy(JSC::JSCell* cell) +{ + jsCast<NapiExternal*>(cell)->~NapiExternal(); +} -// #include "BunBuiltinNames.h" -// #include "BunClientData.h" +const ClassInfo NapiExternal::s_info = { "External"_s, &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(NapiExternal) }; -// namespace Zig { - -// using namespace JSC; - -// class NapiExternal : public JSC::JSNonFinalObject { -// using Base = JSC::JSNonFinalObject; - -// public: -// NapiExternal(JSC::VM& vm, JSC::Structure* structure) -// : Base(vm, structure) -// { -// } - -// DECLARE_INFO; - -// static constexpr unsigned StructureFlags = Base::StructureFlags; - -// template<typename CellType, SubspaceAccess> static GCClient::IsoSubspace* subspaceFor(VM& vm) -// { -// return &vm.plainObjectSpace(); -// } - -// static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, -// JSC::JSValue prototype) -// { -// return JSC::Structure::create(vm, globalObject, prototype, -// JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); -// } - -// static NapiExternal* create(JSC::VM& vm, JSC::Structure* structure) -// { -// NapiExternal* accessor = new (NotNull, JSC::allocateCell<NapiExternal>(vm)) NapiExternal(vm, structure); -// accessor->finishCreation(vm); -// return accessor; -// } - -// void finishCreation(JSC::VM& vm); -// void* m_value; -// }; - -// } // namespace Zig
\ No newline at end of file +}
\ No newline at end of file |