From fec1b2a5a4324a7eecdfbb2471931f3b6b0139c5 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Wed, 31 Mar 2021 16:37:38 +0200 Subject: refactor: new optimized op-layer using serde_v8 (#9843) - Improves op performance. - Handle op-metadata (errors, promise IDs) explicitly in the op-layer vs per op-encoding (aka: out-of-payload). - Remove shared queue & custom "asyncHandlers", all async values are returned in batches via js_recv_cb. - The op-layer should be thought of as simple function calls with little indirection or translation besides the conceptually straightforward serde_v8 bijections. - Preserve concepts of json/bin/min as semantic groups of their inputs/outputs instead of their op-encoding strategy, preserving these groups will also facilitate partial transitions over to v8 Fast API for the "min" and "bin" groups --- cli/tests/unit/dispatch_bin_test.ts | 48 +++---------------------------------- 1 file changed, 3 insertions(+), 45 deletions(-) (limited to 'cli/tests/unit/dispatch_bin_test.ts') diff --git a/cli/tests/unit/dispatch_bin_test.ts b/cli/tests/unit/dispatch_bin_test.ts index b2d96f3b3..83053461d 100644 --- a/cli/tests/unit/dispatch_bin_test.ts +++ b/cli/tests/unit/dispatch_bin_test.ts @@ -8,9 +8,9 @@ import { const readErrorStackPattern = new RegExp( `^.* - at handleError \\(.*core\\.js:.*\\) - at binOpParseResult \\(.*core\\.js:.*\\) - at asyncHandle \\(.*core\\.js:.*\\).*$`, + at processErr \\(.*core\\.js:.*\\) + at opAsyncHandler \\(.*core\\.js:.*\\) + at handleAsyncMsgFromRust \\(.*core\\.js:.*\\).*$`, "ms", ); @@ -32,45 +32,3 @@ declare global { var core: any; // eslint-disable-line no-var } } - -unitTest(function binOpsHeaderTooShort(): void { - for (const op of ["op_read_sync", "op_read_async"]) { - const readOpId = Deno.core.ops()[op]; - const res = Deno.core.send( - readOpId, - new Uint8Array([ - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - ]), - ); - - const headerByteLength = 4 * 4; - assert(res.byteLength > headerByteLength); - const view = new DataView( - res.buffer, - res.byteOffset + res.byteLength - headerByteLength, - headerByteLength, - ); - - const requestId = Number(view.getBigUint64(0, true)); - const status = view.getUint32(8, true); - const result = view.getUint32(12, true); - - assert(requestId === 0); - assert(status !== 0); - assertEquals(new TextDecoder().decode(res.slice(0, result)), "TypeError"); - assertEquals( - new TextDecoder().decode(res.slice(result, -headerByteLength)).trim(), - "Unparsable control buffer", - ); - } -}); -- cgit v1.2.3