File tree Expand file tree Collapse file tree 2 files changed +11
-8
lines changed Expand file tree Collapse file tree 2 files changed +11
-8
lines changed Original file line number Diff line number Diff line change @@ -431,7 +431,13 @@ void ResetSignalHandlers() {
431431#endif // __POSIX__
432432}
433433
434+ // We use uint32_t since that can be accessed as a lock-free atomic
435+ // variable on all platforms that we support, which we require in
436+ // order for its value to be usable inside signal handlers.
434437static std::atomic<uint32_t > init_process_flags = 0 ;
438+ static_assert (
439+ std::is_same_v<std::underlying_type_t <ProcessInitializationFlags::Flags>,
440+ uint32_t >);
435441
436442static void PlatformInit (ProcessInitializationFlags::Flags flags) {
437443 // init_process_flags is accessed in ResetStdio(),
@@ -1057,7 +1063,7 @@ std::unique_ptr<InitializationResult> InitializeOncePerProcess(
10571063}
10581064
10591065void TearDownOncePerProcess () {
1060- const uint64_t flags = init_process_flags.load ();
1066+ const uint32_t flags = init_process_flags.load ();
10611067 ResetStdio ();
10621068 if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling )) {
10631069 ResetSignalHandlers ();
Original file line number Diff line number Diff line change @@ -227,10 +227,8 @@ class Environment;
227227class MultiIsolatePlatform ;
228228class InitializationResultImpl ;
229229
230- namespace ProcessFlags {
231- // TODO(addaleax): Switch to uint32_t to match std::atomic<uint32_t>
232- // init_process_flags in node.cc
233- enum Flags : uint64_t {
230+ namespace ProcessInitializationFlags {
231+ enum Flags : uint32_t {
234232 kNoFlags = 0 ,
235233 // Enable stdio inheritance, which is disabled by default.
236234 // This flag is also implied by kNoStdioInitialization.
@@ -270,9 +268,8 @@ enum Flags : uint64_t {
270268 kNoParseGlobalDebugVariables | kNoAdjustResourceLimits |
271269 kNoUseLargePages | kNoPrintHelpOrVersionOutput ,
272270};
273- } // namespace ProcessFlags
274- // TODO(addaleax): Make this the canonical name, as it is more descriptive.
275- namespace ProcessInitializationFlags = ProcessFlags;
271+ } // namespace ProcessInitializationFlags
272+ namespace ProcessFlags = ProcessInitializationFlags; // Legacy alias.
276273
277274class NODE_EXTERN InitializationResult {
278275 public:
You can’t perform that action at this time.
0 commit comments