summaryrefslogtreecommitdiff
path: root/core/runtime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime.rs')
-rw-r--r--core/runtime.rs80
1 files changed, 38 insertions, 42 deletions
diff --git a/core/runtime.rs b/core/runtime.rs
index 29064df63..ecfd0bd57 100644
--- a/core/runtime.rs
+++ b/core/runtime.rs
@@ -510,7 +510,7 @@ impl JsRuntime {
maybe_load_callback: Option<ExtModuleLoaderCb>,
) -> JsRuntime {
let init_mode = InitMode::from_options(&options);
- let (op_state, ops) = Self::create_opstate(&mut options);
+ let (op_state, ops) = Self::create_opstate(&mut options, init_mode);
let op_state = Rc::new(RefCell::new(op_state));
// Collect event-loop middleware
@@ -860,7 +860,7 @@ impl JsRuntime {
realm.execute_script(
self.v8_isolate(),
file_source.specifier,
- file_source.load(),
+ file_source.load()?,
)?;
}
}
@@ -963,11 +963,20 @@ impl JsRuntime {
}
/// Initializes ops of provided Extensions
- fn create_opstate(options: &mut RuntimeOptions) -> (OpState, Vec<OpDecl>) {
+ fn create_opstate(
+ options: &mut RuntimeOptions,
+ init_mode: InitMode,
+ ) -> (OpState, Vec<OpDecl>) {
// Add built-in extension
- options
- .extensions
- .insert(0, crate::ops_builtin::core::init());
+ if init_mode == InitMode::FromSnapshot {
+ options
+ .extensions
+ .insert(0, crate::ops_builtin::core::init_ops());
+ } else {
+ options
+ .extensions
+ .insert(0, crate::ops_builtin::core::init_ops_and_esm());
+ }
let ops = Self::collect_ops(&mut options.extensions);
@@ -1849,19 +1858,6 @@ impl JsRuntime {
.map(|handle| v8::Local::new(tc_scope, handle))
.expect("ModuleInfo not found");
let mut status = module.get_status();
- if status == v8::ModuleStatus::Evaluated {
- let (sender, receiver) = oneshot::channel();
- sender.send(Ok(())).unwrap();
- return receiver;
- }
- if status == v8::ModuleStatus::Errored {
- let (sender, receiver) = oneshot::channel();
- let exception = module.get_exception();
- sender
- .send(exception_to_err_result(tc_scope, exception, false))
- .unwrap();
- return receiver;
- }
assert_eq!(
status,
v8::ModuleStatus::Instantiated,
@@ -2707,7 +2703,7 @@ pub mod tests {
}
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init(mode, dispatch_count.clone())],
+ extensions: vec![test_ext::init_ops(mode, dispatch_count.clone())],
get_error_class_fn: Some(&|error| {
crate::error::get_custom_error_class(error).unwrap()
}),
@@ -3122,7 +3118,7 @@ pub mod tests {
deno_core::extension!(test_ext, ops = [op_err]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&get_error_class_name),
..Default::default()
});
@@ -3728,7 +3724,7 @@ main();
deno_core::extension!(test_ext, ops = [op_err_sync, op_err_async]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -3890,7 +3886,7 @@ assertEquals(1, notify_return_value);
state = |state| state.put(InnerState(42))
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -3921,7 +3917,7 @@ assertEquals(1, notify_return_value);
ops = [op_sync_serialize_object_with_numbers_as_keys]
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -3963,7 +3959,7 @@ Deno.core.ops.op_sync_serialize_object_with_numbers_as_keys({
ops = [op_async_serialize_object_with_numbers_as_keys]
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -3999,7 +3995,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_async_sleep]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4054,7 +4050,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_macrotask, op_next_tick]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4195,7 +4191,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_promise_reject]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4338,7 +4334,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
}
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
module_loader: Some(Rc::new(ModsLoader)),
..Default::default()
});
@@ -4363,7 +4359,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_err]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
assert!(runtime
@@ -4388,7 +4384,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_add_4]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let r = runtime
@@ -4411,7 +4407,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops_fn = ops);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let err = runtime
@@ -4440,7 +4436,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_sum_take, op_boomerang]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4509,7 +4505,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
middleware = |op| if op.is_unstable { op.disable() } else { op }
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
runtime
@@ -4557,7 +4553,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let realm = runtime.create_realm().unwrap();
@@ -4590,7 +4586,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
startup_snapshot: Some(Snapshot::Boxed(snapshot)),
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let realm = runtime.create_realm().unwrap();
@@ -4624,7 +4620,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&|error| {
crate::error::get_custom_error_class(error).unwrap()
}),
@@ -4672,7 +4668,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&|error| {
crate::error::get_custom_error_class(error).unwrap()
}),
@@ -4749,7 +4745,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_pending]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4796,7 +4792,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_pending]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -4896,7 +4892,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [a::op_test, op_test]);
JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
}
@@ -4915,7 +4911,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", {
deno_core::extension!(test_ext, ops = [op_test_sync, op_test_async]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});