Skip to content

Commit babb75d

Browse files
committed
change public API names
1 parent bdf261c commit babb75d

File tree

4 files changed

+56
-42
lines changed

4 files changed

+56
-42
lines changed

src/js_native_api_types.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,17 @@ typedef struct {
156156

157157
#ifdef NAPI_EXPERIMENTAL
158158
typedef enum {
159-
node_api_finalizer_uses_js, // may touch GC and must run in SetImmediate
160-
node_api_finalizer_native_only, // safe to run from GC finalizer
161-
} node_api_finalizer_type;
159+
node_api_native_data_flags_none = 0,
160+
// may touch GC and must run in SetImmediate
161+
node_api_native_data_flags_finalize_uses_js = 1 << 0
162+
} node_api_native_data_flags;
162163

163164
typedef struct {
164165
size_t version; // version of the struct - must be 0.
165166
void* data;
166-
napi_finalize finalizer;
167-
void* finalizer_state;
168-
node_api_finalizer_type finalizer_type;
167+
napi_finalize finalize_cb;
168+
void* finalize_hint;
169+
node_api_native_data_flags flags;
169170
} node_api_native_data;
170171
#endif
171172

src/js_native_api_v8.cc

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,24 @@ struct FinalizerContext {
9797
void napi_env__::CallFinalizer(
9898
const node_api_native_data& native_data) noexcept {
9999
if (refs > 0) {
100-
if (native_data.finalizer_type == node_api_finalizer_uses_js) {
100+
if ((native_data.flags & node_api_native_data_flags_finalize_uses_js) !=
101+
0) {
101102
CallFinalizerAsync(native_data);
102103
} else {
103104
// Run finalizers synchronously to allow release native objects as soon as
104105
// possible. No JS calls are allowed.
105106
v8impl::FinalizerContext finalizerContext(this);
106107
CallIntoModule(
107108
[native_data](napi_env env) {
108-
native_data.finalizer(
109-
env, native_data.data, native_data.finalizer_state);
109+
native_data.finalize_cb(
110+
env, native_data.data, native_data.finalize_hint);
110111
},
111112
v8impl::FinalizerContext::AbortOnError);
112113
}
113114
} else {
114115
v8::HandleScope handle_scope(isolate);
115116
CallIntoModule([native_data](napi_env env) {
116-
native_data.finalizer(env, native_data.data, native_data.finalizer_state);
117+
native_data.finalize_cb(env, native_data.data, native_data.finalize_hint);
117118
});
118119
}
119120
}
@@ -129,7 +130,7 @@ void napi_env__::CallFinalizerAsync(
129130
v8::HandleScope handle_scope(env->isolate);
130131
v8::Context::Scope context_scope(env->context());
131132
env->CallIntoModule([&native_data](napi_env env) {
132-
native_data.finalizer(env, native_data.data, native_data.finalizer_state);
133+
native_data.finalize_cb(env, native_data.data, native_data.finalize_hint);
133134
});
134135
});
135136
}
@@ -333,13 +334,9 @@ class CallbackBundle {
333334
bundle->env = env;
334335

335336
v8::Local<v8::Value> cbdata = v8::External::New(env->isolate, bundle);
336-
Reference::New(
337-
env,
338-
cbdata,
339-
0,
340-
true,
341-
MakeNativeData(
342-
bundle, Delete, nullptr, node_api_finalizer_native_only));
337+
node_api_native_data native_data = MakeNativeData(
338+
bundle, Delete, nullptr, node_api_native_data_flags_none);
339+
Reference::New(env, cbdata, 0, true, native_data);
343340
return cbdata;
344341
}
345342

@@ -513,7 +510,7 @@ inline napi_status Wrap(napi_env env,
513510
napi_invalid_arg);
514511
} else if (wrap_type == anonymous) {
515512
// If no finalize callback is provided, we error out.
516-
CHECK_ARG(env, native_data->finalizer);
513+
CHECK_ARG(env, native_data->finalize_cb);
517514
}
518515

519516
v8impl::Reference* reference = nullptr;
@@ -522,7 +519,7 @@ inline napi_status Wrap(napi_env env,
522519
// ONLY in response to the finalize callback invocation. (If it is deleted
523520
// before then, then the finalize callback will never be invoked.)
524521
// Therefore a finalize callback is required when returning a reference.
525-
CHECK_ARG(env, native_data->finalizer);
522+
CHECK_ARG(env, native_data->finalize_cb);
526523
reference = v8impl::Reference::New(env, obj, 0, false, *native_data);
527524
*result = reinterpret_cast<napi_ref>(reference);
528525
} else {
@@ -550,8 +547,8 @@ RefBase::RefBase(napi_env env,
550547
: Finalizer(env, native_data),
551548
_refcount(initial_refcount),
552549
_delete_self(delete_self) {
553-
Link(native_data.finalizer == nullptr ? &env->reflist
554-
: &env->finalizing_reflist);
550+
Link(native_data.finalize_cb == nullptr ? &env->reflist
551+
: &env->finalizing_reflist);
555552
}
556553

557554
RefBase* RefBase::New(napi_env env,
@@ -638,7 +635,7 @@ void RefBase::Finalize(bool is_env_teardown) {
638635
MakeNativeData(_finalize_data,
639636
std::exchange(_finalize_callback, nullptr),
640637
_finalize_hint,
641-
_finalizer_type));
638+
_finalize_flags));
642639
}
643640

644641
// this is safe because if a request to delete the reference
@@ -2413,7 +2410,10 @@ napi_status napi_wrap(napi_env env,
24132410
void* finalize_hint,
24142411
napi_ref* result) {
24152412
node_api_native_data native_data =
2416-
v8impl::MakeNativeData(native_object, finalize_cb, finalize_hint);
2413+
v8impl::MakeNativeData(native_object,
2414+
finalize_cb,
2415+
finalize_hint,
2416+
node_api_native_data_flags_finalize_uses_js);
24172417
return v8impl::Wrap<v8impl::retrievable>(
24182418
env, js_object, &native_data, result);
24192419
}
@@ -2438,8 +2438,12 @@ napi_status napi_create_external(napi_env env,
24382438
napi_finalize finalize_cb,
24392439
void* finalize_hint,
24402440
napi_value* result) {
2441-
return node_api_create_external(
2442-
env, &v8impl::MakeNativeData(data, finalize_cb, finalize_hint), result);
2441+
node_api_native_data native_data =
2442+
v8impl::MakeNativeData(data,
2443+
finalize_cb,
2444+
finalize_hint,
2445+
node_api_native_data_flags_finalize_uses_js);
2446+
return node_api_create_external(env, &native_data, result);
24432447
}
24442448

24452449
napi_status node_api_create_external(napi_env env,
@@ -3236,7 +3240,10 @@ napi_status napi_add_finalizer(napi_env env,
32363240
void* finalize_hint,
32373241
napi_ref* result) {
32383242
node_api_native_data native_data =
3239-
v8impl::MakeNativeData(native_object, finalize_cb, finalize_hint);
3243+
v8impl::MakeNativeData(native_object,
3244+
finalize_cb,
3245+
finalize_hint,
3246+
node_api_native_data_flags_finalize_uses_js);
32403247
return v8impl::Wrap<v8impl::anonymous>(env, js_object, &native_data, result);
32413248
}
32423249

@@ -3263,8 +3270,12 @@ napi_status napi_set_instance_data(napi_env env,
32633270
void* data,
32643271
napi_finalize finalize_cb,
32653272
void* finalize_hint) {
3266-
return node_api_set_instance_data(
3267-
env, &v8impl::MakeNativeData(data, finalize_cb, finalize_hint));
3273+
node_api_native_data native_data =
3274+
v8impl::MakeNativeData(data,
3275+
finalize_cb,
3276+
finalize_hint,
3277+
node_api_native_data_flags_finalize_uses_js);
3278+
return node_api_set_instance_data(env, &native_data);
32683279
}
32693280

32703281
napi_status node_api_set_instance_data(napi_env env,

src/js_native_api_v8.h

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,10 @@ class Finalizer {
311311
const node_api_native_data& native_data,
312312
EnvReferenceMode refmode = kNoEnvReference)
313313
: _env(env),
314-
_finalize_callback(native_data.finalizer),
314+
_finalize_callback(native_data.finalize_cb),
315315
_finalize_data(native_data.data),
316-
_finalize_hint(native_data.finalizer_state),
317-
_finalizer_type(native_data.finalizer_type),
316+
_finalize_hint(native_data.finalize_hint),
317+
_finalize_flags(native_data.flags),
318318
_has_env_reference(refmode == kKeepEnvReference) {
319319
if (_has_env_reference) _env->Ref();
320320
}
@@ -337,7 +337,7 @@ class Finalizer {
337337
napi_finalize _finalize_callback;
338338
void* _finalize_data;
339339
void* _finalize_hint;
340-
node_api_finalizer_type _finalizer_type;
340+
node_api_native_data_flags _finalize_flags;
341341
bool _finalize_ran = false;
342342
bool _has_env_reference = false;
343343
};
@@ -424,16 +424,15 @@ class Reference : public RefBase {
424424
FRIEND_TEST(JsNativeApiV8Test, Reference);
425425
};
426426

427-
inline node_api_native_data MakeNativeData(
428-
void* data,
429-
napi_finalize finalizer,
430-
void* finalizer_state,
431-
node_api_finalizer_type finalizer_type = node_api_finalizer_uses_js) {
427+
inline node_api_native_data MakeNativeData(void* data,
428+
napi_finalize finalize_cb,
429+
void* finalize_hint,
430+
node_api_native_data_flags flags) {
432431
node_api_native_data native_data{};
433432
native_data.data = data;
434-
native_data.finalizer = finalizer;
435-
native_data.finalizer_state = finalizer_state;
436-
native_data.finalizer_type = finalizer_type;
433+
native_data.finalize_cb = finalize_cb;
434+
native_data.finalize_hint = finalize_hint;
435+
native_data.flags = flags;
437436
return native_data;
438437
}
439438

src/node_api.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -896,7 +896,10 @@ napi_status napi_create_external_buffer(napi_env env,
896896
void* finalize_hint,
897897
napi_value* result) {
898898
node_api_native_data native_data =
899-
v8impl::MakeNativeData(data, finalize_cb, finalize_hint);
899+
v8impl::MakeNativeData(data,
900+
finalize_cb,
901+
finalize_hint,
902+
node_api_native_data_flags_finalize_uses_js);
900903
return node_api_create_external_buffer(env, &native_data, length, result);
901904
}
902905

0 commit comments

Comments
 (0)