diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-04-08 10:12:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-08 10:12:43 -0400 |
commit | f7fdb90fd51e340ea598c055bb3573d3cdfbdaa8 (patch) | |
tree | 40db117b3a9fd2ac70e3b5551195e21eef464138 /cli/isolate.rs | |
parent | cdb72afd8d91978573f0fa897844aee853983b44 (diff) |
core: snapshot improvements (#2052)
* Moves how snapshots are supplied to the Isolate. Previously they were
given by Behavior::startup_data() but it was only called once at
startup. It makes more sense (and simplifies Behavior) to pass it to the
constructor of Isolate.
* Adds new libdeno type deno_snapshot instead of overloading
deno_buf.
* Adds new libdeno method to delete snapshot deno_snapshot_delete().
* Renames deno_get_snapshot() to deno_snapshot_new().
* Makes StartupData hold references to snapshots. This was implicit when
it previously held a deno_buf but is made explicit now. Note that
include_bytes!() returns a &'static [u8] and we want to avoid
copying that.
Diffstat (limited to 'cli/isolate.rs')
-rw-r--r-- | cli/isolate.rs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/cli/isolate.rs b/cli/isolate.rs index 1d7201074..2e6d69d87 100644 --- a/cli/isolate.rs +++ b/cli/isolate.rs @@ -13,6 +13,7 @@ use deno; use deno::deno_mod; use deno::Behavior; use deno::JSError; +use deno::StartupData; use futures::future::Either; use futures::Async; use futures::Future; @@ -32,10 +33,10 @@ pub struct Isolate<B: Behavior> { } impl<B: DenoBehavior> Isolate<B> { - pub fn new(behavior: B) -> Isolate<B> { + pub fn new(startup_data: StartupData, behavior: B) -> Isolate<B> { let state = behavior.state().clone(); Self { - inner: CoreIsolate::new(behavior), + inner: CoreIsolate::new(startup_data, behavior), state, } } @@ -270,8 +271,8 @@ mod tests { let state = Arc::new(IsolateState::new(flags, rest_argv, None, false)); let state_ = state.clone(); tokio_util::run(lazy(move || { - let cli = CliBehavior::new(None, state.clone()); - let mut isolate = Isolate::new(cli); + let cli = CliBehavior::new(state.clone()); + let mut isolate = Isolate::new(StartupData::None, cli); if let Err(err) = isolate.execute_mod(&filename, false) { eprintln!("execute_mod err {:?}", err); } @@ -293,8 +294,8 @@ mod tests { let state = Arc::new(IsolateState::new(flags, rest_argv, None, false)); let state_ = state.clone(); tokio_util::run(lazy(move || { - let cli = CliBehavior::new(None, state.clone()); - let mut isolate = Isolate::new(cli); + let cli = CliBehavior::new(state.clone()); + let mut isolate = Isolate::new(StartupData::None, cli); if let Err(err) = isolate.execute_mod(&filename, false) { eprintln!("execute_mod err {:?}", err); } |