Skip to content

Commit 8b43388

Browse files
jasnelldanielleadams
authored andcommitted
src: reduce duplicated boilerplate with new env utility fn
Signed-off-by: James M Snell <[email protected]> PR-URL: #36536 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Joyee Cheung <[email protected]>
1 parent 214dbac commit 8b43388

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+95
-312
lines changed

src/README.md

+1-5
Original file line numberDiff line numberDiff line change
@@ -405,11 +405,7 @@ void Initialize(Local<Object> target,
405405

406406
env->SetProtoMethodNoSideEffect(channel_wrap, "getServers", GetServers);
407407

408-
Local<String> channel_wrap_string =
409-
FIXED_ONE_BYTE_STRING(env->isolate(), "ChannelWrap");
410-
channel_wrap->SetClassName(channel_wrap_string);
411-
target->Set(env->context(), channel_wrap_string,
412-
channel_wrap->GetFunction(context).ToLocalChecked()).Check();
408+
env->SetConstructorFunction(target, "ChannelWrap", channel_wrap);
413409
}
414410

415411
// Run the `Initialize` function when loading this module through

src/cares_wrap.cc

+4-23
Original file line numberDiff line numberDiff line change
@@ -2345,32 +2345,17 @@ void Initialize(Local<Object> target,
23452345
Local<FunctionTemplate> aiw =
23462346
BaseObject::MakeLazilyInitializedJSTemplate(env);
23472347
aiw->Inherit(AsyncWrap::GetConstructorTemplate(env));
2348-
Local<String> addrInfoWrapString =
2349-
FIXED_ONE_BYTE_STRING(env->isolate(), "GetAddrInfoReqWrap");
2350-
aiw->SetClassName(addrInfoWrapString);
2351-
target->Set(env->context(),
2352-
addrInfoWrapString,
2353-
aiw->GetFunction(context).ToLocalChecked()).Check();
2348+
env->SetConstructorFunction(target, "GetAddrInfoReqWrap", aiw);
23542349

23552350
Local<FunctionTemplate> niw =
23562351
BaseObject::MakeLazilyInitializedJSTemplate(env);
23572352
niw->Inherit(AsyncWrap::GetConstructorTemplate(env));
2358-
Local<String> nameInfoWrapString =
2359-
FIXED_ONE_BYTE_STRING(env->isolate(), "GetNameInfoReqWrap");
2360-
niw->SetClassName(nameInfoWrapString);
2361-
target->Set(env->context(),
2362-
nameInfoWrapString,
2363-
niw->GetFunction(context).ToLocalChecked()).Check();
2353+
env->SetConstructorFunction(target, "GetNameInfoReqWrap", niw);
23642354

23652355
Local<FunctionTemplate> qrw =
23662356
BaseObject::MakeLazilyInitializedJSTemplate(env);
23672357
qrw->Inherit(AsyncWrap::GetConstructorTemplate(env));
2368-
Local<String> queryWrapString =
2369-
FIXED_ONE_BYTE_STRING(env->isolate(), "QueryReqWrap");
2370-
qrw->SetClassName(queryWrapString);
2371-
target->Set(env->context(),
2372-
queryWrapString,
2373-
qrw->GetFunction(context).ToLocalChecked()).Check();
2358+
env->SetConstructorFunction(target, "QueryReqWrap", qrw);
23742359

23752360
Local<FunctionTemplate> channel_wrap =
23762361
env->NewFunctionTemplate(ChannelWrap::New);
@@ -2397,11 +2382,7 @@ void Initialize(Local<Object> target,
23972382
env->SetProtoMethod(channel_wrap, "setLocalAddress", SetLocalAddress);
23982383
env->SetProtoMethod(channel_wrap, "cancel", Cancel);
23992384

2400-
Local<String> channelWrapString =
2401-
FIXED_ONE_BYTE_STRING(env->isolate(), "ChannelWrap");
2402-
channel_wrap->SetClassName(channelWrapString);
2403-
target->Set(env->context(), channelWrapString,
2404-
channel_wrap->GetFunction(context).ToLocalChecked()).Check();
2385+
env->SetConstructorFunction(target, "ChannelWrap", channel_wrap);
24052386
}
24062387

24072388
} // anonymous namespace

src/crypto/crypto_cipher.cc

+1-4
Original file line numberDiff line numberDiff line change
@@ -265,10 +265,7 @@ void CipherBase::Initialize(Environment* env, Local<Object> target) {
265265
env->SetProtoMethodNoSideEffect(t, "getAuthTag", GetAuthTag);
266266
env->SetProtoMethod(t, "setAuthTag", SetAuthTag);
267267
env->SetProtoMethod(t, "setAAD", SetAAD);
268-
269-
target->Set(env->context(),
270-
FIXED_ONE_BYTE_STRING(env->isolate(), "CipherBase"),
271-
t->GetFunction(env->context()).ToLocalChecked()).Check();
268+
env->SetConstructorFunction(target, "CipherBase", t);
272269

273270
env->SetMethodNoSideEffect(target, "getSSLCiphers", GetSSLCiphers);
274271
env->SetMethodNoSideEffect(target, "getCiphers", GetCiphers);

src/crypto/crypto_context.cc

+2-5
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,6 @@ void SecureContext::Initialize(Environment* env, Local<Object> target) {
252252
t->InstanceTemplate()->SetInternalFieldCount(
253253
SecureContext::kInternalFieldCount);
254254
t->Inherit(BaseObject::GetConstructorTemplate(env));
255-
Local<String> secureContextString =
256-
FIXED_ONE_BYTE_STRING(env->isolate(), "SecureContext");
257-
t->SetClassName(secureContextString);
258255

259256
env->SetProtoMethod(t, "init", Init);
260257
env->SetProtoMethod(t, "setKey", SetKey);
@@ -313,8 +310,8 @@ void SecureContext::Initialize(Environment* env, Local<Object> target) {
313310
Local<FunctionTemplate>(),
314311
static_cast<PropertyAttribute>(ReadOnly | DontDelete));
315312

316-
target->Set(env->context(), secureContextString,
317-
t->GetFunction(env->context()).ToLocalChecked()).Check();
313+
env->SetConstructorFunction(target, "SecureContext", t);
314+
318315
env->set_secure_context_constructor_template(t);
319316

320317
env->SetMethodNoSideEffect(target, "getRootCertificates",

src/crypto/crypto_dh.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,7 @@ void DiffieHellman::Initialize(Environment* env, Local<Object> target) {
9393
Local<FunctionTemplate>(),
9494
attributes);
9595

96-
target->Set(env->context(),
97-
name,
98-
t->GetFunction(env->context()).ToLocalChecked()).Check();
96+
env->SetConstructorFunction(target, name, t);
9997
};
10098

10199
make(FIXED_ONE_BYTE_STRING(env->isolate(), "DiffieHellman"), New);

src/crypto/crypto_ecdh.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,7 @@ void ECDH::Initialize(Environment* env, Local<Object> target) {
5252
env->SetProtoMethod(t, "setPublicKey", SetPublicKey);
5353
env->SetProtoMethod(t, "setPrivateKey", SetPrivateKey);
5454

55-
target->Set(env->context(),
56-
FIXED_ONE_BYTE_STRING(env->isolate(), "ECDH"),
57-
t->GetFunction(env->context()).ToLocalChecked()).Check();
55+
env->SetConstructorFunction(target, "ECDH", t);
5856

5957
env->SetMethodNoSideEffect(target, "ECDHConvertKey", ECDH::ConvertKey);
6058
env->SetMethodNoSideEffect(target, "getCurves", ECDH::GetCurves);

src/crypto/crypto_hash.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,7 @@ void Hash::Initialize(Environment* env, Local<Object> target) {
5050
env->SetProtoMethod(t, "update", HashUpdate);
5151
env->SetProtoMethod(t, "digest", HashDigest);
5252

53-
target->Set(env->context(),
54-
FIXED_ONE_BYTE_STRING(env->isolate(), "Hash"),
55-
t->GetFunction(env->context()).ToLocalChecked()).Check();
53+
env->SetConstructorFunction(target, "Hash", t);
5654

5755
env->SetMethodNoSideEffect(target, "getHashes", GetHashes);
5856

src/crypto/crypto_hmac.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ void Hmac::Initialize(Environment* env, Local<Object> target) {
4848
env->SetProtoMethod(t, "update", HmacUpdate);
4949
env->SetProtoMethod(t, "digest", HmacDigest);
5050

51-
target->Set(env->context(),
52-
FIXED_ONE_BYTE_STRING(env->isolate(), "Hmac"),
53-
t->GetFunction(env->context()).ToLocalChecked()).Check();
51+
env->SetConstructorFunction(target, "Hmac", t);
5452

5553
HmacJob::Initialize(env, target);
5654
}

src/crypto/crypto_sig.cc

+2-6
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,7 @@ void Sign::Initialize(Environment* env, Local<Object> target) {
276276
env->SetProtoMethod(t, "update", SignUpdate);
277277
env->SetProtoMethod(t, "sign", SignFinal);
278278

279-
target->Set(env->context(),
280-
FIXED_ONE_BYTE_STRING(env->isolate(), "Sign"),
281-
t->GetFunction(env->context()).ToLocalChecked()).Check();
279+
env->SetConstructorFunction(target, "Sign", t);
282280

283281
env->SetMethod(target, "signOneShot", Sign::SignSync);
284282

@@ -396,9 +394,7 @@ void Verify::Initialize(Environment* env, Local<Object> target) {
396394
env->SetProtoMethod(t, "update", VerifyUpdate);
397395
env->SetProtoMethod(t, "verify", VerifyFinal);
398396

399-
target->Set(env->context(),
400-
FIXED_ONE_BYTE_STRING(env->isolate(), "Verify"),
401-
t->GetFunction(env->context()).ToLocalChecked()).Check();
397+
env->SetConstructorFunction(target, "Verify", t);
402398

403399
env->SetMethod(target, "verifyOneShot", Verify::VerifySync);
404400
}

src/crypto/crypto_util.h

+1-7
Original file line numberDiff line numberDiff line change
@@ -349,17 +349,11 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
349349
Environment* env,
350350
v8::Local<v8::Object> target) {
351351
v8::Local<v8::FunctionTemplate> job = env->NewFunctionTemplate(new_fn);
352-
v8::Local<v8::String> class_name =
353-
OneByteString(env->isolate(), CryptoJobTraits::JobName);
354-
job->SetClassName(class_name);
355352
job->Inherit(AsyncWrap::GetConstructorTemplate(env));
356353
job->InstanceTemplate()->SetInternalFieldCount(
357354
AsyncWrap::kInternalFieldCount);
358355
env->SetProtoMethod(job, "run", Run);
359-
target->Set(
360-
env->context(),
361-
class_name,
362-
job->GetFunction(env->context()).ToLocalChecked()).Check();
356+
env->SetConstructorFunction(target, CryptoJobTraits::JobName, job);
363357
}
364358

365359
private:

src/env-inl.h

+18
Original file line numberDiff line numberDiff line change
@@ -1028,6 +1028,24 @@ inline void Environment::SetInstanceMethod(v8::Local<v8::FunctionTemplate> that,
10281028
t->SetClassName(name_string);
10291029
}
10301030

1031+
inline void Environment::SetConstructorFunction(
1032+
v8::Local<v8::Object> that,
1033+
const char* name,
1034+
v8::Local<v8::FunctionTemplate> tmpl) {
1035+
SetConstructorFunction(that, OneByteString(isolate(), name), tmpl);
1036+
}
1037+
1038+
inline void Environment::SetConstructorFunction(
1039+
v8::Local<v8::Object> that,
1040+
v8::Local<v8::String> name,
1041+
v8::Local<v8::FunctionTemplate> tmpl) {
1042+
tmpl->SetClassName(name);
1043+
that->Set(
1044+
context(),
1045+
name,
1046+
tmpl->GetFunction(context()).ToLocalChecked()).Check();
1047+
}
1048+
10311049
void Environment::AddCleanupHook(CleanupCallback fn, void* arg) {
10321050
auto insertion_info = cleanup_hooks_.emplace(CleanupHookCallback {
10331051
fn, arg, cleanup_hook_counter_++

src/env.h

+8
Original file line numberDiff line numberDiff line change
@@ -1236,6 +1236,14 @@ class Environment : public MemoryRetainer {
12361236
const char* name,
12371237
v8::FunctionCallback callback);
12381238

1239+
inline void SetConstructorFunction(v8::Local<v8::Object> that,
1240+
const char* name,
1241+
v8::Local<v8::FunctionTemplate> tmpl);
1242+
1243+
inline void SetConstructorFunction(v8::Local<v8::Object> that,
1244+
v8::Local<v8::String> name,
1245+
v8::Local<v8::FunctionTemplate> tmpl);
1246+
12391247
void AtExit(void (*cb)(void* arg), void* arg);
12401248
void RunAtExitCallbacks();
12411249

src/fs_event_wrap.cc

+1-5
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,9 @@ void FSEventWrap::Initialize(Local<Object> target,
9595
void* priv) {
9696
Environment* env = Environment::GetCurrent(context);
9797

98-
auto fsevent_string = FIXED_ONE_BYTE_STRING(env->isolate(), "FSEvent");
9998
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
10099
t->InstanceTemplate()->SetInternalFieldCount(
101100
FSEventWrap::kInternalFieldCount);
102-
t->SetClassName(fsevent_string);
103101

104102
t->Inherit(HandleWrap::GetConstructorTemplate(env));
105103
env->SetProtoMethod(t, "start", Start);
@@ -116,9 +114,7 @@ void FSEventWrap::Initialize(Local<Object> target,
116114
Local<FunctionTemplate>(),
117115
static_cast<PropertyAttribute>(ReadOnly | DontDelete | DontEnum));
118116

119-
target->Set(env->context(),
120-
fsevent_string,
121-
t->GetFunction(context).ToLocalChecked()).Check();
117+
env->SetConstructorFunction(target, "FSEvent", t);
122118
}
123119

124120

src/inspector_js_api.cc

+4-6
Original file line numberDiff line numberDiff line change
@@ -102,19 +102,17 @@ class JSBindingsConnection : public AsyncWrap {
102102
}
103103

104104
static void Bind(Environment* env, Local<Object> target) {
105-
Local<String> class_name = ConnectionType::GetClassName(env);
106105
Local<FunctionTemplate> tmpl =
107106
env->NewFunctionTemplate(JSBindingsConnection::New);
108107
tmpl->InstanceTemplate()->SetInternalFieldCount(
109108
JSBindingsConnection::kInternalFieldCount);
110-
tmpl->SetClassName(class_name);
111109
tmpl->Inherit(AsyncWrap::GetConstructorTemplate(env));
112110
env->SetProtoMethod(tmpl, "dispatch", JSBindingsConnection::Dispatch);
113111
env->SetProtoMethod(tmpl, "disconnect", JSBindingsConnection::Disconnect);
114-
target->Set(env->context(),
115-
class_name,
116-
tmpl->GetFunction(env->context()).ToLocalChecked())
117-
.ToChecked();
112+
env->SetConstructorFunction(
113+
target,
114+
ConnectionType::GetClassName(env),
115+
tmpl);
118116
}
119117

120118
static void New(const FunctionCallbackInfo<Value>& info) {

src/js_stream.cc

+1-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ using v8::HandleScope;
1919
using v8::Int32;
2020
using v8::Local;
2121
using v8::Object;
22-
using v8::String;
2322
using v8::Value;
2423

2524

@@ -200,9 +199,6 @@ void JSStream::Initialize(Local<Object> target,
200199
Environment* env = Environment::GetCurrent(context);
201200

202201
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
203-
Local<String> jsStreamString =
204-
FIXED_ONE_BYTE_STRING(env->isolate(), "JSStream");
205-
t->SetClassName(jsStreamString);
206202
t->InstanceTemplate()
207203
->SetInternalFieldCount(StreamBase::kInternalFieldCount);
208204
t->Inherit(AsyncWrap::GetConstructorTemplate(env));
@@ -213,9 +209,7 @@ void JSStream::Initialize(Local<Object> target,
213209
env->SetProtoMethod(t, "emitEOF", EmitEOF);
214210

215211
StreamBase::AddMethods(env, t);
216-
target->Set(env->context(),
217-
jsStreamString,
218-
t->GetFunction(context).ToLocalChecked()).Check();
212+
env->SetConstructorFunction(target, "JSStream", t);
219213
}
220214

221215
} // namespace node

src/js_udp_wrap.cc

+1-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ using v8::HandleScope;
1616
using v8::Int32;
1717
using v8::Local;
1818
using v8::Object;
19-
using v8::String;
2019
using v8::Value;
2120

2221
// JSUDPWrap is a testing utility used by test/common/udppair.js
@@ -195,9 +194,6 @@ void JSUDPWrap::Initialize(Local<Object> target,
195194
Environment* env = Environment::GetCurrent(context);
196195

197196
Local<FunctionTemplate> t = env->NewFunctionTemplate(New);
198-
Local<String> js_udp_wrap_string =
199-
FIXED_ONE_BYTE_STRING(env->isolate(), "JSUDPWrap");
200-
t->SetClassName(js_udp_wrap_string);
201197
t->InstanceTemplate()
202198
->SetInternalFieldCount(UDPWrapBase::kUDPWrapBaseField + 1);
203199
t->Inherit(AsyncWrap::GetConstructorTemplate(env));
@@ -207,9 +203,7 @@ void JSUDPWrap::Initialize(Local<Object> target,
207203
env->SetProtoMethod(t, "onSendDone", OnSendDone);
208204
env->SetProtoMethod(t, "onAfterBind", OnAfterBind);
209205

210-
target->Set(env->context(),
211-
js_udp_wrap_string,
212-
t->GetFunction(context).ToLocalChecked()).Check();
206+
env->SetConstructorFunction(target, "JSUDPWrap", t);
213207
}
214208

215209

src/module_wrap.cc

+2-4
Original file line numberDiff line numberDiff line change
@@ -722,10 +722,8 @@ void ModuleWrap::Initialize(Local<Object> target,
722722
Local<Context> context,
723723
void* priv) {
724724
Environment* env = Environment::GetCurrent(context);
725-
Isolate* isolate = env->isolate();
726725

727726
Local<FunctionTemplate> tpl = env->NewFunctionTemplate(New);
728-
tpl->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"));
729727
tpl->InstanceTemplate()->SetInternalFieldCount(
730728
ModuleWrap::kInternalFieldCount);
731729
tpl->Inherit(BaseObject::GetConstructorTemplate(env));
@@ -741,8 +739,8 @@ void ModuleWrap::Initialize(Local<Object> target,
741739
env->SetProtoMethodNoSideEffect(tpl, "getStaticDependencySpecifiers",
742740
GetStaticDependencySpecifiers);
743741

744-
target->Set(env->context(), FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"),
745-
tpl->GetFunction(context).ToLocalChecked()).Check();
742+
env->SetConstructorFunction(target, "ModuleWrap", tpl);
743+
746744
env->SetMethod(target,
747745
"setImportModuleDynamicallyCallback",
748746
SetImportModuleDynamicallyCallback);

src/node_contextify.cc

+1-11
Original file line numberDiff line numberDiff line change
@@ -1282,21 +1282,11 @@ void MicrotaskQueueWrap::New(const FunctionCallbackInfo<Value>& args) {
12821282

12831283
void MicrotaskQueueWrap::Init(Environment* env, Local<Object> target) {
12841284
HandleScope scope(env->isolate());
1285-
Local<String> class_name =
1286-
FIXED_ONE_BYTE_STRING(env->isolate(), "MicrotaskQueue");
1287-
12881285
Local<FunctionTemplate> tmpl = env->NewFunctionTemplate(New);
12891286
tmpl->InstanceTemplate()->SetInternalFieldCount(
12901287
ContextifyScript::kInternalFieldCount);
1291-
tmpl->SetClassName(class_name);
1292-
1293-
if (target->Set(env->context(),
1294-
class_name,
1295-
tmpl->GetFunction(env->context()).ToLocalChecked())
1296-
.IsNothing()) {
1297-
return;
1298-
}
12991288
env->set_microtask_queue_ctor_template(tmpl);
1289+
env->SetConstructorFunction(target, "MicrotaskQueue", tmpl);
13001290
}
13011291

13021292

0 commit comments

Comments
 (0)