From de646710a0e89169051528c581402d84fec2d504 Mon Sep 17 00:00:00 2001 From: Sergey Chernyshev Date: Wed, 24 Apr 2024 23:24:58 +0200 Subject: [PATCH] deps: update ada to 2.6.10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/49984 Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee Reviewed-By: Tobias Nießen --- graal-nodejs/deps/ada/ada.cpp | 34 +++++++++++++++---- graal-nodejs/deps/ada/ada.h | 6 ++-- .../maintaining/maintaining-dependencies.md | 6 ++-- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/graal-nodejs/deps/ada/ada.cpp b/graal-nodejs/deps/ada/ada.cpp index 7ace1257712..3be851d1b12 100644 --- a/graal-nodejs/deps/ada/ada.cpp +++ b/graal-nodejs/deps/ada/ada.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2023-09-29 13:28:16 -0400. Do not edit! */ +/* auto-generated on 2023-09-30 20:34:30 -0400. Do not edit! */ /* begin file src/ada.cpp */ #include "ada.h" /* begin file src/checkers.cpp */ @@ -9810,6 +9810,17 @@ constexpr bool to_lower_ascii(char* input, size_t length) noexcept { #if ADA_NEON ada_really_inline bool has_tabs_or_newline( std::string_view user_input) noexcept { + // first check for short strings in which case we do it naively. + if (user_input.size() < 16) { // slow path + for (size_t i = 0; i < user_input.size(); i++) { + if (user_input[i] == '\r' || user_input[i] == '\n' || + user_input[i] == '\t') { + return true; + } + } + return false; + } + // fast path for long strings (expected to be common) size_t i = 0; const uint8x16_t mask1 = vmovq_n_u8('\r'); const uint8x16_t mask2 = vmovq_n_u8('\n'); @@ -9822,9 +9833,8 @@ ada_really_inline bool has_tabs_or_newline( vceqq_u8(word, mask3)); } if (i < user_input.size()) { - uint8_t buffer[16]{}; - memcpy(buffer, user_input.data() + i, user_input.size() - i); - uint8x16_t word = vld1q_u8((const uint8_t*)user_input.data() + i); + uint8x16_t word = + vld1q_u8((const uint8_t*)user_input.data() + user_input.length() - 16); running = vorrq_u8(vorrq_u8(running, vorrq_u8(vceqq_u8(word, mask1), vceqq_u8(word, mask2))), vceqq_u8(word, mask3)); @@ -9834,6 +9844,17 @@ ada_really_inline bool has_tabs_or_newline( #elif ADA_SSE2 ada_really_inline bool has_tabs_or_newline( std::string_view user_input) noexcept { + // first check for short strings in which case we do it naively. + if (user_input.size() < 16) { // slow path + for (size_t i = 0; i < user_input.size(); i++) { + if (user_input[i] == '\r' || user_input[i] == '\n' || + user_input[i] == '\t') { + return true; + } + } + return false; + } + // fast path for long strings (expected to be common) size_t i = 0; const __m128i mask1 = _mm_set1_epi8('\r'); const __m128i mask2 = _mm_set1_epi8('\n'); @@ -9847,9 +9868,8 @@ ada_really_inline bool has_tabs_or_newline( _mm_cmpeq_epi8(word, mask3)); } if (i < user_input.size()) { - alignas(16) uint8_t buffer[16]{}; - memcpy(buffer, user_input.data() + i, user_input.size() - i); - __m128i word = _mm_load_si128((const __m128i*)buffer); + __m128i word = _mm_loadu_si128( + (const __m128i*)(user_input.data() + user_input.length() - 16)); running = _mm_or_si128( _mm_or_si128(running, _mm_or_si128(_mm_cmpeq_epi8(word, mask1), _mm_cmpeq_epi8(word, mask2))), diff --git a/graal-nodejs/deps/ada/ada.h b/graal-nodejs/deps/ada/ada.h index e7603798344..dc3c9fe364c 100644 --- a/graal-nodejs/deps/ada/ada.h +++ b/graal-nodejs/deps/ada/ada.h @@ -1,4 +1,4 @@ -/* auto-generated on 2023-09-29 13:28:16 -0400. Do not edit! */ +/* auto-generated on 2023-09-30 20:34:30 -0400. Do not edit! */ /* begin file include/ada.h */ /** * @file ada.h @@ -6932,14 +6932,14 @@ inline void url_search_params::sort() { #ifndef ADA_ADA_VERSION_H #define ADA_ADA_VERSION_H -#define ADA_VERSION "2.6.9" +#define ADA_VERSION "2.6.10" namespace ada { enum { ADA_VERSION_MAJOR = 2, ADA_VERSION_MINOR = 6, - ADA_VERSION_REVISION = 9, + ADA_VERSION_REVISION = 10, }; } // namespace ada diff --git a/graal-nodejs/doc/contributing/maintaining/maintaining-dependencies.md b/graal-nodejs/doc/contributing/maintaining/maintaining-dependencies.md index d56f1667330..1818156f166 100644 --- a/graal-nodejs/doc/contributing/maintaining/maintaining-dependencies.md +++ b/graal-nodejs/doc/contributing/maintaining/maintaining-dependencies.md @@ -9,7 +9,7 @@ All dependencies are located within the `deps` directory. This a list of all the dependencies: * [acorn][] -* [ada 2.6.9][] +* [ada 2.6.10][] * [base64][] * [brotli][] * [c-ares][] @@ -148,7 +148,7 @@ The [acorn](https://github.com/acornjs/acorn) dependency is a JavaScript parser. [acorn-walk](https://github.com/acornjs/acorn/tree/master/acorn-walk) is an abstract syntax tree walker for the ESTree format. -### ada 2.6.9 +### ada 2.6.10 The [ada](https://github.com/ada-url/ada) dependency is a fast and spec-compliant URL parser written in C++. @@ -312,7 +312,7 @@ it comes from the Chromium team's zlib fork which incorporated performance improvements not currently available in standard zlib. [acorn]: #acorn -[ada 2.6.9]: #ada-269 +[ada 2.6.10]: #ada-2610 [base64]: #base64 [brotli]: #brotli [c-ares]: #c-ares