diff options
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/repl/session.rs | 18 | ||||
-rw-r--r-- | cli/tools/test/mod.rs | 10 |
2 files changed, 26 insertions, 2 deletions
diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index b46f73d5a..0a0dd6648 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -38,6 +38,7 @@ use deno_core::serde_json; use deno_core::serde_json::Value; use deno_core::unsync::spawn; use deno_core::LocalInspectorSession; +use deno_core::PollEventLoopOptions; use deno_graph::source::ResolutionMode; use deno_graph::source::Resolver; use deno_graph::Position; @@ -200,10 +201,15 @@ impl ReplSession { let mut session = worker.create_inspector_session().await; worker + .js_runtime .with_event_loop( session .post_message::<()>("Runtime.enable", None) .boxed_local(), + PollEventLoopOptions { + wait_for_inspector: false, + ..Default::default() + }, ) .await?; @@ -291,7 +297,17 @@ impl ReplSession { ) -> Result<Value, AnyError> { self .worker - .with_event_loop(self.session.post_message(method, params).boxed_local()) + .js_runtime + .with_event_loop( + self.session.post_message(method, params).boxed_local(), + PollEventLoopOptions { + wait_for_inspector: false, + // NOTE(bartlomieju): this is an important bit; we don't want to pump V8 + // message loop here, so that GC won't run. Otherwise, the resulting + // object might be GC'ed before we have a chance to inspect it. + pump_v8_message_loop: false, + }, + ) .await } diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs index 5e34e345f..836004f86 100644 --- a/cli/tools/test/mod.rs +++ b/cli/tools/test/mod.rs @@ -44,6 +44,7 @@ use deno_core::unsync::spawn_blocking; use deno_core::url::Url; use deno_core::v8; use deno_core::ModuleSpecifier; +use deno_core::PollEventLoopOptions; use deno_runtime::deno_io::Stdio; use deno_runtime::deno_io::StdioPipe; use deno_runtime::fmt_errors::format_js_error; @@ -467,7 +468,14 @@ pub async fn test_specifier( if let Some(coverage_collector) = coverage_collector.as_mut() { worker - .with_event_loop(coverage_collector.stop_collecting().boxed_local()) + .js_runtime + .with_event_loop( + coverage_collector.stop_collecting().boxed_local(), + PollEventLoopOptions { + wait_for_inspector: false, + ..Default::default() + }, + ) .await?; } Ok(()) |