File tree Expand file tree Collapse file tree 4 files changed +15
-4
lines changed Expand file tree Collapse file tree 4 files changed +15
-4
lines changed Original file line number Diff line number Diff line change @@ -911,10 +911,11 @@ void Environment::InitializeLibuv() {
911911 StartProfilerIdleNotifier ();
912912}
913913
914- void Environment::ExitEnv () {
914+ void Environment::ExitEnv (StopFlags flags ) {
915915 // Should not access non-thread-safe methods here.
916916 set_stopping (true );
917- isolate_->TerminateExecution ();
917+ if ((flags & StopFlags::kDoNotTerminateIsolate ) == 0 )
918+ isolate_->TerminateExecution ();
918919 SetImmediateThreadsafe ([](Environment* env) {
919920 env->set_can_call_into_js (false );
920921 uv_stop (env->event_loop ());
Original file line number Diff line number Diff line change @@ -636,7 +636,7 @@ class Environment : public MemoryRetainer {
636636 void RegisterHandleCleanups ();
637637 void CleanupHandles ();
638638 void Exit (ExitCode code);
639- void ExitEnv ();
639+ void ExitEnv (StopFlags flags );
640640
641641 // Register clean-up cb to be called on environment destruction.
642642 inline void RegisterHandleCleanup (uv_handle_t * handle,
Original file line number Diff line number Diff line change @@ -1254,7 +1254,11 @@ int Start(int argc, char** argv) {
12541254}
12551255
12561256int Stop (Environment* env) {
1257- env->ExitEnv ();
1257+ return Stop (env, StopFlags::kNoFlags );
1258+ }
1259+
1260+ int Stop (Environment* env, StopFlags flags) {
1261+ env->ExitEnv (flags);
12581262 return 0 ;
12591263}
12601264
Original file line number Diff line number Diff line change @@ -306,9 +306,15 @@ class NODE_EXTERN InitializationResult {
306306// better suited for a public embedder API.
307307NODE_EXTERN int Start (int argc, char * argv[]);
308308
309+ enum StopFlags {
310+ kNoFlags = 1 << 0 ,
311+ kDoNotTerminateIsolate = 1 << 1 ,
312+ };
313+
309314// Tear down Node.js while it is running (there are active handles
310315// in the loop and / or actively executing JavaScript code).
311316NODE_EXTERN int Stop (Environment* env);
317+ NODE_EXTERN int Stop (Environment* env, StopFlags flags);
312318
313319// Set up per-process state needed to run Node.js. This will consume arguments
314320// from argv, fill exec_argv, and possibly add errors resulting from parsing
You can’t perform that action at this time.
0 commit comments