summaryrefslogtreecommitdiff
path: root/cli/isolate.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-03-25 17:43:31 -0400
committerGitHub <noreply@github.com>2019-03-25 17:43:31 -0400
commitd8714281b40f457420608c7e766fe787609c7afb (patch)
treef034d9515be1fd12471f94e20b2b068b492fe768 /cli/isolate.rs
parent5ae78eb1de378f04d0b9d54842bcb898053467d6 (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.rs11
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)?;