diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-03-25 17:43:31 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-25 17:43:31 -0400 |
commit | d8714281b40f457420608c7e766fe787609c7afb (patch) | |
tree | f034d9515be1fd12471f94e20b2b068b492fe768 /cli/isolate.rs | |
parent | 5ae78eb1de378f04d0b9d54842bcb898053467d6 (diff) |
Resolve callback moved from Behavior to mod_instantiate() (#1999)
This simplifies the Behavior trait and makes it more explicit where the
resolve callback is being made.
Also s/StartupScript/Script
Diffstat (limited to 'cli/isolate.rs')
-rw-r--r-- | cli/isolate.rs | 11 |
1 files changed, 10 insertions, 1 deletions
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)?; |