File tree Expand file tree Collapse file tree 4 files changed +17
-4
lines changed Expand file tree Collapse file tree 4 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -911,10 +911,11 @@ void Environment::InitializeLibuv() {
911
911
StartProfilerIdleNotifier ();
912
912
}
913
913
914
- void Environment::ExitEnv () {
914
+ void Environment::ExitEnv (StopFlags flags ) {
915
915
// Should not access non-thread-safe methods here.
916
916
set_stopping (true );
917
- isolate_->TerminateExecution ();
917
+ if ((flags & StopFlags::kDoNotTerminateIsolate ) == 0 )
918
+ isolate_->TerminateExecution ();
918
919
SetImmediateThreadsafe ([](Environment* env) {
919
920
env->set_can_call_into_js (false );
920
921
uv_stop (env->event_loop ());
Original file line number Diff line number Diff line change @@ -636,7 +636,7 @@ class Environment : public MemoryRetainer {
636
636
void RegisterHandleCleanups ();
637
637
void CleanupHandles ();
638
638
void Exit (ExitCode code);
639
- void ExitEnv ();
639
+ void ExitEnv (StopFlags flags );
640
640
641
641
// Register clean-up cb to be called on environment destruction.
642
642
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) {
1254
1254
}
1255
1255
1256
1256
int 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);
1258
1262
return 0 ;
1259
1263
}
1260
1264
Original file line number Diff line number Diff line change @@ -306,9 +306,17 @@ class NODE_EXTERN InitializationResult {
306
306
// better suited for a public embedder API.
307
307
NODE_EXTERN int Start (int argc, char * argv[]);
308
308
309
+ enum StopFlags {
310
+ kNoFlags = 1 << 0 ,
311
+ // Do not explicitly terminate the Isolate
312
+ // when exiting the Environment.
313
+ kDoNotTerminateIsolate = 1 << 1 ,
314
+ };
315
+
309
316
// Tear down Node.js while it is running (there are active handles
310
317
// in the loop and / or actively executing JavaScript code).
311
318
NODE_EXTERN int Stop (Environment* env);
319
+ NODE_EXTERN int Stop (Environment* env, StopFlags flags);
312
320
313
321
// Set up per-process state needed to run Node.js. This will consume arguments
314
322
// from argv, fill exec_argv, and possibly add errors resulting from parsing
You can’t perform that action at this time.
0 commit comments