aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/napi_external.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-10 15:05:06 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-10 15:05:23 -0800
commitdddbce8a41aa266af106b19e583c152126900730 (patch)
tree0940f99ea3dca7b43764a47b5cc1e9849981da3c /src/bun.js/bindings/napi_external.cpp
parent7ce8328d28f415fd89cc025121b774d7a6e4661e (diff)
downloadbun-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.cpp60
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