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, 53 insertions, 59 deletions
diff --git a/core/runtime/jsruntime.rs b/core/runtime/jsruntime.rs
index 2e473e7c9..e6b531d61 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, init_mode);
+ let (op_state, ops) = Self::create_opstate(&mut options);
let op_state = Rc::new(RefCell::new(op_state));
// Collect event-loop middleware
@@ -844,29 +844,25 @@ impl JsRuntime {
for extension in &extensions {
let maybe_esm_entry_point = extension.get_esm_entry_point();
- 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?;
- }
+ for file_source in extension.get_esm_sources() {
+ 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);
}
- 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()?,
- )?;
- }
+ for file_source in extension.get_js_sources() {
+ realm.execute_script(
+ self.v8_isolate(),
+ file_source.specifier,
+ file_source.load()?,
+ )?;
}
if extension.is_core {
@@ -884,6 +880,16 @@ 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
@@ -967,20 +973,11 @@ impl JsRuntime {
}
/// Initializes ops of provided Extensions
- fn create_opstate(
- options: &mut RuntimeOptions,
- init_mode: InitMode,
- ) -> (OpState, Vec<OpDecl>) {
+ fn create_opstate(options: &mut RuntimeOptions) -> (OpState, Vec<OpDecl>) {
// Add built-in extension
- 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());
- }
+ options
+ .extensions
+ .insert(0, crate::ops_builtin::core::init_ext());
let ops = Self::collect_ops(&mut options.extensions);
diff --git a/core/runtime/ops.rs b/core/runtime/ops.rs
index 85708b24b..76a29c5c3 100644
--- a/core/runtime/ops.rs
+++ b/core/runtime/ops.rs
@@ -235,7 +235,7 @@ mod tests {
f: impl FnOnce(Result<&v8::Value, anyhow::Error>, &mut v8::HandleScope),
) {
let mut runtime = JsRuntime::new(RuntimeOptions {
- extensions: vec![testing::init_ops_and_esm()],
+ extensions: vec![testing::init_ext()],
..Default::default()
});
let value: Result<v8::Global<v8::Value>, anyhow::Error> = runtime
diff --git a/core/runtime/snapshot_util.rs b/core/runtime/snapshot_util.rs
index 88c273147..dba1bc233 100644
--- a/core/runtime/snapshot_util.rs
+++ b/core/runtime/snapshot_util.rs
@@ -57,12 +57,9 @@ 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::LoadedFromFsDuringSnapshot(path) =
- &source.code
- {
+ if let ExtensionFileSourceCode::LoadAtRuntime(path) = &source.code {
files_loaded_during_snapshot.push(path.clone());
}
}
diff --git a/core/runtime/tests.rs b/core/runtime/tests.rs
index 88c62e280..faabef0c4 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_ops(mode, dispatch_count.clone())],
+ extensions: vec![test_ext::init_ext(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_ops()],
+ extensions: vec![test_ext::init_ext()],
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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
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_ops()],
+ extensions: vec![test_ext::init_ext()],
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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..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_ops()],
+ extensions: vec![test_ext::init_ext()],
..Default::default()
});