mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -05:00
refactor(core): initialize extensions in runtime constructor (#10421)
This ensures that provided extensions are all correctly setup and ready to use once the JsRuntime constructor returns Note: this will also initialize ops for to-be-snapshotted runtimes
This commit is contained in:
parent
f31ee8d1bf
commit
5ec478b5fa
5 changed files with 9 additions and 13 deletions
|
@ -313,9 +313,16 @@ impl JsRuntime {
|
||||||
extensions: options.extensions,
|
extensions: options.extensions,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO(@AaronO): diff extensions inited in snapshot and those provided
|
||||||
|
// for now we assume that snapshot and extensions always match
|
||||||
if !has_startup_snapshot {
|
if !has_startup_snapshot {
|
||||||
js_runtime.js_init();
|
js_runtime.js_init();
|
||||||
|
js_runtime.init_extension_js().unwrap();
|
||||||
}
|
}
|
||||||
|
// Init extension ops
|
||||||
|
js_runtime.init_extension_ops().unwrap();
|
||||||
|
js_runtime.sync_ops_cache();
|
||||||
|
// Init async ops callback
|
||||||
js_runtime.init_recv_cb();
|
js_runtime.init_recv_cb();
|
||||||
|
|
||||||
js_runtime
|
js_runtime
|
||||||
|
@ -366,8 +373,7 @@ impl JsRuntime {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes JS of provided Extensions
|
/// Initializes JS of provided Extensions
|
||||||
// NOTE: this will probably change when streamlining snapshot flow
|
fn init_extension_js(&mut self) -> Result<(), AnyError> {
|
||||||
pub fn init_extension_js(&mut self) -> Result<(), AnyError> {
|
|
||||||
// Take extensions to avoid double-borrow
|
// Take extensions to avoid double-borrow
|
||||||
let mut extensions: Vec<Extension> = std::mem::take(&mut self.extensions);
|
let mut extensions: Vec<Extension> = std::mem::take(&mut self.extensions);
|
||||||
for m in extensions.iter_mut() {
|
for m in extensions.iter_mut() {
|
||||||
|
@ -384,8 +390,7 @@ impl JsRuntime {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes ops of provided Extensions
|
/// Initializes ops of provided Extensions
|
||||||
// NOTE: this will probably change when streamlining snapshot flow
|
fn init_extension_ops(&mut self) -> Result<(), AnyError> {
|
||||||
pub fn init_extension_ops(&mut self) -> Result<(), AnyError> {
|
|
||||||
let op_state = self.op_state();
|
let op_state = self.op_state();
|
||||||
// Take extensions to avoid double-borrow
|
// Take extensions to avoid double-borrow
|
||||||
let mut extensions: Vec<Extension> = std::mem::take(&mut self.extensions);
|
let mut extensions: Vec<Extension> = std::mem::take(&mut self.extensions);
|
||||||
|
|
|
@ -10,9 +10,6 @@ fn create_js_runtime() -> JsRuntime {
|
||||||
..Default::default()
|
..Default::default()
|
||||||
});
|
});
|
||||||
|
|
||||||
runtime.init_extension_js().unwrap();
|
|
||||||
runtime.init_extension_ops().unwrap();
|
|
||||||
|
|
||||||
runtime
|
runtime
|
||||||
.execute("setup", "const { URL } = globalThis.__bootstrap.url;")
|
.execute("setup", "const { URL } = globalThis.__bootstrap.url;")
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
|
@ -14,8 +14,6 @@ fn create_snapshot(
|
||||||
snapshot_path: &Path,
|
snapshot_path: &Path,
|
||||||
files: Vec<PathBuf>,
|
files: Vec<PathBuf>,
|
||||||
) {
|
) {
|
||||||
js_runtime.init_extension_js().unwrap();
|
|
||||||
|
|
||||||
// TODO(nayeemrmn): https://github.com/rust-lang/cargo/issues/3946 to get the
|
// TODO(nayeemrmn): https://github.com/rust-lang/cargo/issues/3946 to get the
|
||||||
// workspace root.
|
// workspace root.
|
||||||
let display_root = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap();
|
let display_root = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap();
|
||||||
|
|
|
@ -253,8 +253,6 @@ impl WebWorker {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
js_runtime.init_extension_ops().unwrap();
|
|
||||||
|
|
||||||
ops::web_worker::init(js_runtime, sender.clone(), handle);
|
ops::web_worker::init(js_runtime, sender.clone(), handle);
|
||||||
ops::runtime::init(js_runtime, main_module);
|
ops::runtime::init(js_runtime, main_module);
|
||||||
ops::worker_host::init(
|
ops::worker_host::init(
|
||||||
|
|
|
@ -140,8 +140,6 @@ impl MainWorker {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
js_runtime.init_extension_ops().unwrap();
|
|
||||||
|
|
||||||
ops::runtime::init(js_runtime, main_module);
|
ops::runtime::init(js_runtime, main_module);
|
||||||
ops::worker_host::init(
|
ops::worker_host::init(
|
||||||
js_runtime,
|
js_runtime,
|
||||||
|
|
Loading…
Add table
Reference in a new issue