summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cli.rs12
-rw-r--r--src/compiler.rs6
-rw-r--r--src/isolate.rs13
-rw-r--r--src/main.rs6
-rw-r--r--src/ops.rs38
-rw-r--r--src/startup_data.rs (renamed from src/isolate_init.rs)47
-rw-r--r--src/workers.rs20
7 files changed, 42 insertions, 100 deletions
diff --git a/src/cli.rs b/src/cli.rs
index d80587013..42b2b29f8 100644
--- a/src/cli.rs
+++ b/src/cli.rs
@@ -3,7 +3,6 @@
#![allow(dead_code)]
use crate::errors::DenoResult;
-use crate::isolate_init::IsolateInit;
use crate::isolate_state::IsolateState;
use crate::ops;
use crate::permissions::DenoPermissions;
@@ -11,6 +10,7 @@ use deno_core::deno_buf;
use deno_core::deno_mod;
use deno_core::Behavior;
use deno_core::Op;
+use deno_core::StartupData;
use std::sync::atomic::Ordering;
use std::sync::Arc;
@@ -21,19 +21,19 @@ pub type Buf = Box<[u8]>;
/// Implements deno_core::Behavior for the main Deno command-line.
pub struct Cli {
- init: IsolateInit,
+ startup_data: Option<StartupData>,
pub state: Arc<IsolateState>,
pub permissions: Arc<DenoPermissions>, // TODO(ry) move to IsolateState
}
impl Cli {
pub fn new(
- init: IsolateInit,
+ startup_data: Option<StartupData>,
state: Arc<IsolateState>,
permissions: DenoPermissions,
) -> Self {
Self {
- init,
+ startup_data,
state,
permissions: Arc::new(permissions),
}
@@ -66,8 +66,8 @@ impl Cli {
}
impl Behavior for Cli {
- fn startup_snapshot(&mut self) -> Option<deno_buf> {
- self.init.snapshot.take()
+ fn startup_data(&mut self) -> Option<StartupData> {
+ self.startup_data.take()
}
fn resolve(&mut self, specifier: &str, referrer: deno_mod) -> deno_mod {
diff --git a/src/compiler.rs b/src/compiler.rs
index 9edae8cf9..2d6e4a4b7 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -1,12 +1,12 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
use crate::cli::Buf;
-use crate::isolate_init;
use crate::isolate_state::IsolateState;
use crate::msg;
use crate::permissions::{DenoPermissions, PermissionAccessor};
use crate::resources;
use crate::resources::Resource;
use crate::resources::ResourceId;
+use crate::startup_data;
use crate::workers;
use futures::Future;
use serde_json;
@@ -48,7 +48,7 @@ impl ModuleMetaData {
fn lazy_start(parent_state: &IsolateState) -> Resource {
let mut cell = C_RID.lock().unwrap();
- let isolate_init = isolate_init::compiler_isolate_init();
+ let startup_data = startup_data::compiler_isolate_init();
let permissions = DenoPermissions {
allow_read: PermissionAccessor::from(true),
allow_write: PermissionAccessor::from(true),
@@ -58,7 +58,7 @@ fn lazy_start(parent_state: &IsolateState) -> Resource {
let rid = cell.get_or_insert_with(|| {
let resource = workers::spawn(
- isolate_init,
+ Some(startup_data),
parent_state,
"compilerMain()".to_string(),
permissions,
diff --git a/src/isolate.rs b/src/isolate.rs
index 7f3c0d919..379203dd3 100644
--- a/src/isolate.rs
+++ b/src/isolate.rs
@@ -181,7 +181,6 @@ fn fetch_module_meta_data_and_maybe_compile(
mod tests {
use super::*;
use crate::flags;
- use crate::isolate_init::IsolateInit;
use crate::permissions::DenoPermissions;
use crate::tokio_util;
use futures::future::lazy;
@@ -199,12 +198,8 @@ mod tests {
let state = Arc::new(IsolateState::new(flags, rest_argv, None));
let state_ = state.clone();
- let init = IsolateInit {
- snapshot: None,
- init_script: None,
- };
tokio_util::run(lazy(move || {
- let cli = Cli::new(init, state.clone(), DenoPermissions::default());
+ let cli = Cli::new(None, state.clone(), DenoPermissions::default());
let mut isolate = Isolate::new(cli);
if let Err(err) = isolate.execute_mod(&filename, false) {
eprintln!("execute_mod err {:?}", err);
@@ -226,12 +221,8 @@ mod tests {
let state = Arc::new(IsolateState::new(flags, rest_argv, None));
let state_ = state.clone();
- let init = IsolateInit {
- snapshot: None,
- init_script: None,
- };
tokio_util::run(lazy(move || {
- let cli = Cli::new(init, state.clone(), DenoPermissions::default());
+ let cli = Cli::new(None, state.clone(), DenoPermissions::default());
let mut isolate = Isolate::new(cli);
if let Err(err) = isolate.execute_mod(&filename, false) {
eprintln!("execute_mod err {:?}", err);
diff --git a/src/main.rs b/src/main.rs
index 0f12eebd1..4657a3a4d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -19,7 +19,6 @@ mod global_timer;
mod http_body;
mod http_util;
pub mod isolate;
-pub mod isolate_init;
pub mod isolate_state;
pub mod js_errors;
pub mod modules;
@@ -30,6 +29,7 @@ pub mod permissions;
mod repl;
pub mod resolve_addr;
pub mod resources;
+mod startup_data;
mod tokio_util;
mod tokio_write;
pub mod version;
@@ -110,9 +110,9 @@ fn main() {
let state = Arc::new(IsolateState::new(flags, rest_argv, None));
let state_ = state.clone();
- let isolate_init = isolate_init::deno_isolate_init();
+ let startup_data = startup_data::deno_isolate_init();
let permissions = permissions::DenoPermissions::from_flags(&state.flags);
- let cli = Cli::new(isolate_init, state_, permissions);
+ let cli = Cli::new(Some(startup_data), state_, permissions);
let mut isolate = Isolate::new(cli);
let main_future = lazy(move || {
diff --git a/src/ops.rs b/src/ops.rs
index c6b9fe84a..254a21563 100644
--- a/src/ops.rs
+++ b/src/ops.rs
@@ -1880,7 +1880,7 @@ fn op_worker_post_message(
mod tests {
use super::*;
use crate::cli::Cli;
- use crate::isolate_init::IsolateInit;
+ use crate::isolate_state::IsolateState;
use crate::permissions::{DenoPermissions, PermissionAccessor};
#[test]
@@ -1893,14 +1893,7 @@ mod tests {
allow_run: PermissionAccessor::from(true),
..Default::default()
};
- let cli = Cli::new(
- IsolateInit {
- snapshot: None,
- init_script: None,
- },
- state,
- permissions,
- );
+ let cli = Cli::new(None, state, permissions);
let builder = &mut FlatBufferBuilder::new();
let fetch_msg_args = msg::FetchModuleMetaDataArgs {
specifier: Some(builder.create_string("./somefile")),
@@ -1934,14 +1927,7 @@ mod tests {
allow_run: PermissionAccessor::from(true),
..Default::default()
};
- let cli = Cli::new(
- IsolateInit {
- snapshot: None,
- init_script: None,
- },
- state,
- permissions,
- );
+ let cli = Cli::new(None, state, permissions);
let builder = &mut FlatBufferBuilder::new();
let fetch_msg_args = msg::FetchModuleMetaDataArgs {
specifier: Some(builder.create_string("./somefile")),
@@ -1975,14 +1961,7 @@ mod tests {
allow_run: PermissionAccessor::from(true),
..Default::default()
};
- let cli = Cli::new(
- IsolateInit {
- snapshot: None,
- init_script: None,
- },
- state,
- permissions,
- );
+ let cli = Cli::new(None, state, permissions);
let builder = &mut FlatBufferBuilder::new();
let fetch_msg_args = msg::FetchModuleMetaDataArgs {
specifier: Some(builder.create_string("./somefile")),
@@ -2015,14 +1994,7 @@ mod tests {
allow_net: PermissionAccessor::from(true),
..Default::default()
};
- let cli = Cli::new(
- IsolateInit {
- snapshot: None,
- init_script: None,
- },
- state,
- permissions,
- );
+ let cli = Cli::new(None, state, permissions);
let builder = &mut FlatBufferBuilder::new();
let fetch_msg_args = msg::FetchModuleMetaDataArgs {
specifier: Some(builder.create_string("./somefile")),
diff --git a/src/isolate_init.rs b/src/startup_data.rs
index fbdfdd4a5..29ae4db7d 100644
--- a/src/isolate_init.rs
+++ b/src/startup_data.rs
@@ -1,17 +1,8 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
use deno_core::deno_buf;
+use deno_core::{StartupData, StartupScript};
-pub struct IsolateInitScript {
- pub source: String,
- pub filename: String,
-}
-
-pub struct IsolateInit {
- pub snapshot: Option<deno_buf>,
- pub init_script: Option<IsolateInitScript>,
-}
-
-pub fn deno_isolate_init() -> IsolateInit {
+pub fn deno_isolate_init() -> StartupData {
if cfg!(feature = "no-snapshot-init") {
debug!("Deno isolate init without snapshots.");
#[cfg(not(feature = "check-only"))]
@@ -20,13 +11,10 @@ pub fn deno_isolate_init() -> IsolateInit {
#[cfg(feature = "check-only")]
let source_bytes = vec![];
- IsolateInit {
- snapshot: None,
- init_script: Some(IsolateInitScript {
- filename: "gen/bundle/main.js".to_string(),
- source: std::str::from_utf8(source_bytes).unwrap().to_string(),
- }),
- }
+ StartupData::Script(StartupScript {
+ filename: "gen/bundle/main.js".to_string(),
+ source: std::str::from_utf8(source_bytes).unwrap().to_string(),
+ })
} else {
debug!("Deno isolate init with snapshots.");
#[cfg(not(any(feature = "check-only", feature = "no-snapshot-init")))]
@@ -36,15 +24,12 @@ pub fn deno_isolate_init() -> IsolateInit {
let data = vec![];
unsafe {
- IsolateInit {
- snapshot: Some(deno_buf::from_raw_parts(data.as_ptr(), data.len())),
- init_script: None,
- }
+ StartupData::Snapshot(deno_buf::from_raw_parts(data.as_ptr(), data.len()))
}
}
}
-pub fn compiler_isolate_init() -> IsolateInit {
+pub fn compiler_isolate_init() -> StartupData {
if cfg!(feature = "no-snapshot-init") {
debug!("Deno isolate init without snapshots.");
#[cfg(not(feature = "check-only"))]
@@ -53,13 +38,10 @@ pub fn compiler_isolate_init() -> IsolateInit {
#[cfg(feature = "check-only")]
let source_bytes = vec![];
- IsolateInit {
- snapshot: None,
- init_script: Some(IsolateInitScript {
- filename: "gen/bundle/compiler.js".to_string(),
- source: std::str::from_utf8(source_bytes).unwrap().to_string(),
- }),
- }
+ StartupData::Script(StartupScript {
+ filename: "gen/bundle/compiler.js".to_string(),
+ source: std::str::from_utf8(source_bytes).unwrap().to_string(),
+ })
} else {
debug!("Deno isolate init with snapshots.");
#[cfg(not(any(feature = "check-only", feature = "no-snapshot-init")))]
@@ -69,10 +51,7 @@ pub fn compiler_isolate_init() -> IsolateInit {
let data = vec![];
unsafe {
- IsolateInit {
- snapshot: Some(deno_buf::from_raw_parts(data.as_ptr(), data.len())),
- init_script: None,
- }
+ StartupData::Snapshot(deno_buf::from_raw_parts(data.as_ptr(), data.len()))
}
}
}
diff --git a/src/workers.rs b/src/workers.rs
index 8393de222..edded7756 100644
--- a/src/workers.rs
+++ b/src/workers.rs
@@ -3,7 +3,6 @@ use crate::cli::Buf;
use crate::cli::Cli;
use crate::flags::DenoFlags;
use crate::isolate::Isolate;
-use crate::isolate_init::IsolateInit;
use crate::isolate_state::IsolateState;
use crate::isolate_state::WorkerChannels;
use crate::js_errors::JSErrorColor;
@@ -11,6 +10,7 @@ use crate::permissions::DenoPermissions;
use crate::resources;
use crate::tokio_util;
use deno_core::JSError;
+use deno_core::StartupData;
use futures::future::lazy;
use futures::sync::mpsc;
use futures::sync::oneshot;
@@ -26,7 +26,7 @@ pub struct Worker {
impl Worker {
pub fn new(
- init: IsolateInit,
+ startup_data: Option<StartupData>,
flags: DenoFlags,
argv: Vec<String>,
permissions: DenoPermissions,
@@ -40,7 +40,7 @@ impl Worker {
let state =
Arc::new(IsolateState::new(flags, argv, Some(internal_channels)));
- let cli = Cli::new(init, state, permissions);
+ let cli = Cli::new(startup_data, state, permissions);
let isolate = Isolate::new(cli);
let worker = Worker { isolate };
@@ -62,7 +62,7 @@ impl Future for Worker {
}
pub fn spawn(
- init: IsolateInit,
+ startup_data: Option<StartupData>,
state: &IsolateState,
js_source: String,
permissions: DenoPermissions,
@@ -81,7 +81,7 @@ pub fn spawn(
.spawn(move || {
tokio_util::run(lazy(move || {
let (mut worker, external_channels) =
- Worker::new(init, flags, argv, permissions);
+ Worker::new(startup_data, flags, argv, permissions);
let resource = resources::add_worker(external_channels);
p.send(resource.clone()).unwrap();
@@ -113,13 +113,13 @@ pub fn spawn(
#[cfg(test)]
mod tests {
use super::*;
- use crate::isolate_init;
+ use crate::startup_data;
#[test]
fn test_spawn() {
- let isolate_init = isolate_init::compiler_isolate_init();
+ let startup_data = startup_data::compiler_isolate_init();
let resource = spawn(
- isolate_init,
+ Some(startup_data),
&IsolateState::mock(),
r#"
onmessage = function(e) {
@@ -154,9 +154,9 @@ mod tests {
#[test]
fn removed_from_resource_table_on_close() {
- let isolate_init = isolate_init::compiler_isolate_init();
+ let startup_data = startup_data::compiler_isolate_init();
let resource = spawn(
- isolate_init,
+ Some(startup_data),
&IsolateState::mock(),
"onmessage = () => close();".into(),
DenoPermissions::default(),