diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/cli_behavior.rs | 5 | ||||
-rw-r--r-- | cli/compiler.rs | 5 | ||||
-rw-r--r-- | cli/isolate.rs | 11 | ||||
-rw-r--r-- | cli/isolate_state.rs | 14 | ||||
-rw-r--r-- | cli/startup_data.rs | 6 |
5 files changed, 13 insertions, 28 deletions
diff --git a/cli/cli_behavior.rs b/cli/cli_behavior.rs index a297bdef9..c077d1ad1 100644 --- a/cli/cli_behavior.rs +++ b/cli/cli_behavior.rs @@ -2,7 +2,6 @@ use crate::isolate_state::*; use crate::ops; use deno_core::deno_buf; -use deno_core::deno_mod; use deno_core::Behavior; use deno_core::Op; use deno_core::StartupData; @@ -43,10 +42,6 @@ impl Behavior for CliBehavior { self.startup_data.take() } - fn resolve(&mut self, specifier: &str, referrer: deno_mod) -> deno_mod { - self.state_resolve(specifier, referrer) - } - fn dispatch( &mut self, control: &[u8], diff --git a/cli/compiler.rs b/cli/compiler.rs index e90a10c16..0452e08a9 100644 --- a/cli/compiler.rs +++ b/cli/compiler.rs @@ -9,7 +9,6 @@ use crate::startup_data; use crate::workers; use crate::workers::WorkerBehavior; use deno_core::deno_buf; -use deno_core::deno_mod; use deno_core::Behavior; use deno_core::Buf; use deno_core::Op; @@ -51,10 +50,6 @@ impl Behavior for CompilerBehavior { Some(startup_data::compiler_isolate_init()) } - fn resolve(&mut self, specifier: &str, referrer: deno_mod) -> deno_mod { - self.state_resolve(specifier, referrer) - } - fn dispatch( &mut self, control: &[u8], diff --git a/cli/isolate.rs b/cli/isolate.rs index d0c113da0..fad1f5ab5 100644 --- a/cli/isolate.rs +++ b/cli/isolate.rs @@ -14,6 +14,7 @@ use deno_core::Behavior; use deno_core::JSError; use futures::Async; use futures::Future; +use std::sync::atomic::Ordering; use std::sync::Arc; pub trait DenoBehavior: Behavior + IsolateStateContainer + Send {} @@ -122,9 +123,17 @@ impl<B: DenoBehavior> Isolate<B> { self.mod_load_deps(id)?; + let state = self.state.clone(); + + let mut resolve = move |specifier: &str, referrer: deno_mod| -> deno_mod { + state.metrics.resolve_count.fetch_add(1, Ordering::Relaxed); + let mut modules = state.modules.lock().unwrap(); + modules.resolve_cb(&state.dir, specifier, referrer) + }; + self .inner - .mod_instantiate(id) + .mod_instantiate(id, &mut resolve) .map_err(RustOrJsError::from)?; if !is_prefetch { self.inner.mod_evaluate(id).map_err(RustOrJsError::from)?; diff --git a/cli/isolate_state.rs b/cli/isolate_state.rs index 6435b2e8b..4de074c06 100644 --- a/cli/isolate_state.rs +++ b/cli/isolate_state.rs @@ -5,7 +5,6 @@ use crate::flags; use crate::global_timer::GlobalTimer; use crate::modules::Modules; use crate::permissions::DenoPermissions; -use deno_core::deno_mod; use deno_core::Buf; use futures::sync::mpsc as async_mpsc; use std; @@ -144,16 +143,3 @@ impl IsolateState { pub trait IsolateStateContainer { fn state(&self) -> Arc<IsolateState>; } - -/// Provides state_resolve function for IsolateStateContainer implementors -pub trait IsolateStateModuleResolution: IsolateStateContainer { - fn state_resolve(&mut self, specifier: &str, referrer: deno_mod) -> deno_mod { - let state = self.state(); - state.metrics.resolve_count.fetch_add(1, Ordering::Relaxed); - let mut modules = state.modules.lock().unwrap(); - modules.resolve_cb(&state.dir, specifier, referrer) - } -} - -// Auto implementation for all IsolateStateContainer implementors -impl<T> IsolateStateModuleResolution for T where T: IsolateStateContainer {} diff --git a/cli/startup_data.rs b/cli/startup_data.rs index 29ae4db7d..5ef74de06 100644 --- a/cli/startup_data.rs +++ b/cli/startup_data.rs @@ -1,6 +1,6 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. use deno_core::deno_buf; -use deno_core::{StartupData, StartupScript}; +use deno_core::{Script, StartupData}; pub fn deno_isolate_init() -> StartupData { if cfg!(feature = "no-snapshot-init") { @@ -11,7 +11,7 @@ pub fn deno_isolate_init() -> StartupData { #[cfg(feature = "check-only")] let source_bytes = vec![]; - StartupData::Script(StartupScript { + StartupData::Script(Script { filename: "gen/bundle/main.js".to_string(), source: std::str::from_utf8(source_bytes).unwrap().to_string(), }) @@ -38,7 +38,7 @@ pub fn compiler_isolate_init() -> StartupData { #[cfg(feature = "check-only")] let source_bytes = vec![]; - StartupData::Script(StartupScript { + StartupData::Script(Script { filename: "gen/bundle/compiler.js".to_string(), source: std::str::from_utf8(source_bytes).unwrap().to_string(), }) |