From d68b44b6b2fad6c321aa01a039030bb98c5be88d Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Tue, 23 Apr 2019 18:58:00 -0400 Subject: core: make Isolate concrete, remove Dispatch trait (#2183) Op dispatch is now dynamically dispatched, so slightly less efficient. The immeasurable perf hit is a reasonable trade for the API simplicity that is gained here. --- cli/worker.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'cli/worker.rs') diff --git a/cli/worker.rs b/cli/worker.rs index 408bae1c6..8b420cef6 100644 --- a/cli/worker.rs +++ b/cli/worker.rs @@ -9,6 +9,7 @@ use crate::msg; use crate::state::ThreadSafeState; use crate::tokio_util; use deno; +use deno::Config; use deno::JSError; use deno::Loader; use deno::StartupData; @@ -21,7 +22,7 @@ use url::Url; /// Wraps deno::Isolate to provide source maps, ops for the CLI, and /// high-level module loading pub struct Worker { - inner: deno::Isolate, + inner: deno::Isolate, pub modules: deno::Modules, pub state: ThreadSafeState, } @@ -33,8 +34,12 @@ impl Worker { state: ThreadSafeState, ) -> Worker { let state_ = state.clone(); + let mut config = Config::default(); + config.dispatch(move |control_buf, zero_copy_buf| { + state_.dispatch(control_buf, zero_copy_buf) + }); Self { - inner: deno::Isolate::new(startup_data, state_), + inner: deno::Isolate::new(startup_data, config), modules: deno::Modules::new(), state, } @@ -154,7 +159,6 @@ pub fn root_specifier_to_url( } impl Loader for Worker { - type Dispatch = ThreadSafeState; type Error = DenoError; fn resolve(specifier: &str, referrer: &str) -> Result { @@ -187,7 +191,7 @@ impl Loader for Worker { fn isolate_and_modules<'a: 'b + 'c, 'b, 'c>( &'a mut self, - ) -> (&'b mut deno::Isolate, &'c mut deno::Modules) { + ) -> (&'b mut deno::Isolate, &'c mut deno::Modules) { (&mut self.inner, &mut self.modules) } } -- cgit v1.2.3