diff options
Diffstat (limited to 'core/runtime')
-rw-r--r-- | core/runtime/jsruntime.rs | 59 | ||||
-rw-r--r-- | core/runtime/ops.rs | 2 | ||||
-rw-r--r-- | core/runtime/snapshot_util.rs | 5 | ||||
-rw-r--r-- | core/runtime/tests.rs | 46 |
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() }); |