From 3b5eb14cad3a493e99f84ca45871bd37570cae3d Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 22 Apr 2025 16:05:07 +0100 Subject: [PATCH 1/3] deps: V8: cherry-pick third_party/zlib@646b7f569718 Original commit message: [zlib][build] Remove fdopen #defines in zutil.h. The latest version of Clang changed what macros it predefines on Apple targets, causing errors about predefined macros in zlib. See: https://github.com/madler/zlib/commit/4bd9a71f3539b5ce47f0c67ab5e01f3196dc8ef9 Bug: 1519899 Change-Id: Ie75ef4078f2c86d89ba6c036ddd13e768a40ccbb Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5237020 Reviewed-by: Adenilson Cavalcanti Commit-Queue: Hans Wennborg Cr-Commit-Position: refs/heads/main@{#1253252} NOKEYCHECK=True GitOrigin-RevId: 2f39ac8d0a414dd65c0e1d5aae38c8f97aa06ae9 Refs: https://chromium.googlesource.com/chromium/src/third_party/zlib/+/646b7f569718921d7d4b5b8e22572ff6c76f2596 --- common.gypi | 2 +- deps/v8/third_party/zlib/zutil.h | 23 +---------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/common.gypi b/common.gypi index d3c17d47bc141b..ba554d4eb0748a 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.26', + 'v8_embedder_string': '-node.27', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/third_party/zlib/zutil.h b/deps/v8/third_party/zlib/zutil.h index e0466922244edc..a3f671c94f8fd2 100644 --- a/deps/v8/third_party/zlib/zutil.h +++ b/deps/v8/third_party/zlib/zutil.h @@ -152,17 +152,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # endif #endif -#if defined(MACOS) || defined(TARGET_OS_MAC) +#if defined(MACOS) # define OS_CODE 7 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif #endif #ifdef __acorn @@ -185,18 +176,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 19 #endif -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - #if defined(__BORLANDC__) && !defined(MSDOS) #pragma warn -8004 #pragma warn -8008 From e2ab76c1aeceaf866b8c5053cf71f199706d621d Mon Sep 17 00:00:00 2001 From: Andrey Kosyakov Date: Thu, 17 Aug 2023 13:50:11 -0700 Subject: [PATCH 2/3] deps: V8: cherry-pick 182d9c05e78b Original commit message: Define UChar as char16_t We used to have UChar defined as uint16_t which does not go along with STL these days if you try to have an std::basic_string<> of it, as there are no standard std::char_traits<> specialization for uint16_t. This switches UChar to char16_t where practical, introducing a few compatibility shims to keep CL size small, as (1) this would likely have to be back-ported and (2) crdtp extensively uses uint16_t for wide chars. Bug: b:296390693 Change-Id: I66a32d8f0050915225b187de56896c26dd76163d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4789966 Reviewed-by: Jaroslav Sevcik Commit-Queue: Jaroslav Sevcik Auto-Submit: Andrey Kosyakov Cr-Commit-Position: refs/heads/main@{#89559} Refs: https://github.com/v8/v8/commit/182d9c05e78b1ddb1cb8242cd3628a7855a0336f --- common.gypi | 2 +- deps/v8/src/inspector/string-16.cc | 8 +++++++- deps/v8/src/inspector/string-16.h | 10 ++++++++-- deps/v8/src/inspector/v8-string-conversions.cc | 6 +++--- deps/v8/src/inspector/v8-string-conversions.h | 6 ++++-- .../inspector_protocol/crdtp/test_platform_v8.cc | 9 ++++++--- 6 files changed, 29 insertions(+), 12 deletions(-) diff --git a/common.gypi b/common.gypi index ba554d4eb0748a..ea2a17e9460daa 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.27', + 'v8_embedder_string': '-node.28', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/inspector/string-16.cc b/deps/v8/src/inspector/string-16.cc index a8b786a8166d54..6df9963e970e51 100644 --- a/deps/v8/src/inspector/string-16.cc +++ b/deps/v8/src/inspector/string-16.cc @@ -27,7 +27,7 @@ bool isSpaceOrNewLine(UChar c) { return isASCII(c) && c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9)); } -int64_t charactersToInteger(const UChar* characters, size_t length, +int64_t charactersToInteger(const uint16_t* characters, size_t length, bool* ok = nullptr) { std::vector buffer; buffer.reserve(length + 1); @@ -50,6 +50,8 @@ int64_t charactersToInteger(const UChar* characters, size_t length, String16::String16(const UChar* characters, size_t size) : m_impl(characters, size) {} +String16::String16(const uint16_t* characters, size_t size) + : m_impl(reinterpret_cast(characters), size) {} String16::String16(const UChar* characters) : m_impl(characters) {} @@ -241,6 +243,10 @@ String16 String16::fromUTF16LE(const UChar* stringStart, size_t length) { #endif // V8_TARGET_BIG_ENDIAN } +String16 String16::fromUTF16LE(const uint16_t* stringStart, size_t length) { + return fromUTF16LE(reinterpret_cast(stringStart), length); +} + std::string String16::utf8() const { return UTF16ToUTF8(m_impl.data(), m_impl.size()); } diff --git a/deps/v8/src/inspector/string-16.h b/deps/v8/src/inspector/string-16.h index 29651ac9592922..f32fde4f1135e0 100644 --- a/deps/v8/src/inspector/string-16.h +++ b/deps/v8/src/inspector/string-16.h @@ -6,6 +6,7 @@ #define V8_INSPECTOR_STRING_16_H_ #include +#include #include #include @@ -17,7 +18,7 @@ namespace v8_inspector { -using UChar = uint16_t; +using UChar = char16_t; class String16 { public: @@ -27,6 +28,7 @@ class String16 { String16(const String16&) V8_NOEXCEPT = default; String16(String16&&) V8_NOEXCEPT = default; String16(const UChar* characters, size_t size); + String16(const uint16_t* characters, size_t size); V8_EXPORT String16(const UChar* characters); V8_EXPORT String16(const char* characters); String16(const char* characters, size_t size); @@ -48,7 +50,9 @@ class String16 { int toInteger(bool* ok = nullptr) const; std::pair getTrimmedOffsetAndLength() const; String16 stripWhiteSpace() const; - const UChar* characters16() const { return m_impl.c_str(); } + const uint16_t* characters16() const { + return reinterpret_cast(m_impl.c_str()); + } size_t length() const { return m_impl.length(); } bool isEmpty() const { return !m_impl.length(); } UChar operator[](size_t index) const { return m_impl[index]; } @@ -78,6 +82,8 @@ class String16 { // On Big endian architectures, byte order needs to be flipped. V8_EXPORT static String16 fromUTF16LE(const UChar* stringStart, size_t length); + V8_EXPORT static String16 fromUTF16LE(const uint16_t* stringStart, + size_t length); std::size_t hash() const { if (!hash_code) { diff --git a/deps/v8/src/inspector/v8-string-conversions.cc b/deps/v8/src/inspector/v8-string-conversions.cc index 0c75e66b972274..8cf19be816c240 100644 --- a/deps/v8/src/inspector/v8-string-conversions.cc +++ b/deps/v8/src/inspector/v8-string-conversions.cc @@ -12,7 +12,7 @@ namespace v8_inspector { namespace { -using UChar = uint16_t; +using UChar = char16_t; using UChar32 = uint32_t; bool isASCII(UChar c) { return !(c & ~0x7F); } @@ -386,7 +386,7 @@ std::string UTF16ToUTF8(const UChar* stringStart, size_t length) { std::basic_string UTF8ToUTF16(const char* stringStart, size_t length) { if (!stringStart || !length) return std::basic_string(); - std::vector buffer(length); + std::vector buffer(length); UChar* bufferStart = buffer.data(); UChar* bufferCurrent = bufferStart; @@ -395,7 +395,7 @@ std::basic_string UTF8ToUTF16(const char* stringStart, size_t length) { reinterpret_cast(stringStart + length), &bufferCurrent, bufferCurrent + buffer.size(), nullptr, true) != conversionOK) - return std::basic_string(); + return std::basic_string(); size_t utf16Length = bufferCurrent - bufferStart; return std::basic_string(bufferStart, bufferStart + utf16Length); } diff --git a/deps/v8/src/inspector/v8-string-conversions.h b/deps/v8/src/inspector/v8-string-conversions.h index eb33c6816a5882..1126255dac23c9 100644 --- a/deps/v8/src/inspector/v8-string-conversions.h +++ b/deps/v8/src/inspector/v8-string-conversions.h @@ -5,14 +5,16 @@ #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ +#include + #include #include // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may // want to use string-16.h directly rather than these. namespace v8_inspector { -std::basic_string UTF8ToUTF16(const char* stringStart, size_t length); -std::string UTF16ToUTF8(const uint16_t* stringStart, size_t length); +std::basic_string UTF8ToUTF16(const char* stringStart, size_t length); +std::string UTF16ToUTF8(const char16_t* stringStart, size_t length); } // namespace v8_inspector #endif // V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ diff --git a/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc b/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc index c9d89eaa42f1d8..1a46d781b89d47 100644 --- a/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc +++ b/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc @@ -11,13 +11,16 @@ namespace v8_crdtp { std::string UTF16ToUTF8(span in) { - return v8_inspector::UTF16ToUTF8(in.data(), in.size()); + return v8_inspector::UTF16ToUTF8(reinterpret_cast(in.data()), + in.size()); } std::vector UTF8ToUTF16(span in) { - std::basic_string utf16 = v8_inspector::UTF8ToUTF16( + std::basic_string utf16 = v8_inspector::UTF8ToUTF16( reinterpret_cast(in.data()), in.size()); - return std::vector(utf16.begin(), utf16.end()); + return std::vector( + reinterpret_cast(utf16.data()), + reinterpret_cast(utf16.data()) + utf16.size()); } } // namespace v8_crdtp From a56d782971c30164545e76a97b07ade373a3a565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 13 Sep 2023 16:58:22 +0200 Subject: [PATCH 3/3] deps: V8: cherry-pick 1a3ecc2483b2 Original commit message: Fix build issue, remove unneeded include uchar.h. Follow the conversation on: https://groups.google.com/g/v8-dev/c/nsbshwlmP3c. The `uchar.h` include is not necessary. It was added to get the definition of char16_t but that's an intrinsic type in C++. Change-Id: I0aaa11dba0be3ccad15b9e421f8bae71450d443b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4823404 Reviewed-by: Omer Katz Commit-Queue: Eric Leese Reviewed-by: Eric Leese Cr-Commit-Position: refs/heads/main@{#89787} Refs: https://github.com/v8/v8/commit/1a3ecc2483b2dba6ab9f7e9f8f4b60dbfef504b7 PR-URL: https://github.com/nodejs/node/pull/49639 Reviewed-By: Jiawen Geng Reviewed-By: Rafael Gonzaga Reviewed-By: Antoine du Hamel --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/src/inspector/string-16.h | 1 - deps/v8/src/inspector/v8-string-conversions.h | 1 - 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/common.gypi b/common.gypi index ea2a17e9460daa..5ac35b26b79744 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.28', + 'v8_embedder_string': '-node.29', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 7b43882edca7ea..eeac21260b74dd 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -188,6 +188,7 @@ Matt Hanselman Matthew Sporleder Maxim Mazurok Maxim Mossienko +Meir Shpilraien Michael Lutz Michael Mclaughlin Michael Smith diff --git a/deps/v8/src/inspector/string-16.h b/deps/v8/src/inspector/string-16.h index f32fde4f1135e0..feb091433b9687 100644 --- a/deps/v8/src/inspector/string-16.h +++ b/deps/v8/src/inspector/string-16.h @@ -6,7 +6,6 @@ #define V8_INSPECTOR_STRING_16_H_ #include -#include #include #include diff --git a/deps/v8/src/inspector/v8-string-conversions.h b/deps/v8/src/inspector/v8-string-conversions.h index 1126255dac23c9..0f674f0bc81947 100644 --- a/deps/v8/src/inspector/v8-string-conversions.h +++ b/deps/v8/src/inspector/v8-string-conversions.h @@ -5,7 +5,6 @@ #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_ -#include #include #include