Skip to content

Commit d73181f

Browse files
jasnellMylesBorins
authored andcommitted
src: reduce duplicated boilerplate with new env utility fn
Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: #36536 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
1 parent 9aba288 commit d73181f

33 files changed

+82
-258
lines changed

src/README.md

Lines changed: 1 addition & 5 deletions
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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1898,32 +1898,17 @@ void Initialize(Local<Object> target,
18981898
Local<FunctionTemplate> aiw =
18991899
BaseObject::MakeLazilyInitializedJSTemplate(env);
19001900
aiw->Inherit(AsyncWrap::GetConstructorTemplate(env));
1901-
Local<String> addrInfoWrapString =
1902-
FIXED_ONE_BYTE_STRING(env->isolate(), "GetAddrInfoReqWrap");
1903-
aiw->SetClassName(addrInfoWrapString);
1904-
target->Set(env->context(),
1905-
addrInfoWrapString,
1906-
aiw->GetFunction(context).ToLocalChecked()).Check();
1901+
env->SetConstructorFunction(target, "GetAddrInfoReqWrap", aiw);
19071902

19081903
Local<FunctionTemplate> niw =
19091904
BaseObject::MakeLazilyInitializedJSTemplate(env);
19101905
niw->Inherit(AsyncWrap::GetConstructorTemplate(env));
1911-
Local<String> nameInfoWrapString =
1912-
FIXED_ONE_BYTE_STRING(env->isolate(), "GetNameInfoReqWrap");
1913-
niw->SetClassName(nameInfoWrapString);
1914-
target->Set(env->context(),
1915-
nameInfoWrapString,
1916-
niw->GetFunction(context).ToLocalChecked()).Check();
1906+
env->SetConstructorFunction(target, "GetNameInfoReqWrap", niw);
19171907

19181908
Local<FunctionTemplate> qrw =
19191909
BaseObject::MakeLazilyInitializedJSTemplate(env);
19201910
qrw->Inherit(AsyncWrap::GetConstructorTemplate(env));
1921-
Local<String> queryWrapString =
1922-
FIXED_ONE_BYTE_STRING(env->isolate(), "QueryReqWrap");
1923-
qrw->SetClassName(queryWrapString);
1924-
target->Set(env->context(),
1925-
queryWrapString,
1926-
qrw->GetFunction(context).ToLocalChecked()).Check();
1911+
env->SetConstructorFunction(target, "QueryReqWrap", qrw);
19271912

19281913
Local<FunctionTemplate> channel_wrap =
19291914
env->NewFunctionTemplate(ChannelWrap::New);
@@ -1950,11 +1935,7 @@ void Initialize(Local<Object> target,
19501935
env->SetProtoMethod(channel_wrap, "setLocalAddress", SetLocalAddress);
19511936
env->SetProtoMethod(channel_wrap, "cancel", Cancel);
19521937

1953-
Local<String> channelWrapString =
1954-
FIXED_ONE_BYTE_STRING(env->isolate(), "ChannelWrap");
1955-
channel_wrap->SetClassName(channelWrapString);
1956-
target->Set(env->context(), channelWrapString,
1957-
channel_wrap->GetFunction(context).ToLocalChecked()).Check();
1938+
env->SetConstructorFunction(target, "ChannelWrap", channel_wrap);
19581939
}
19591940

19601941
} // namespace cares_wrap

src/env-inl.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1107,6 +1107,24 @@ inline void Environment::SetInstanceMethod(v8::Local<v8::FunctionTemplate> that,
11071107
t->SetClassName(name_string);
11081108
}
11091109

1110+
inline void Environment::SetConstructorFunction(
1111+
v8::Local<v8::Object> that,
1112+
const char* name,
1113+
v8::Local<v8::FunctionTemplate> tmpl) {
1114+
SetConstructorFunction(that, OneByteString(isolate(), name), tmpl);
1115+
}
1116+
1117+
inline void Environment::SetConstructorFunction(
1118+
v8::Local<v8::Object> that,
1119+
v8::Local<v8::String> name,
1120+
v8::Local<v8::FunctionTemplate> tmpl) {
1121+
tmpl->SetClassName(name);
1122+
that->Set(
1123+
context(),
1124+
name,
1125+
tmpl->GetFunction(context()).ToLocalChecked()).Check();
1126+
}
1127+
11101128
void Environment::AddCleanupHook(CleanupCallback fn, void* arg) {
11111129
auto insertion_info = cleanup_hooks_.emplace(CleanupHookCallback {
11121130
fn, arg, cleanup_hook_counter_++

src/env.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,14 @@ class Environment : public MemoryRetainer {
11111111
const char* name,
11121112
v8::FunctionCallback callback);
11131113

1114+
inline void SetConstructorFunction(v8::Local<v8::Object> that,
1115+
const char* name,
1116+
v8::Local<v8::FunctionTemplate> tmpl);
1117+
1118+
inline void SetConstructorFunction(v8::Local<v8::Object> that,
1119+
v8::Local<v8::String> name,
1120+
v8::Local<v8::FunctionTemplate> tmpl);
1121+
11141122
void AtExit(void (*cb)(void* arg), void* arg);
11151123
void RunAtExitCallbacks();
11161124

src/fs_event_wrap.cc

Lines changed: 1 addition & 5 deletions
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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,19 +101,17 @@ class JSBindingsConnection : public AsyncWrap {
101101
}
102102

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

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

src/js_stream.cc

Lines changed: 1 addition & 7 deletions
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

Lines changed: 1 addition & 7 deletions
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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -733,10 +733,8 @@ void ModuleWrap::Initialize(Local<Object> target,
733733
Local<Context> context,
734734
void* priv) {
735735
Environment* env = Environment::GetCurrent(context);
736-
Isolate* isolate = env->isolate();
737736

738737
Local<FunctionTemplate> tpl = env->NewFunctionTemplate(New);
739-
tpl->SetClassName(FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"));
740738
tpl->InstanceTemplate()->SetInternalFieldCount(
741739
ModuleWrap::kInternalFieldCount);
742740
tpl->Inherit(BaseObject::GetConstructorTemplate(env));
@@ -752,8 +750,8 @@ void ModuleWrap::Initialize(Local<Object> target,
752750
env->SetProtoMethodNoSideEffect(tpl, "getStaticDependencySpecifiers",
753751
GetStaticDependencySpecifiers);
754752

755-
target->Set(env->context(), FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"),
756-
tpl->GetFunction(context).ToLocalChecked()).Check();
753+
env->SetConstructorFunction(target, "ModuleWrap", tpl);
754+
757755
env->SetMethod(target,
758756
"setImportModuleDynamicallyCallback",
759757
SetImportModuleDynamicallyCallback);

src/node_contextify.cc

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1292,21 +1292,11 @@ void MicrotaskQueueWrap::New(const FunctionCallbackInfo<Value>& args) {
12921292

12931293
void MicrotaskQueueWrap::Init(Environment* env, Local<Object> target) {
12941294
HandleScope scope(env->isolate());
1295-
Local<String> class_name =
1296-
FIXED_ONE_BYTE_STRING(env->isolate(), "MicrotaskQueue");
1297-
12981295
Local<FunctionTemplate> tmpl = env->NewFunctionTemplate(New);
12991296
tmpl->InstanceTemplate()->SetInternalFieldCount(
13001297
ContextifyScript::kInternalFieldCount);
1301-
tmpl->SetClassName(class_name);
1302-
1303-
if (target->Set(env->context(),
1304-
class_name,
1305-
tmpl->GetFunction(env->context()).ToLocalChecked())
1306-
.IsNothing()) {
1307-
return;
1308-
}
13091298
env->set_microtask_queue_ctor_template(tmpl);
1299+
env->SetConstructorFunction(target, "MicrotaskQueue", tmpl);
13101300
}
13111301

13121302

0 commit comments

Comments
 (0)