From d8714281b40f457420608c7e766fe787609c7afb Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 25 Mar 2019 17:43:31 -0400 Subject: 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 --- cli/isolate.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'cli/isolate.rs') 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 Isolate { 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)?; -- cgit v1.2.3