diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-06-25 08:35:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-25 09:35:31 +0200 |
commit | 28a4f3d0f5383695b1d49ccdc8b0f799a715b2c2 (patch) | |
tree | cd75b05db0bbfdadf3e565ca120d1f5d9ca39942 /core/runtime/jsruntime.rs | |
parent | a181ceb0e3791c842db6e8e6f528cf9ce320642a (diff) |
Reland "refactor(core): cleanup feature flags for js source inclusion" (#19519)
Relands #19463. This time the `ExtensionFileSourceCode` enum is
preserved, so this effectively just splits feature
`include_js_for_snapshotting` into `exclude_js_sources` and
`runtime_js_sources`, adds a `force_include_js_sources` option on
`extension!()`, and unifies `ext::Init_ops_and_esm()` and
`ext::init_ops()` into `ext::init()`.
Diffstat (limited to 'core/runtime/jsruntime.rs')
-rw-r--r-- | core/runtime/jsruntime.rs | 59 |
1 files changed, 28 insertions, 31 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); |