Skip to content

Commit 2bf90d4

Browse files
committed
NAPI_MODULE to use napi_module_register_by_symbol
1 parent fc8ae60 commit 2bf90d4

File tree

10 files changed

+42
-55
lines changed

10 files changed

+42
-55
lines changed

β€Žsrc/js_native_api_v8.ccβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2496,7 +2496,7 @@ napi_status NAPI_CDECL napi_create_reference(napi_env env,
24962496
CHECK_ARG(env, result);
24972497

24982498
v8::Local<v8::Value> v8_value = v8impl::V8LocalValueFromJsValue(value);
2499-
if (env->node_api_version > 8) {
2499+
if (env->node_api_version <= 8) {
25002500
if (!(v8_value->IsObject() || v8_value->IsFunction() ||
25012501
v8_value->IsSymbol())) {
25022502
return napi_set_last_error(env, napi_invalid_arg);

β€Žsrc/node_api.ccβ€Ž

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -603,11 +603,12 @@ static void napi_module_register_cb(v8::Local<v8::Object> exports,
603603
static_cast<const napi_module*>(priv)->nm_api_version_func);
604604
}
605605

606-
void napi_module_register_by_symbol(v8::Local<v8::Object> exports,
607-
v8::Local<v8::Value> module,
608-
v8::Local<v8::Context> context,
609-
napi_addon_register_func init,
610-
napi_addon_api_version_func get_api_version) {
606+
void napi_module_register_by_symbol(
607+
v8::Local<v8::Object> exports,
608+
v8::Local<v8::Value> module,
609+
v8::Local<v8::Context> context,
610+
napi_addon_register_func init,
611+
napi_addon_api_version_func get_api_version) {
611612
node::Environment* node_env = node::Environment::GetCurrent(context);
612613
std::string module_filename = "";
613614
if (init == nullptr) {

β€Žsrc/node_api.hβ€Ž

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ struct uv_loop_s; // Forward declaration.
3131
typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env,
3232
napi_value exports);
3333

34-
typedef napi_value(NAPI_CDECL* napi_addon_api_version_func)();
34+
typedef int32_t(NAPI_CDECL* napi_addon_api_version_func)();
3535

3636
typedef struct napi_module {
3737
int nm_version;
@@ -88,19 +88,20 @@ typedef struct napi_module {
8888
apiversionfunc, \
8989
{0}, \
9090
}; \
91-
NAPI_C_CTOR(_register_##modname) { \
92-
napi_module_register(&_module); \
93-
} \
91+
NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
9492
EXTERN_C_END
9593

96-
#define NAPI_MODULE_INITIALIZER_X(base, version) \
97-
NAPI_MODULE_INITIALIZER_X_HELPER(base, version)
98-
#define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version
94+
#define NAPI_CONCAT_HELPER(text1, text2) text1##text2
95+
#define NAPI_CONCAT(text1, text2) NAPI_CONCAT_HELPER(text1, text2)
9996

97+
#define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
10098
#define NAPI_MODULE_API_VERSION_BASE napi_module_api_version_v
10199

100+
#define NAPI_MODULE_INITIALIZER \
101+
NAPI_CONCAT(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
102+
102103
#define NAPI_MODULE_API_VERSION \
103-
NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_API_VERSION_BASE, NAPI_MODULE_VERSION)
104+
NAPI_CONCAT(NAPI_MODULE_API_VERSION_BASE, NAPI_MODULE_VERSION)
104105

105106
#define NAPI_MODULE_X(modname, regfunc, priv, flags) \
106107
EXTERN_C_START \
@@ -110,11 +111,21 @@ typedef struct napi_module {
110111
EXTERN_C_END \
111112
NAPI_MODULE_XV(modname, regfunc, NAPI_MODULE_API_VERSION, priv, flags)
112113

114+
#define NAPI_MODULE_INIT() \
115+
EXTERN_C_START \
116+
NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
117+
napi_value exports); \
118+
NAPI_MODULE_EXPORT int32_t NAPI_MODULE_API_VERSION() { \
119+
return NAPI_VERSION; \
120+
} \
121+
EXTERN_C_END \
122+
napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
123+
113124
#ifdef __wasm32__
114125
#define NAPI_WASM_INITIALIZER \
115-
NAPI_MODULE_INITIALIZER_X(napi_register_wasm_v, NAPI_MODULE_VERSION)
126+
NAPI_CONCAT(napi_register_wasm_v, NAPI_MODULE_VERSION)
116127
#define NAPI_WASM_API_VERSION \
117-
NAPI_MODULE_INITIALIZER_X(napi_wasm_api_version_v, NAPI_MODULE_VERSION)
128+
NAPI_CONCAT(napi_wasm_api_version_v, NAPI_MODULE_VERSION)
118129
#define NAPI_MODULE(modname, regfunc) \
119130
EXTERN_C_START \
120131
NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \
@@ -127,21 +138,11 @@ typedef struct napi_module {
127138
EXTERN_C_END
128139
#else
129140
#define NAPI_MODULE(modname, regfunc) \
130-
NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
131-
#endif
132-
133-
#define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
134-
135-
#define NAPI_MODULE_INITIALIZER \
136-
NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
141+
NAPI_MODULE_INIT() { \
142+
return regfunc(env, exports); \
143+
}
137144

138-
#define NAPI_MODULE_INIT() \
139-
EXTERN_C_START \
140-
NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
141-
napi_value exports); \
142-
EXTERN_C_END \
143-
NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \
144-
napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
145+
#endif
145146

146147
EXTERN_C_START
147148

β€Žsrc/node_binding.ccβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ void DLOpen(const FunctionCallbackInfo<Value>& args) {
489489
module,
490490
context,
491491
napi_callback,
492-
GetNapiAddonApiVersionCallback());
492+
GetNapiAddonApiVersionCallback(dlib));
493493
return true;
494494
} else {
495495
mp = dlib->GetSavedModuleFromGlobalHandleMap();

β€Žsrc/node_binding.hβ€Ž

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,12 @@ static_assert(static_cast<int>(NM_F_LINKED) ==
3737
nullptr}; \
3838
void _register_##modname() { node_module_register(&_module); }
3939

40-
void napi_module_register_by_symbol(v8::Local<v8::Object> exports,
41-
v8::Local<v8::Value> module,
42-
v8::Local<v8::Context> context,
43-
napi_addon_register_func init);
40+
void napi_module_register_by_symbol(
41+
v8::Local<v8::Object> exports,
42+
v8::Local<v8::Value> module,
43+
v8::Local<v8::Context> context,
44+
napi_addon_register_func init,
45+
napi_addon_api_version_func get_api_version);
4446

4547
namespace node {
4648

β€Žtest/cctest/test_js_native_api_v8.ccβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ TEST_F(JsNativeApiV8Test, Reference) {
4949
Local<Object> module_obj = Object::New(isolate_);
5050
Local<Object> exports_obj = Object::New(isolate_);
5151
napi_module_register_by_symbol(
52-
exports_obj, module_obj, env->context(), init);
52+
exports_obj, module_obj, env->context(), init, nullptr);
5353
ASSERT_NE(addon_env, nullptr);
5454
node_napi_env internal_env = reinterpret_cast<node_napi_env>(addon_env);
5555
EXPECT_EQ(internal_env->node_env(), env);

β€Žtest/cctest/test_node_api.ccβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ TEST_F(NodeApiTest, CreateNodeApiEnv) {
3434
};
3535
Local<Object> module_obj = Object::New(isolate_);
3636
Local<Object> exports_obj = Object::New(isolate_);
37-
napi_module_register_by_symbol(exports_obj, module_obj, env->context(), init);
37+
napi_module_register_by_symbol(
38+
exports_obj, module_obj, env->context(), init, nullptr);
3839
ASSERT_NE(addon_env, nullptr);
3940
node_napi_env internal_env = reinterpret_cast<node_napi_env>(addon_env);
4041
EXPECT_EQ(internal_env->node_env(), env);

β€Žtest/node-api/test_null_init/binding.gypβ€Ž

Lines changed: 0 additions & 8 deletions
This file was deleted.

β€Žtest/node-api/test_null_init/test.jsβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žtest/node-api/test_null_init/test_null_init.cβ€Ž

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
Β (0)