summaryrefslogtreecommitdiff
path: root/cli/tsc/mod.rs
diff options
context:
space:
mode:
authorNathan Whitaker <17734409+nathanwhit@users.noreply.github.com>2024-04-19 10:11:17 -0700
committerGitHub <noreply@github.com>2024-04-19 10:11:17 -0700
commitb5ce9cda0dfaed4afcb85d71c2c49c82b2fe3401 (patch)
treed8bbfb54cb29976a1a40d7169e74b7533c52a037 /cli/tsc/mod.rs
parentf4b5eec52e01249b13d795010cd995113d9ef569 (diff)
perf(lsp): Avoid passing struct into op_resolve (#23452)
Going through serde_v8 is slow, so just pass the args separately. `op_resolve` is especially hot, so any speedups are good.
Diffstat (limited to 'cli/tsc/mod.rs')
-rw-r--r--cli/tsc/mod.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/cli/tsc/mod.rs b/cli/tsc/mod.rs
index 81ea1642d..57e7dff56 100644
--- a/cli/tsc/mod.rs
+++ b/cli/tsc/mod.rs
@@ -412,9 +412,13 @@ struct EmitArgs {
file_name: String,
}
-#[op2]
-fn op_emit(state: &mut OpState, #[serde] args: EmitArgs) -> bool {
- op_emit_inner(state, args)
+#[op2(fast)]
+fn op_emit(
+ state: &mut OpState,
+ #[string] data: String,
+ #[string] file_name: String,
+) -> bool {
+ op_emit_inner(state, EmitArgs { data, file_name })
}
#[inline]
@@ -590,9 +594,10 @@ pub struct ResolveArgs {
#[serde]
fn op_resolve(
state: &mut OpState,
- #[serde] args: ResolveArgs,
+ #[string] base: String,
+ #[serde] specifiers: Vec<String>,
) -> Result<Vec<(String, String)>, AnyError> {
- op_resolve_inner(state, args)
+ op_resolve_inner(state, ResolveArgs { base, specifiers })
}
#[inline]