diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-03-31 16:37:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-31 10:37:38 -0400 |
commit | fec1b2a5a4324a7eecdfbb2471931f3b6b0139c5 (patch) | |
tree | 8a650553c2d70e047d9d7365f9ac8702ec9861a5 /cli/lsp/tsc.rs | |
parent | 6dc3549a818ad49b3907d18c93fd422a9cc743a5 (diff) |
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
Diffstat (limited to 'cli/lsp/tsc.rs')
-rw-r--r-- | cli/lsp/tsc.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/cli/lsp/tsc.rs b/cli/lsp/tsc.rs index e3c094dfa..1e7ae6f89 100644 --- a/cli/lsp/tsc.rs +++ b/cli/lsp/tsc.rs @@ -1387,11 +1387,12 @@ fn cache_snapshot( Ok(()) } +// buffer-less json_sync ops fn op<F, V, R>(op_fn: F) -> Box<OpFn> where F: Fn(&mut State, V) -> Result<R, AnyError> + 'static, V: de::DeserializeOwned, - R: Serialize, + R: Serialize + 'static, { json_op_sync(move |s, args, _bufs| { let state = s.borrow_mut::<State>(); |