From 585ec1218f8cdc191f2e733beb2e6c7a230ac85c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Thu, 15 Dec 2022 16:26:10 +0100 Subject: 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 --- ops/lib.rs | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) (limited to 'ops/lib.rs') 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` @@ -646,25 +629,14 @@ fn is_result(ty: impl ToTokens) -> bool { } } -fn is_string(ty: impl ToTokens) -> Option { - 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, -- cgit v1.2.3