From 9010b8df53cd37f0410e08c43a194667974686a2 Mon Sep 17 00:00:00 2001 From: Matt Mastracci Date: Thu, 9 Nov 2023 13:57:26 -0700 Subject: perf: remove knowledge of promise IDs from deno (#21132) We can move all promise ID knowledge to deno_core, allowing us to better experiment with promise implementation in deno_core. `{un,}refOpPromise(promise)` is equivalent to `{un,}refOp(promise[promiseIdSymbol])` --- runtime/js/40_process.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'runtime/js/40_process.js') diff --git a/runtime/js/40_process.js b/runtime/js/40_process.js index 4ddc4a02a..67093398a 100644 --- a/runtime/js/40_process.js +++ b/runtime/js/40_process.js @@ -13,7 +13,6 @@ const { ObjectPrototypeIsPrototypeOf, PromisePrototypeThen, SafePromiseAll, - SymbolFor, Symbol, } = primordials; import { FsFile } from "ext:deno_fs/30_fs.js"; @@ -148,7 +147,6 @@ function run({ } const illegalConstructorKey = Symbol("illegalConstructorKey"); -const promiseIdSymbol = SymbolFor("Deno.core.internalPromiseId"); function spawnChildInner(opFn, command, apiName, { args = [], @@ -203,7 +201,7 @@ function collectOutput(readableStream) { class ChildProcess { #rid; - #waitPromiseId; + #waitPromise; #waitComplete = false; #pid; @@ -266,7 +264,7 @@ class ChildProcess { signal?.[abortSignal.add](onAbort); const waitPromise = core.opAsync("op_spawn_wait", this.#rid); - this.#waitPromiseId = waitPromise[promiseIdSymbol]; + this.#waitPromise = waitPromise; this.#status = PromisePrototypeThen(waitPromise, (res) => { signal?.[abortSignal.remove](onAbort); this.#waitComplete = true; @@ -333,13 +331,13 @@ class ChildProcess { } ref() { - core.refOp(this.#waitPromiseId); + core.refOpPromise(this.#waitPromise); if (this.#stdout) readableStreamForRidUnrefableRef(this.#stdout); if (this.#stderr) readableStreamForRidUnrefableRef(this.#stderr); } unref() { - core.unrefOp(this.#waitPromiseId); + core.unrefOpPromise(this.#waitPromise); if (this.#stdout) readableStreamForRidUnrefableUnref(this.#stdout); if (this.#stderr) readableStreamForRidUnrefableUnref(this.#stderr); } -- cgit v1.2.3