0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-10-29 08:58:01 -04:00

feat(core): Reorder extension initialization (#16136)

This commit is contained in:
Jakub Łabor 2022-10-07 14:38:06 +02:00 committed by Bartek Iwańczuk
parent bcfd5add96
commit 78852e9380
No known key found for this signature in database
GPG key ID: 0C6BCDDC3B3AD750
2 changed files with 12 additions and 5 deletions

View file

@ -466,14 +466,15 @@ impl JsRuntime {
extensions: options.extensions,
};
// Init resources and ops before extensions to make sure they are
// available during the initialization process.
js_runtime.init_extension_ops().unwrap();
// TODO(@AaronO): diff extensions inited in snapshot and those provided
// for now we assume that snapshot and extensions always match
if !has_startup_snapshot {
let realm = js_runtime.global_realm();
js_runtime.init_extension_js(&realm).unwrap();
}
// Init extension ops
js_runtime.init_extension_ops().unwrap();
// Init callbacks (opresolve)
let global_realm = js_runtime.global_realm();
js_runtime.init_cbs(&global_realm);

View file

@ -124,7 +124,8 @@ pub fn init_stdio(stdio: Stdio) -> Extension {
.take()
.expect("Extension only supports being used once.");
let t = &mut state.resource_table;
t.add(StdFileResource::stdio(
let rid = t.add(StdFileResource::stdio(
match stdio.stdin {
StdioPipe::Inherit => StdFileResourceInner {
kind: StdFileResourceKind::Stdin,
@ -134,7 +135,9 @@ pub fn init_stdio(stdio: Stdio) -> Extension {
},
"stdin",
));
t.add(StdFileResource::stdio(
assert_eq!(rid, 0, "stdin must have ResourceId 0");
let rid = t.add(StdFileResource::stdio(
match stdio.stdout {
StdioPipe::Inherit => StdFileResourceInner {
kind: StdFileResourceKind::Stdout,
@ -144,7 +147,9 @@ pub fn init_stdio(stdio: Stdio) -> Extension {
},
"stdout",
));
t.add(StdFileResource::stdio(
assert_eq!(rid, 1, "stdout must have ResourceId 1");
let rid = t.add(StdFileResource::stdio(
match stdio.stderr {
StdioPipe::Inherit => StdFileResourceInner {
kind: StdFileResourceKind::Stderr,
@ -154,6 +159,7 @@ pub fn init_stdio(stdio: Stdio) -> Extension {
},
"stderr",
));
assert_eq!(rid, 2, "stderr must have ResourceId 2");
Ok(())
})
.build()