summaryrefslogtreecommitdiff
path: root/core/runtime/jsruntime.rs
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2023-06-26 13:54:10 +0200
committerGitHub <noreply@github.com>2023-06-26 13:54:10 +0200
commitad3c494b46c97f0cf91098b7ec2afa576ea7a3dd (patch)
tree2996e36708b4c726c3b5e99b6fbbd8e63fcc121b /core/runtime/jsruntime.rs
parentc7d38e593f7de66af47321e7463d8c15ae4176f2 (diff)
Revert "Reland "refactor(core): cleanup feature flags for js source i… (#19611)
…nclusion" (#19519)" This reverts commit 28a4f3d0f5383695b1d49ccdc8b0f799a715b2c2. This change causes failures when used outside Deno repo: ``` ============================================================ Deno has panicked. This is a bug in Deno. Please report this at https://github.com/denoland/deno/issues/new. If you can reliably reproduce this panic, include the reproduction steps and re-run with the RUST_BACKTRACE=1 env var set and include the backtrace in your report. Platform: linux x86_64 Version: 1.34.3+b37b286 Args: ["/opt/hostedtoolcache/deno/0.0.0-b37b286f7fa68d5656f7c180f6127bdc38cf2cf5/x64/deno", "test", "--doc", "--unstable", "--allow-all", "--coverage=./cov"] thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failed to read "/home/runner/work/deno/deno/core/00_primordials.js" Caused by: No such file or directory (os error 2)', core/runtime/jsruntime.rs:699:8 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace ```
Diffstat (limited to 'core/runtime/jsruntime.rs')
-rw-r--r--core/runtime/jsruntime.rs59
1 files changed, 31 insertions, 28 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);