Skip to content

Commit ed741ec

Browse files
Gabriel Schulhofcodebytere
Gabriel Schulhof
authored andcommitted
n-api: remove napi_env::CallIntoModuleThrow
Give `napi_env::CallIntoModule` the thrower used by `CallIntoModuleThrow` as its default second argument. That way we do not need two different methods on `napi_env` for calling into the addon. PR-URL: #33570 Signed-off-by: Gabriel Schulhof <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Chengzhong Wu <[email protected]> Reviewed-By: Michael Dawson <[email protected]>
1 parent 41d8796 commit ed741ec

File tree

3 files changed

+13
-15
lines changed

3 files changed

+13
-15
lines changed

src/js_native_api_v8.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ class RefBase : protected Finalizer, RefTracker {
267267
protected:
268268
inline void Finalize(bool is_env_teardown = false) override {
269269
if (_finalize_callback != nullptr) {
270-
_env->CallIntoModuleThrow([&](napi_env env) {
270+
_env->CallIntoModule([&](napi_env env) {
271271
_finalize_callback(
272272
env,
273273
_finalize_data,
@@ -508,7 +508,7 @@ class CallbackWrapperBase : public CallbackWrapper {
508508
napi_callback cb = _bundle->*FunctionField;
509509

510510
napi_value result;
511-
env->CallIntoModuleThrow([&](napi_env env) {
511+
env->CallIntoModule([&](napi_env env) {
512512
result = cb(env, cbinfo_wrapper);
513513
});
514514

src/js_native_api_v8.h

+7-9
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,13 @@ struct napi_env__ {
8282
return v8::Just(true);
8383
}
8484

85-
template <typename T, typename U>
86-
void CallIntoModule(T&& call, U&& handle_exception) {
85+
static inline void
86+
HandleThrow(napi_env env, v8::Local<v8::Value> value) {
87+
env->isolate->ThrowException(value);
88+
}
89+
90+
template <typename T, typename U = decltype(HandleThrow)>
91+
inline void CallIntoModule(T&& call, U&& handle_exception = HandleThrow) {
8792
int open_handle_scopes_before = open_handle_scopes;
8893
int open_callback_scopes_before = open_callback_scopes;
8994
napi_clear_last_error(this);
@@ -96,13 +101,6 @@ struct napi_env__ {
96101
}
97102
}
98103

99-
template <typename T>
100-
void CallIntoModuleThrow(T&& call) {
101-
CallIntoModule(call, [&](napi_env env, v8::Local<v8::Value> value) {
102-
env->isolate->ThrowException(value);
103-
});
104-
}
105-
106104
v8impl::Persistent<v8::Value> last_exception;
107105

108106
// We store references in two different lists, depending on whether they have

src/node_api.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class BufferFinalizer : private Finalizer {
5757
v8::HandleScope handle_scope(finalizer->_env->isolate);
5858
v8::Context::Scope context_scope(finalizer->_env->context());
5959

60-
finalizer->_env->CallIntoModuleThrow([&](napi_env env) {
60+
finalizer->_env->CallIntoModule([&](napi_env env) {
6161
finalizer->_finalize_callback(
6262
env,
6363
finalizer->_finalize_data,
@@ -308,7 +308,7 @@ class ThreadSafeFunction : public node::AsyncResource {
308308
v8::Local<v8::Function>::New(env->isolate, ref);
309309
js_callback = v8impl::JsValueFromV8LocalValue(js_cb);
310310
}
311-
env->CallIntoModuleThrow([&](napi_env env) {
311+
env->CallIntoModule([&](napi_env env) {
312312
call_js_cb(env, js_callback, context, data);
313313
});
314314
}
@@ -318,7 +318,7 @@ class ThreadSafeFunction : public node::AsyncResource {
318318
v8::HandleScope scope(env->isolate);
319319
if (finalize_cb) {
320320
CallbackScope cb_scope(this);
321-
env->CallIntoModuleThrow([&](napi_env env) {
321+
env->CallIntoModule([&](napi_env env) {
322322
finalize_cb(env, finalize_data, context);
323323
});
324324
}
@@ -455,7 +455,7 @@ void napi_module_register_by_symbol(v8::Local<v8::Object> exports,
455455
napi_env env = v8impl::NewEnv(context);
456456

457457
napi_value _exports;
458-
env->CallIntoModuleThrow([&](napi_env env) {
458+
env->CallIntoModule([&](napi_env env) {
459459
_exports = init(env, v8impl::JsValueFromV8LocalValue(exports));
460460
});
461461

0 commit comments

Comments
 (0)