Skip to content

Commit 998cea5

Browse files
refackaddaleax
authored andcommitted
src: workaround MSVC compiler bug
PR-URL: #25596 Fixes: #25593 Refs: https://developercommunity.visualstudio.com/content/problem/432157/dynamic-initializers-out-of-order.html Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
1 parent b1e0c43 commit 998cea5

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/node_options.cc

+14-10
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,20 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
107107

108108
namespace options_parser {
109109

110+
// Explicitly access the singelton instances in their dependancy order.
111+
// This was moved here to workaround a compiler bug.
112+
// Refs: https://github.com/nodejs/node/issues/25593
113+
114+
#if HAVE_INSPECTOR
115+
const DebugOptionsParser DebugOptionsParser::instance;
116+
#endif // HAVE_INSPECTOR
117+
118+
const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
119+
120+
const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
121+
122+
const PerProcessOptionsParser PerProcessOptionsParser::instance;
123+
110124
// XXX: If you add an option here, please also add it to doc/node.1 and
111125
// doc/api/cli.md
112126
// TODO(addaleax): Make that unnecessary.
@@ -143,10 +157,6 @@ DebugOptionsParser::DebugOptionsParser() {
143157
AddAlias("--debug-brk=", { "--inspect-port", "--debug-brk" });
144158
}
145159

146-
#if HAVE_INSPECTOR
147-
const DebugOptionsParser DebugOptionsParser::instance;
148-
#endif // HAVE_INSPECTOR
149-
150160
EnvironmentOptionsParser::EnvironmentOptionsParser() {
151161
AddOption("--experimental-modules",
152162
"experimental ES Module support and caching modules",
@@ -275,8 +285,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
275285
#endif // HAVE_INSPECTOR
276286
}
277287

278-
const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
279-
280288
PerIsolateOptionsParser::PerIsolateOptionsParser() {
281289
AddOption("--track-heap-objects",
282290
"track heap object allocations for heap snapshots",
@@ -334,8 +342,6 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() {
334342
&PerIsolateOptions::get_per_env_options);
335343
}
336344

337-
const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
338-
339345
PerProcessOptionsParser::PerProcessOptionsParser() {
340346
AddOption("--title",
341347
"the process title to use on startup",
@@ -442,8 +448,6 @@ PerProcessOptionsParser::PerProcessOptionsParser() {
442448
&PerProcessOptions::get_per_isolate_options);
443449
}
444450

445-
const PerProcessOptionsParser PerProcessOptionsParser::instance;
446-
447451
inline std::string RemoveBrackets(const std::string& host) {
448452
if (!host.empty() && host.front() == '[' && host.back() == ']')
449453
return host.substr(1, host.size() - 2);

0 commit comments

Comments
 (0)