diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/01_core.js | 41 | ||||
-rw-r--r-- | core/examples/http_bench_json_ops/http_bench_json_ops.js | 5 | ||||
-rw-r--r-- | core/runtime.rs | 4 |
3 files changed, 19 insertions, 31 deletions
diff --git a/core/01_core.js b/core/01_core.js index c3033fcf9..13aa17c7e 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -22,6 +22,7 @@ PromiseReject, PromiseResolve, PromisePrototypeThen, + Proxy, RangeError, ReferenceError, ReflectHas, @@ -762,19 +763,19 @@ for (let i = 0; i < 10; i++) { setUpAsyncStub(opName); } - function generateAsyncOpHandler(/* opNames... */) { - const fastOps = {}; - for (const opName of new SafeArrayIterator(arguments)) { - if (ops[opName] === undefined) { - throw new Error(`Unknown or disabled op '${opName}'`); - } - if (asyncOps[opName] !== undefined) { - fastOps[opName] = setUpAsyncStub(opName); - } else { - fastOps[opName] = ops[opName]; - } - } - return fastOps; + function ensureFastOps() { + return new Proxy({}, { + get(_target, opName) { + if (ops[opName] === undefined) { + throw new Error(`Unknown or disabled op '${opName}'`); + } + if (asyncOps[opName] !== undefined) { + return setUpAsyncStub(opName); + } else { + return ops[opName]; + } + }, + }); } const { @@ -787,22 +788,12 @@ for (let i = 0; i < 10; i++) { op_read_sync: readSync, op_write_sync: writeSync, op_shutdown: shutdown, - } = generateAsyncOpHandler( - "op_close", - "op_try_close", - "op_read", - "op_read_all", - "op_write", - "op_write_all", - "op_read_sync", - "op_write_sync", - "op_shutdown", - ); + } = ensureFastOps(); // Extra Deno.core.* exports const core = ObjectAssign(globalThis.Deno.core, { asyncStub, - generateAsyncOpHandler, + ensureFastOps, opAsync, resources, metrics, diff --git a/core/examples/http_bench_json_ops/http_bench_json_ops.js b/core/examples/http_bench_json_ops/http_bench_json_ops.js index 6cf2a8be2..a840e4e9f 100644 --- a/core/examples/http_bench_json_ops/http_bench_json_ops.js +++ b/core/examples/http_bench_json_ops/http_bench_json_ops.js @@ -9,10 +9,7 @@ const { op_listen } = Deno.core.ops; const { op_accept, op_read_socket, -} = Deno.core.generateAsyncOpHandler( - "op_accept", - "op_read_socket", -); +} = Deno.core.ensureFastOps(); const requestBuf = new Uint8Array(64 * 1024); const responseBuf = new Uint8Array( diff --git a/core/runtime.rs b/core/runtime.rs index fdcb81e9e..a27717a8b 100644 --- a/core/runtime.rs +++ b/core/runtime.rs @@ -2852,7 +2852,7 @@ pub mod tests { .execute_script_static( "filename.js", r#" - const { op_test } = Deno.core.generateAsyncOpHandler("op_test"); + const { op_test } = Deno.core.ensureFastOps(); let zero_copy_a = new Uint8Array([0]); op_test(null, zero_copy_a); "#, @@ -4942,7 +4942,7 @@ Deno.core.opAsync("op_async_serialize_object_with_numbers_as_keys", { throw new Error(); } - const { op_test_async } = Deno.core.generateAsyncOpHandler("op_test_async"); + const { op_test_async } = Deno.core.ensureFastOps(); if (op_test_async.name !== "op_test_async") { throw new Error(); } |