diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-12-15 16:26:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-15 15:26:10 +0000 |
commit | 585ec1218f8cdc191f2e733beb2e6c7a230ac85c (patch) | |
tree | 8a0e5d88f2390890121a6083a39c833af21ea5d1 /ops/lib.rs | |
parent | 0d4e4af7acf82c1365999a7281910daa05f0e982 (diff) |
Revert "feat(ops): Fast zero copy string arguments (#16777)" (#17063)
This reverts commit 9b2b8df927ac23cfa99016a684179f2a3198ba2e.
Closes https://github.com/dsherret/ts-morph/issues/1372
Closes https://github.com/denoland/deno/issues/16979
Diffstat (limited to 'ops/lib.rs')
-rw-r--r-- | ops/lib.rs | 34 |
1 files changed, 3 insertions, 31 deletions
diff --git a/ops/lib.rs b/ops/lib.rs index 7fa800b14..b4bef1d13 100644 --- a/ops/lib.rs +++ b/ops/lib.rs @@ -411,12 +411,7 @@ fn codegen_arg( return quote! { let #ident = (); }; } // Fast path for `String` - if let Some(is_ref) = is_string(&**ty) { - let ref_block = if is_ref { - quote! { let #ident = #ident.as_ref(); } - } else { - quote! {} - }; + if is_string(&**ty) { return quote! { let #ident = match #core::v8::Local::<#core::v8::String>::try_from(args.get(#idx as i32)) { Ok(v8_string) => #core::serde_v8::to_utf8(v8_string, scope), @@ -424,18 +419,6 @@ fn codegen_arg( return #core::_ops::throw_type_error(scope, format!("Expected string at position {}", #idx)); } }; - #ref_block - }; - } - // Fast path for `Cow<'_, str>` - if is_cow_str(&**ty) { - return quote! { - let #ident = match #core::v8::Local::<#core::v8::String>::try_from(args.get(#idx as i32)) { - Ok(v8_string) => ::std::borrow::Cow::Owned(#core::serde_v8::to_utf8(v8_string, scope)), - Err(_) => { - return #core::_ops::throw_type_error(scope, format!("Expected string at position {}", #idx)); - } - }; }; } // Fast path for `Option<String>` @@ -646,25 +629,14 @@ fn is_result(ty: impl ToTokens) -> bool { } } -fn is_string(ty: impl ToTokens) -> Option<bool> { - let toks = tokens(ty); - if toks == "String" { - return Some(false); - } - if toks == "& str" { - return Some(true); - } - None +fn is_string(ty: impl ToTokens) -> bool { + tokens(ty) == "String" } fn is_option_string(ty: impl ToTokens) -> bool { tokens(ty) == "Option < String >" } -fn is_cow_str(ty: impl ToTokens) -> bool { - tokens(&ty).starts_with("Cow <") && tokens(&ty).ends_with("str >") -} - enum SliceType { U8, U8Mut, |