summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-11-14 21:54:21 -0500
committerRyan Dahl <ry@tinyclouds.org>2018-11-16 08:25:54 +0800
commit9d9853b319a8a989080cf01d2f748b8fe844a812 (patch)
tree90aeaa2ce98964a0284134b52bd1cc1831187def
parentb2bc0a7fc9291d1131c9b577768608e7911ea931 (diff)
Lift snapshot to be an argument of Isolate::new().
-rw-r--r--src/isolate.rs28
-rw-r--r--src/main.rs7
2 files changed, 27 insertions, 8 deletions
diff --git a/src/isolate.rs b/src/isolate.rs
index 6e8b1864d..ccfb3453c 100644
--- a/src/isolate.rs
+++ b/src/isolate.rs
@@ -10,7 +10,6 @@ use errors::DenoResult;
use flags;
use libdeno;
use permissions::DenoPermissions;
-use snapshot;
use futures::Future;
use libc::c_void;
@@ -130,6 +129,7 @@ fn empty() -> libdeno::deno_buf {
impl Isolate {
pub fn new(
+ snapshot: libdeno::deno_buf,
flags: flags::DenoFlags,
argv_rest: Vec<String>,
dispatch: Dispatch,
@@ -138,9 +138,8 @@ impl Isolate {
unsafe { libdeno::deno_init() };
});
let shared = empty(); // TODO Use shared for message passing.
- let libdeno_isolate = unsafe {
- libdeno::deno_new(snapshot::deno_snapshot(), shared, pre_dispatch)
- };
+ let libdeno_isolate =
+ unsafe { libdeno::deno_new(snapshot, shared, pre_dispatch) };
// This channel handles sending async messages back to the runtime.
let (tx, rx) = mpsc::channel::<(i32, Buf)>();
@@ -389,12 +388,15 @@ fn recv_deadline<T>(
mod tests {
use super::*;
use futures;
+ use snapshot;
#[test]
fn test_dispatch_sync() {
let argv = vec![String::from("./deno"), String::from("hello.js")];
let (flags, rest_argv, _) = flags::set_flags(argv).unwrap();
- let mut isolate = Isolate::new(flags, rest_argv, dispatch_sync);
+ // TODO Don't use deno_snapshot for these tests.
+ let mut isolate =
+ Isolate::new(snapshot::deno_snapshot(), flags, rest_argv, dispatch_sync);
tokio_util::init(|| {
isolate
.execute(
@@ -434,7 +436,13 @@ mod tests {
fn test_metrics_sync() {
let argv = vec![String::from("./deno"), String::from("hello.js")];
let (flags, rest_argv, _) = flags::set_flags(argv).unwrap();
- let mut isolate = Isolate::new(flags, rest_argv, metrics_dispatch_sync);
+ // TODO Don't use deno_snapshot for these tests.
+ let mut isolate = Isolate::new(
+ snapshot::deno_snapshot(),
+ flags,
+ rest_argv,
+ metrics_dispatch_sync,
+ );
tokio_util::init(|| {
// Verify that metrics have been properly initialized.
{
@@ -469,7 +477,13 @@ mod tests {
fn test_metrics_async() {
let argv = vec![String::from("./deno"), String::from("hello.js")];
let (flags, rest_argv, _) = flags::set_flags(argv).unwrap();
- let mut isolate = Isolate::new(flags, rest_argv, metrics_dispatch_async);
+ // TODO Don't use deno_snapshot for these tests.
+ let mut isolate = Isolate::new(
+ snapshot::deno_snapshot(),
+ flags,
+ rest_argv,
+ metrics_dispatch_async,
+ );
tokio_util::init(|| {
// Verify that metrics have been properly initialized.
{
diff --git a/src/main.rs b/src/main.rs
index 6530c37fc..b05a41642 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -95,7 +95,12 @@ fn main() {
log::LevelFilter::Info
});
- let mut isolate = isolate::Isolate::new(flags, rest_argv, ops::dispatch);
+ let mut isolate = isolate::Isolate::new(
+ snapshot::deno_snapshot(),
+ flags,
+ rest_argv,
+ ops::dispatch,
+ );
tokio_util::init(|| {
isolate
.execute("deno_main.js", "denoMain();")