summaryrefslogtreecommitdiff
path: root/core/01_core.js
diff options
context:
space:
mode:
Diffstat (limited to 'core/01_core.js')
-rw-r--r--core/01_core.js41
1 files changed, 16 insertions, 25 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,