summaryrefslogtreecommitdiff
path: root/core/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime')
-rw-r--r--core/runtime/jsruntime.rs59
-rw-r--r--core/runtime/ops.rs2
-rw-r--r--core/runtime/snapshot_util.rs5
-rw-r--r--core/runtime/tests.rs46
4 files changed, 59 insertions, 53 deletions
diff --git a/core/runtime/jsruntime.rs b/core/runtime/jsruntime.rs
index e6b531d61..2e473e7c9 100644
--- a/core/runtime/jsruntime.rs
+++ b/core/runtime/jsruntime.rs
@@ -505,7 +505,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
@@ -844,25 +844,29 @@ impl JsRuntime {
for extension in &extensions {
let maybe_esm_entry_point = extension.get_esm_entry_point();
- for file_source in extension.get_esm_sources() {
- self
- .load_side_module(
- &ModuleSpecifier::parse(file_source.specifier)?,
- None,
- )
- .await?;
+ if let Some(esm_files) = extension.get_esm_sources() {
+ for file_source in esm_files {
+ self
+ .load_side_module(
+ &ModuleSpecifier::parse(file_source.specifier)?,
+ None,
+ )
+ .await?;
+ }
}
if let Some(entry_point) = maybe_esm_entry_point {
esm_entrypoints.push(entry_point);
}
- for file_source in extension.get_js_sources() {
- realm.execute_script(
- self.v8_isolate(),
- file_source.specifier,
- file_source.load()?,
- )?;
+ if let Some(js_files) = extension.get_js_sources() {
+ for file_source in js_files {
+ realm.execute_script(
+ self.v8_isolate(),
+ file_source.specifier,
+ file_source.load()?,
+ )?;
+ }
}
if extension.is_core {
@@ -880,16 +884,6 @@ impl JsRuntime {
panic!("{} not present in the module map", specifier)
})
};
- {
- let module_map_rc = self.module_map.clone();
- let module_map = module_map_rc.borrow();
- let handle = module_map.handles.get(mod_id).unwrap().clone();
- let mut scope = realm.handle_scope(self.v8_isolate());
- let handle = v8::Local::new(&mut scope, handle);
- if handle.get_status() == v8::ModuleStatus::Evaluated {
- continue;
- }
- }
let receiver = self.mod_evaluate(mod_id);
self.run_event_loop(false).await?;
receiver
@@ -973,11 +967,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_ext());
+ 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);
diff --git a/core/runtime/ops.rs b/core/runtime/ops.rs
index 84b578aeb..5e51414d3 100644
--- a/core/runtime/ops.rs
+++ b/core/runtime/ops.rs
@@ -250,7 +250,7 @@ mod tests {
test: &'static str,
) -> Result<(), AnyError> {
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![testing::init_ext()],
+ extensions: vec![testing::init_ops_and_esm()],
..Default::default()
});
runtime
diff --git a/core/runtime/snapshot_util.rs b/core/runtime/snapshot_util.rs
index dba1bc233..88c273147 100644
--- a/core/runtime/snapshot_util.rs
+++ b/core/runtime/snapshot_util.rs
@@ -57,9 +57,12 @@ pub fn create_snapshot(
.iter()
.flat_map(|e| vec![e.get_esm_sources(), e.get_js_sources()])
.flatten()
+ .flatten()
{
use crate::ExtensionFileSourceCode;
- if let ExtensionFileSourceCode::LoadAtRuntime(path) = &source.code {
+ if let ExtensionFileSourceCode::LoadedFromFsDuringSnapshot(path) =
+ &source.code
+ {
files_loaded_during_snapshot.push(path.clone());
}
}
diff --git a/core/runtime/tests.rs b/core/runtime/tests.rs
index faabef0c4..88c62e280 100644
--- a/core/runtime/tests.rs
+++ b/core/runtime/tests.rs
@@ -100,7 +100,7 @@ fn setup(mode: Mode) -> (JsRuntime, Arc<AtomicUsize>) {
}
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext(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()
}),
@@ -515,7 +515,7 @@ async fn test_error_builder() {
deno_core::extension!(test_ext, ops = [op_err]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&get_error_class_name),
..Default::default()
});
@@ -1114,7 +1114,7 @@ async fn test_error_context() {
deno_core::extension!(test_ext, ops = [op_err_sync, op_err_async]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1274,7 +1274,7 @@ async fn test_async_opstate_borrow() {
state = |state| state.put(InnerState(42))
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1305,7 +1305,7 @@ async fn test_sync_op_serialize_object_with_numbers_as_keys() {
ops = [op_sync_serialize_object_with_numbers_as_keys]
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1347,7 +1347,7 @@ async fn test_async_op_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_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1383,7 +1383,7 @@ async fn test_set_macrotask_callback_set_next_tick_callback() {
deno_core::extension!(test_ext, ops = [op_async_sleep]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1438,7 +1438,7 @@ fn test_has_tick_scheduled() {
deno_core::extension!(test_ext, ops = [op_macrotask, op_next_tick]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1578,7 +1578,7 @@ async fn test_set_promise_reject_callback() {
deno_core::extension!(test_ext, ops = [op_promise_reject]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1717,7 +1717,7 @@ async fn test_set_promise_reject_callback_top_level_await() {
}
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
module_loader: Some(Rc::new(ModsLoader)),
..Default::default()
});
@@ -1742,7 +1742,7 @@ fn test_op_return_serde_v8_error() {
deno_core::extension!(test_ext, ops = [op_err]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
assert!(runtime
@@ -1767,7 +1767,7 @@ fn test_op_high_arity() {
deno_core::extension!(test_ext, ops = [op_add_4]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let r = runtime
@@ -1790,7 +1790,7 @@ fn test_op_disabled() {
deno_core::extension!(test_ext, ops_fn = ops);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let err = runtime
@@ -1817,7 +1817,7 @@ fn test_op_detached_buffer() {
deno_core::extension!(test_ext, ops = [op_sum_take, op_boomerang]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -1886,7 +1886,7 @@ fn test_op_unstable_disabling() {
middleware = |op| if op.is_unstable { op.disable() } else { op }
);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
runtime
@@ -1934,7 +1934,7 @@ fn js_realm_init() {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let realm = runtime.create_realm().unwrap();
@@ -1963,7 +1963,7 @@ fn js_realm_init_snapshot() {
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_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
let realm = runtime.create_realm().unwrap();
@@ -1993,7 +1993,7 @@ fn js_realm_sync_ops() {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&|error| {
crate::error::get_custom_error_class(error).unwrap()
}),
@@ -2041,7 +2041,7 @@ async fn js_realm_async_ops() {
deno_core::extension!(test_ext, ops = [op_test]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
get_error_class_fn: Some(&|error| {
crate::error::get_custom_error_class(error).unwrap()
}),
@@ -2118,7 +2118,7 @@ async fn js_realm_gc() {
deno_core::extension!(test_ext, ops = [op_pending]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -2165,7 +2165,7 @@ async fn js_realm_ref_unref_ops() {
deno_core::extension!(test_ext, ops = [op_pending]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
@@ -2265,7 +2265,7 @@ fn duplicate_op_names() {
deno_core::extension!(test_ext, ops = [a::op_test, op_test]);
JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});
}
@@ -2284,7 +2284,7 @@ fn ops_in_js_have_proper_names() {
deno_core::extension!(test_ext, ops = [op_test_sync, op_test_async]);
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![test_ext::init_ext()],
+ extensions: vec![test_ext::init_ops()],
..Default::default()
});