diff options
author | JustKidding <jk@vin.ovh> | 2024-03-10 21:31:54 -0500 |
---|---|---|
committer | JustKidding <jk@vin.ovh> | 2024-03-10 21:31:54 -0500 |
commit | 9a78fc29d33fb146a90c2e77988171f5fb58da45 (patch) | |
tree | 8619d4912b918ffac2d861e70bbdabd695016a24 | |
parent | fad04a0cadef9de555544b2f373aa290fce8b894 (diff) | |
download | ungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.tar.gz ungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.tar.bz2 ungoogled-chromium-9a78fc29d33fb146a90c2e77988171f5fb58da45.zip |
upgpkg: ungoogled-chromium 122.0.6261.111-1
upstream release
-rw-r--r-- | .SRCINFO | 29 | ||||
-rw-r--r-- | PKGBUILD | 41 | ||||
-rw-r--r-- | REVERT-simplify-blink-NativeValueTraitsBase.patch | 747 | ||||
-rw-r--r-- | REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch | 174 | ||||
-rw-r--r-- | chromium-constexpr.patch | 48 | ||||
-rw-r--r-- | compiler-rt-adjust-paths.patch (renamed from compiler-rt-16.patch) | 10 | ||||
-rw-r--r-- | drop-flag-unsupported-by-clang17.patch (renamed from drop-flags-unsupported-by-clang16.patch) | 11 |
7 files changed, 28 insertions, 1032 deletions
@@ -1,6 +1,6 @@ pkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency - pkgver = 122.0.6261.69 + pkgver = 122.0.6261.111 pkgrel = 1 url = https://github.com/ungoogled-software/ungoogled-chromium arch = x86_64 @@ -13,6 +13,7 @@ pkgbase = ungoogled-chromium makedepends = gperf makedepends = nodejs makedepends = pipewire + makedepends = rust makedepends = qt5-base makedepends = java-runtime-headless makedepends = git @@ -52,38 +53,32 @@ pkgbase = ungoogled-chromium optdepends = org.freedesktop.secrets: password storage backend on GNOME / Xfce optdepends = kwallet: support for storing passwords in KWallet on Plasma optdepends = chromium-extension-web-store: Web Store Functionality - provides = chromium=122.0.6261.69 - provides = chromedriver=122.0.6261.69 + provides = chromium=122.0.6261.111 + provides = chromedriver=122.0.6261.111 conflicts = chromium conflicts = chromedriver options = !lto - source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-122.0.6261.69.tar.xz + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-122.0.6261.111.tar.xz source = https://github.com/foutrelis/chromium-launcher/archive/v8/chromium-launcher-8.tar.gz source = https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/122/chromium-patches-122.tar.bz2 source = support-ICU-74-in-LazyTextBreakIterator.patch - source = REVERT-simplify-blink-NativeValueTraitsBase.patch - source = REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch - source = chromium-constexpr.patch - source = drop-flags-unsupported-by-clang16.patch - source = compiler-rt-16.patch + source = drop-flag-unsupported-by-clang17.patch + source = compiler-rt-adjust-paths.patch source = use-oauth2-client-switches-as-default.patch - source = ungoogled-chromium-122.0.6261.69-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/122.0.6261.69-1.tar.gz + source = ungoogled-chromium-122.0.6261.111-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/122.0.6261.111-1.tar.gz source = 0001-vaapi-flag-ozone-wayland.patch source = 0001-adjust-buffer-format-order.patch source = 0001-enable-linux-unstable-deb-target.patch source = 0001-ozone-wayland-implement-text_input_manager_v3.patch source = 0001-ozone-wayland-implement-text_input_manager-fixes.patch - sha256sums = f5bf4085ad3173883b45ea72b483d07f50ec3aa0f7546ac3837a9d26d0b4f9c0 + sha256sums = 0b3da2f0ca63625e84a1b36571f23591248b8fcb422ce683c09283dbfc35c309 sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a sha256sums = 1f6acf165578288dc84edc7d9dcfabf7d38f55153b63a37ee5afa929f0e2baad sha256sums = 8c256b2a9498a63706a6e7a55eadbeb8cc814be66a75e49aec3716c6be450c6c - sha256sums = 318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50 - sha256sums = 00e06b889e4face0ef41293233ce55bd52064ab040f1fdd84aa19525f8ac3601 - sha256sums = a061f83e2b628927feb4dbc441eb54f8b8c3d81348e447cf3b90755d7cda5f54 - sha256sums = 53774fd7f807ad42f77d45cab9e5480cc2bcb0a5c5138110a434407521af9607 - sha256sums = 8a2649dcc6ff8d8f24ddbe40dc2a171824f681c6f33c39c4792b645b87c9dcab + sha256sums = 3bd35dab1ded5d9e1befa10d5c6c4555fe0a76d909fb724ac57d0bf10cb666c1 + sha256sums = b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961 sha256sums = e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711 - sha256sums = 6c2405ca58cae05ea1c8116495d7885a0f42f44ca3d70b2bd8f11c27abb23c52 + sha256sums = 927ee3d2518d7c4757ba367e98810b18a16b9468c71a4ab39f84b2282a743c23 sha256sums = 9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec sha256sums = 8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f sha256sums = 2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3 @@ -11,11 +11,11 @@ # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=ungoogled-chromium -pkgver=122.0.6261.69 +pkgver=122.0.6261.111 pkgrel=1 _launcher_ver=8 _manual_clone=0 -_system_clang=0 +_system_clang=1 pkgdesc="A lightweight approach to removing Google web service dependency" arch=('x86_64') url="https://github.com/ungoogled-software/ungoogled-chromium" @@ -24,7 +24,7 @@ depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva' 'libffi' 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire' - 'qt5-base' 'java-runtime-headless' 'git') + 'rust' 'qt5-base' 'java-runtime-headless' 'git') optdepends=('pipewire: WebRTC desktop sharing under Wayland' 'kdialog: support for native dialogs in Plasma' 'qt5-base: enable Qt5 with --enable-features=AllowQt' @@ -36,21 +36,15 @@ source=(https://commondatastorage.googleapis.com/chromium-browser-official/chrom https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz https://gitlab.com/Matt.Jolly/chromium-patches/-/archive/${pkgver%%.*}/chromium-patches-${pkgver%%.*}.tar.bz2 support-ICU-74-in-LazyTextBreakIterator.patch - REVERT-simplify-blink-NativeValueTraitsBase.patch - REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch - chromium-constexpr.patch - drop-flags-unsupported-by-clang16.patch - compiler-rt-16.patch + drop-flag-unsupported-by-clang17.patch + compiler-rt-adjust-paths.patch use-oauth2-client-switches-as-default.patch) -sha256sums=('f5bf4085ad3173883b45ea72b483d07f50ec3aa0f7546ac3837a9d26d0b4f9c0' +sha256sums=('0b3da2f0ca63625e84a1b36571f23591248b8fcb422ce683c09283dbfc35c309' '213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a' '1f6acf165578288dc84edc7d9dcfabf7d38f55153b63a37ee5afa929f0e2baad' '8c256b2a9498a63706a6e7a55eadbeb8cc814be66a75e49aec3716c6be450c6c' - '318df8f8662071cebcdf953698408058e17f59f184500b7e12e01a04a4206b50' - '00e06b889e4face0ef41293233ce55bd52064ab040f1fdd84aa19525f8ac3601' - 'a061f83e2b628927feb4dbc441eb54f8b8c3d81348e447cf3b90755d7cda5f54' - '53774fd7f807ad42f77d45cab9e5480cc2bcb0a5c5138110a434407521af9607' - '8a2649dcc6ff8d8f24ddbe40dc2a171824f681c6f33c39c4792b645b87c9dcab' + '3bd35dab1ded5d9e1befa10d5c6c4555fe0a76d909fb724ac57d0bf10cb666c1' + 'b3de01b7df227478687d7517f61a777450dca765756002c80c4915f271e2d961' 'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711') if (( _manual_clone )); then @@ -72,7 +66,7 @@ source=("${source[@]}" 0001-ozone-wayland-implement-text_input_manager_v3.patch 0001-ozone-wayland-implement-text_input_manager-fixes.patch) sha256sums=("${sha256sums[@]}" - '6c2405ca58cae05ea1c8116495d7885a0f42f44ca3d70b2bd8f11c27abb23c52' + '927ee3d2518d7c4757ba367e98810b18a16b9468c71a4ab39f84b2282a743c23' '9a5594293616e1390462af1f50276ee29fd6075ffab0e3f944f6346cb2eb8aec' '8ba5c67b7eb6cacd2dbbc29e6766169f0fca3bbb07779b1a0a76c913f17d343f' '2a44756404e13c97d000cc0d859604d6848163998ea2f838b3b9bb2c840967e3' @@ -144,20 +138,11 @@ prepare() { # Upstream fixes patch -Np1 -i ../support-ICU-74-in-LazyTextBreakIterator.patch - # Fix "error: defaulted definition of equality comparison operator cannot - # be declared constexpr because it invokes a non-constexpr comparison - # function" (patch for Chromium 121 from Fedora, later extended for 122) - patch -Np1 -i ../chromium-constexpr.patch + # Drop compiler flag that needs newer clang + patch -Np1 -i ../drop-flag-unsupported-by-clang17.patch - # Revert usage of C++20 features which likely need newer clang - patch -Rp1 -i ../REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch - patch -Rp1 -i ../REVERT-simplify-blink-NativeValueTraitsBase.patch - - # Drop compiler flags that need newer clang - patch -Np1 -i ../drop-flags-unsupported-by-clang16.patch - - # Allow libclang_rt.builtins from compiler-rt 16 to be used - patch -Np1 -i ../compiler-rt-16.patch + # Allow libclang_rt.builtins from compiler-rt >= 16 to be used + patch -Np1 -i ../compiler-rt-adjust-paths.patch # Fixes for building with libstdc++ instead of libc++ patch -Np1 -i ../chromium-patches-*/chromium-114-ruy-include.patch diff --git a/REVERT-simplify-blink-NativeValueTraitsBase.patch b/REVERT-simplify-blink-NativeValueTraitsBase.patch deleted file mode 100644 index fc046cb..0000000 --- a/REVERT-simplify-blink-NativeValueTraitsBase.patch +++ /dev/null @@ -1,747 +0,0 @@ -From 940af9f2c87b436559b97c53763aa9eaaf1254eb Mon Sep 17 00:00:00 2001 -From: Jeremy Roman <jbroman@chromium.org> -Date: Wed, 15 Nov 2023 16:24:54 +0000 -Subject: [PATCH] Use C++20 features to simplify blink::NativeValueTraitsBase. - -These allow some of the metaprogramming bits to be simplified a little. - -Change-Id: I052b4397586d21348401616e1792afdb9662f975 -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5030335 -Reviewed-by: Yuki Shiino <yukishiino@chromium.org> -Commit-Queue: Jeremy Roman <jbroman@chromium.org> -Cr-Commit-Position: refs/heads/main@{#1224978} ---- - .../bindings/core/v8/native_value_traits.h | 54 ++---- - .../v8/native_value_traits_buffer_sources.cc | 166 ++++++++---------- - .../core/v8/native_value_traits_impl.h | 159 +++++++---------- - 3 files changed, 151 insertions(+), 228 deletions(-) - -diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -index 7fc91d14acc71a2..1e5a0790df6da81 100644 ---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -@@ -5,6 +5,7 @@ - #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_ - #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_H_ - -+#include <concepts> - #include <type_traits> - - #include "third_party/blink/renderer/bindings/core/v8/idl_types_base.h" -@@ -30,7 +31,7 @@ class ExceptionState; - // return toInt32(isolate, value, exceptionState, NormalConversion); - // } - // } --template <typename T, typename SFINAEHelper = void> -+template <typename T> - struct NativeValueTraits; - - // This declaration serves only as a blueprint for specializations: the -@@ -45,22 +46,15 @@ struct NativeValueTraits; - - namespace bindings { - --template <typename T, typename = void> --struct NativeValueTraitsHasIsNull : std::false_type {}; -- - template <typename T> --struct NativeValueTraitsHasIsNull< -- T, -- std::void_t<decltype(std::declval<T>().IsNull())>> : std::true_type {}; -+struct ImplTypeFor { -+ using type = T; -+}; - - template <typename T> --struct NativeValueTraitsHasNullValue { -- // true if |T| supports IDL null value. -- static constexpr bool value = -- // ScriptValue, String, and union types have IsNull member function. -- bindings::NativeValueTraitsHasIsNull<T>::value || -- // Pointer types have nullptr as IDL null value. -- std::is_pointer<T>::value; -+ requires std::derived_from<T, IDLBase> -+struct ImplTypeFor<T> { -+ using type = typename T::ImplType; - }; - - } // namespace bindings -@@ -78,37 +72,17 @@ struct NativeValueTraitsHasNullValue { - // If present, |NullValue()| will be used when converting from the nullable type - // T?, and should be used if the impl type has an existing "null" state. If not - // present, WTF::Optional will be used to wrap the type. --template <typename T, typename SFINAEHelper = void> --struct NativeValueTraitsBase { -- STATIC_ONLY(NativeValueTraitsBase); -- -- using ImplType = T; -- -- static constexpr bool has_null_value = -- bindings::NativeValueTraitsHasNullValue<ImplType>::value; -- -- template <typename... ExtraArgs> -- static decltype(auto) ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state, -- ExtraArgs... extra_args) { -- return NativeValueTraits<std::remove_pointer_t<T>>::NativeValue( -- isolate, value, exception_state, -- std::forward<ExtraArgs>(extra_args)...); -- } --}; -- - template <typename T> --struct NativeValueTraitsBase< -- T, -- std::enable_if_t<std::is_base_of<IDLBase, T>::value>> { -+struct NativeValueTraitsBase { - STATIC_ONLY(NativeValueTraitsBase); - -- using ImplType = typename T::ImplType; -+ using ImplType = bindings::ImplTypeFor<T>::type; - -+ // Pointer types have nullptr as IDL null value. -+ // ScriptValue, String, and union types have IsNull member function. - static constexpr bool has_null_value = -- bindings::NativeValueTraitsHasNullValue<ImplType>::value; -+ std::is_pointer_v<ImplType> || -+ requires(ImplType value) { value.IsNull(); }; - - template <typename... ExtraArgs> - static decltype(auto) ArgumentValue(v8::Isolate* isolate, -diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc -index 508ea6d8eea481e..18de71d84023f0c 100644 ---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc -+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_buffer_sources.cc -@@ -7,6 +7,7 @@ - #include "third_party/blink/renderer/core/core_export.h" - #include "third_party/blink/renderer/core/execution_context/execution_context.h" - #include "third_party/blink/renderer/core/frame/web_feature.h" -+#include "third_party/blink/renderer/core/typed_arrays/flexible_array_buffer_view.h" - #include "third_party/blink/renderer/core/typed_arrays/typed_flexible_array_buffer_view.h" - - namespace blink { -@@ -698,12 +699,11 @@ DOMArrayBufferBase* NativeValueTraits< - // ArrayBufferView - - template <typename T> --NotShared<T> NativeValueTraits< -- NotShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- NativeValue(v8::Isolate* isolate, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+NotShared<T> NativeValueTraits<NotShared<T>>::NativeValue( -+ v8::Isolate* isolate, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return NativeValueImpl< - RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, -@@ -712,13 +712,12 @@ NotShared<T> NativeValueTraits< - } - - template <typename T> --NotShared<T> NativeValueTraits< -- NotShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+NotShared<T> NativeValueTraits<NotShared<T>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl< - RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, -@@ -729,12 +728,11 @@ NotShared<T> NativeValueTraits< - // [AllowShared] ArrayBufferView - - template <typename T> --MaybeShared<T> NativeValueTraits< -- MaybeShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- NativeValue(v8::Isolate* isolate, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::NativeValue( -+ v8::Isolate* isolate, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return NativeValueImpl<RecipeTrait<MaybeShared<T>>, - ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, -@@ -743,13 +741,12 @@ MaybeShared<T> NativeValueTraits< - } - - template <typename T> --MaybeShared<T> NativeValueTraits< -- MaybeShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> NativeValueTraits<MaybeShared<T>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>, - ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, -@@ -760,12 +757,12 @@ MaybeShared<T> NativeValueTraits< - // [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView - - template <typename T> --MaybeShared<T> NativeValueTraits< -- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- NativeValue(v8::Isolate* isolate, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> -+NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>::NativeValue( -+ v8::Isolate* isolate, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return NativeValueImpl< - RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck, -@@ -774,13 +771,12 @@ MaybeShared<T> NativeValueTraits< - } - - template <typename T> --MaybeShared<T> NativeValueTraits< -- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> NativeValueTraits<IDLBufferSourceTypeNoSizeLimit< -+ MaybeShared<T>>>::ArgumentValue(v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl< - RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck, -@@ -791,12 +787,11 @@ MaybeShared<T> NativeValueTraits< - // Nullable ArrayBufferView - - template <typename T> --NotShared<T> NativeValueTraits< -- IDLNullable<NotShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- NativeValue(v8::Isolate* isolate, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::NativeValue( -+ v8::Isolate* isolate, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return NativeValueImpl< - RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>, - Nullablity::kIsNullable, BufferSizeCheck::kCheck, -@@ -805,13 +800,12 @@ NotShared<T> NativeValueTraits< - } - - template <typename T> --NotShared<T> NativeValueTraits< -- IDLNullable<NotShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl< - RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>, - Nullablity::kIsNullable, BufferSizeCheck::kCheck, -@@ -822,12 +816,11 @@ NotShared<T> NativeValueTraits< - // Nullable [AllowShared] ArrayBufferView - - template <typename T> --MaybeShared<T> NativeValueTraits< -- IDLNullable<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- NativeValue(v8::Isolate* isolate, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::NativeValue( -+ v8::Isolate* isolate, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return NativeValueImpl<RecipeTrait<MaybeShared<T>>, - ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNullable, BufferSizeCheck::kCheck, -@@ -836,13 +829,12 @@ MaybeShared<T> NativeValueTraits< - } - - template <typename T> --MaybeShared<T> NativeValueTraits< -- IDLNullable<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>, - ToDOMViewType<T, kMaybeShared>, - Nullablity::kIsNullable, BufferSizeCheck::kCheck, -@@ -853,9 +845,9 @@ MaybeShared<T> NativeValueTraits< - // Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView - - template <typename T> --MaybeShared<T> NativeValueTraits< -- IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>:: -+ requires std::derived_from<T, DOMArrayBufferView> -+MaybeShared<T> -+NativeValueTraits<IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>:: - ArgumentValue(v8::Isolate* isolate, - int argument_index, - v8::Local<v8::Value> value, -@@ -870,13 +862,11 @@ MaybeShared<T> NativeValueTraits< - // [AllowShared, FlexibleArrayBufferView] ArrayBufferView - - template <typename T> --T NativeValueTraits<T, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, FlexibleArrayBufferView> -+T NativeValueTraits<T>::ArgumentValue(v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView, - Nullablity::kIsNotNullable, BufferSizeCheck::kCheck, - ResizableAllowance::kDisallowResizable, -@@ -888,13 +878,12 @@ T NativeValueTraits<T, - // ArrayBufferView - - template <typename T> --T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, FlexibleArrayBufferView> -+T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl< - RecipeTrait<T>, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable, - BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable, -@@ -905,13 +894,12 @@ T NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>, - // Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView - - template <typename T> --T NativeValueTraits<IDLNullable<T>, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>>:: -- ArgumentValue(v8::Isolate* isolate, -- int argument_index, -- v8::Local<v8::Value> value, -- ExceptionState& exception_state) { -+ requires std::derived_from<T, FlexibleArrayBufferView> -+T NativeValueTraits<IDLNullable<T>>::ArgumentValue( -+ v8::Isolate* isolate, -+ int argument_index, -+ v8::Local<v8::Value> value, -+ ExceptionState& exception_state) { - return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView, - Nullablity::kIsNullable, BufferSizeCheck::kCheck, - ResizableAllowance::kDisallowResizable, -diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -index 899929dcf49f90a..5011503dcf1c0c8 100644 ---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -@@ -5,6 +5,9 @@ - #ifndef THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_ - #define THIRD_PARTY_BLINK_RENDERER_BINDINGS_CORE_V8_NATIVE_VALUE_TRAITS_IMPL_H_ - -+#include <concepts> -+#include <type_traits> -+ - #include "third_party/abseil-cpp/absl/types/optional.h" - #include "third_party/blink/renderer/bindings/core/v8/idl_types.h" - #include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h" -@@ -715,9 +718,8 @@ struct CORE_EXPORT NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> { -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<T> { - // NotShared<T> or MaybeShared<T> should be used instead. - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -729,9 +731,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> { -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<IDLNullable<T>> { - // NotShared<T> or MaybeShared<T> should be used instead. - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -743,9 +744,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- NotShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<NotShared<T>> - : public NativeValueTraitsBase<NotShared<T>> { - static NotShared<T> NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -758,9 +758,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<NotShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<IDLNullable<NotShared<T>>> - : public NativeValueTraitsBase<NotShared<T>> { - static NotShared<T> NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -773,9 +772,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- MaybeShared<T>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<MaybeShared<T>> - : public NativeValueTraitsBase<MaybeShared<T>> { - static MaybeShared<T> NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -788,9 +786,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>> - : public NativeValueTraitsBase<MaybeShared<T>> { - // FlexibleArrayBufferView uses this in its implementation, so we cannot - // delete it. -@@ -805,9 +802,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<MaybeShared<T>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ requires std::derived_from<T, DOMArrayBufferView> -+struct NativeValueTraits<IDLNullable<MaybeShared<T>>> - : public NativeValueTraitsBase<MaybeShared<T>> { - static MaybeShared<T> NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -820,9 +816,9 @@ struct NativeValueTraits< - }; - - template <typename T> -+ requires std::derived_from<T, DOMArrayBufferView> - struct NativeValueTraits< -- IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>, -- typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> -+ IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>> - : public NativeValueTraitsBase<MaybeShared<T>> { - // BufferSourceTypeNoSizeLimit must be used only as arguments. - static MaybeShared<T> NativeValue(v8::Isolate* isolate, -@@ -836,11 +832,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>> -- : public NativeValueTraitsBase<T> { -+ requires std::derived_from<T, FlexibleArrayBufferView> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> { - // FlexibleArrayBufferView must be used only as arguments. - static T NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -853,10 +846,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLBufferSourceTypeNoSizeLimit<T>, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>> -+ requires std::derived_from<T, FlexibleArrayBufferView> -+struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>> - : public NativeValueTraitsBase<T> { - // BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only - // as arguments. -@@ -871,11 +862,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t< -- std::is_base_of<FlexibleArrayBufferView, T>::value>> -- : public NativeValueTraitsBase<T> { -+ requires std::derived_from<T, FlexibleArrayBufferView> -+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T> { - // FlexibleArrayBufferView must be used only as arguments. - static T NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -1134,9 +1122,8 @@ NativeValueTraits<IDLSequence<T>>::NativeValue( - } - - template <typename T> --struct NativeValueTraits<IDLNullable<IDLSequence<T>>, -- typename std::enable_if_t< -- NativeValueTraits<IDLSequence<T>>::has_null_value>> -+ requires NativeValueTraits<IDLSequence<T>>::has_null_value -+struct NativeValueTraits<IDLNullable<IDLSequence<T>>> - : public NativeValueTraitsBase<HeapVector<AddMemberIfNeeded<T>>*> { - using ImplType = typename NativeValueTraits<IDLSequence<T>>::ImplType*; - -@@ -1203,9 +1190,8 @@ struct NativeValueTraits<IDLArray<T>> - : public NativeValueTraits<IDLSequence<T>> {}; - - template <typename T> --struct NativeValueTraits<IDLNullable<IDLArray<T>>, -- typename std::enable_if_t< -- NativeValueTraits<IDLSequence<T>>::has_null_value>> -+ requires NativeValueTraits<IDLSequence<T>>::has_null_value -+struct NativeValueTraits<IDLNullable<IDLArray<T>>> - : public NativeValueTraits<IDLNullable<IDLSequence<T>>> {}; - - // Record types -@@ -1335,10 +1321,8 @@ struct NativeValueTraits<IDLRecord<K, V>> - - // Callback function types - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, CallbackFunctionBase> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1361,9 +1345,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>> -+ requires std::derived_from<T, CallbackFunctionBase> -+struct NativeValueTraits<IDLNullable<T>> - : public NativeValueTraitsBase<IDLNullable<T>> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -1392,10 +1375,8 @@ struct NativeValueTraits< - - // Callback interface types - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, CallbackInterfaceBase> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1418,9 +1399,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>> -+ requires std::derived_from<T, CallbackInterfaceBase> -+struct NativeValueTraits<IDLNullable<T>> - : public NativeValueTraitsBase<IDLNullable<T>> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -1449,11 +1429,8 @@ struct NativeValueTraits< - - // Dictionary types - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t< -- std::is_base_of<bindings::DictionaryBase, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, bindings::DictionaryBase> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1464,14 +1441,11 @@ struct NativeValueTraits< - // We don't support nullable dictionary types in general since it's quite - // confusing and often misused. - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t< -- std::is_base_of<bindings::DictionaryBase, T>::value && -- (std::is_same<T, GPUColorTargetState>::value || -- std::is_same<T, GPURenderPassColorAttachment>::value || -- std::is_same<T, GPUVertexBufferLayout>::value)>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, bindings::DictionaryBase> && -+ (std::same_as<T, GPUColorTargetState> || -+ std::same_as<T, GPURenderPassColorAttachment> || -+ std::same_as<T, GPUVertexBufferLayout>) -+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1483,11 +1457,8 @@ struct NativeValueTraits< - - // Enumeration types - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t< -- std::is_base_of<bindings::EnumerationBase, T>::value>> -- : public NativeValueTraitsBase<T> { -+ requires std::derived_from<T, bindings::EnumerationBase> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T> { - static T NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1497,10 +1468,8 @@ struct NativeValueTraits< - - // Interface types - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, ScriptWrappable> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - static inline T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1528,9 +1497,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>> -+ requires std::derived_from<T, ScriptWrappable> -+struct NativeValueTraits<IDLNullable<T>> - : public NativeValueTraitsBase<IDLNullable<T>> { - static inline T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, -@@ -1565,10 +1533,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- T, -- typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, bindings::UnionBase> -+struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1584,10 +1550,8 @@ struct NativeValueTraits< - }; - - template <typename T> --struct NativeValueTraits< -- IDLNullable<T>, -- typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>> -- : public NativeValueTraitsBase<T*> { -+ requires std::derived_from<T, bindings::UnionBase> -+struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> { - static T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { -@@ -1608,9 +1572,8 @@ struct NativeValueTraits< - - // Nullable types - template <typename InnerType> --struct NativeValueTraits< -- IDLNullable<InnerType>, -- typename std::enable_if_t<!NativeValueTraits<InnerType>::has_null_value>> -+ requires(!NativeValueTraits<InnerType>::has_null_value) -+struct NativeValueTraits<IDLNullable<InnerType>> - : public NativeValueTraitsBase<IDLNullable<InnerType>> { - // https://webidl.spec.whatwg.org/#es-nullable-type - using ImplType = -@@ -1642,9 +1605,8 @@ struct NativeValueTraits<IDLNullable<IDLNullable<T>>>; - - // Optional types - template <typename T> --struct NativeValueTraits<IDLOptional<T>, -- typename std::enable_if_t<std::is_arithmetic< -- typename NativeValueTraits<T>::ImplType>::value>> -+ requires std::is_arithmetic_v<typename NativeValueTraits<T>::ImplType> -+struct NativeValueTraits<IDLOptional<T>> - : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> { - using ImplType = typename NativeValueTraits<T>::ImplType; - -@@ -1666,9 +1628,8 @@ struct NativeValueTraits<IDLOptional<T>, - }; - - template <typename T> --struct NativeValueTraits<IDLOptional<T>, -- typename std::enable_if_t<std::is_pointer< -- typename NativeValueTraits<T>::ImplType>::value>> -+ requires std::is_pointer_v<typename NativeValueTraits<T>::ImplType> -+struct NativeValueTraits<IDLOptional<T>> - : public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> { - using ImplType = typename NativeValueTraits<T>::ImplType; - diff --git a/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch b/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch deleted file mode 100644 index 8db4a84..0000000 --- a/REVERT-use-v8-Array-Iterate-for-converting-script-wrappables.patch +++ /dev/null @@ -1,174 +0,0 @@ -From ce71348a09f6689dd01a68db64b172191d0182d8 Mon Sep 17 00:00:00 2001 -From: Andrey Kosyakov <caseq@chromium.org> -Date: Thu, 21 Dec 2023 18:38:38 +0000 -Subject: [PATCH] [bindings] Use v8::Array::Iterate for converting script - wrappables - -This changes CreateIDLSequenceFromV8Array to use the new -v8::Array::Iterate() operation. -This speeds up the "execBundles" part of the microbenchmark -at crbug.com/dawn/1858 by around 3x. -This depends on crrev.com/c/4846594 landing (and rolling) first. - -This is a slight re-work of https://crrev.com/c/4847447/3, -originally by jkummerow@chromium.org - -Bug: v8:14218, dawn:1858, 1511239 -Change-Id: Ia266556d05b4d53e6942e12609d1c08882b4ff0f -Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5132129 -Commit-Queue: Andrey Kosyakov <caseq@chromium.org> -Reviewed-by: Yuki Shiino <yukishiino@chromium.org> -Cr-Commit-Position: refs/heads/main@{#1240236} ---- - .../bindings/core/v8/native_value_traits.h | 6 ++ - .../core/v8/native_value_traits_impl.h | 91 ++++++++++++++++++- - 2 files changed, 95 insertions(+), 2 deletions(-) - -diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -index 1e5a0790df6d..a5c28b37e945 100644 ---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h -@@ -84,6 +84,12 @@ struct NativeValueTraitsBase { - std::is_pointer_v<ImplType> || - requires(ImplType value) { value.IsNull(); }; - -+ // This should only be true for certain subclasses of ScriptWrappable -+ // that satisfy the assumptions of CreateIDLSequenceFromV8ArraySlow() with -+ // regards to how NativeValue() is implemented for the underlying type. -+ static constexpr bool supports_scriptwrappable_specific_fast_array_iteration = -+ false; -+ - template <typename... ExtraArgs> - static decltype(auto) ArgumentValue(v8::Isolate* isolate, - int argument_index, -diff --git a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -index 5011503dcf1c..f085b6e90516 100644 ---- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h -@@ -1037,10 +1037,86 @@ CreateIDLSequenceFromV8ArraySlow(v8::Isolate* isolate, - return {}; - } - -- typename NativeValueTraits<IDLSequence<T>>::ImplType result; -+ using ResultType = typename NativeValueTraits<IDLSequence<T>>::ImplType; -+ ResultType result; - result.ReserveInitialCapacity(length); - v8::Local<v8::Context> current_context = isolate->GetCurrentContext(); - v8::TryCatch try_block(isolate); -+ -+ // Fast path -- we're creating a sequence of script wrappables, which can be -+ // done by directly getting underlying object as long as array types are -+ // homogeneous. With ScriptWrappables, we don't expect to enter JS during -+ // iteration, so we can rely on v8::Array::Iterate() which is much faster than -+ // iterating an array on the client side of the v8. Additionally, for most -+ // subsptyes of ScriptWrappables, we can speed up type checks (see more on -+ // that below next to supports_scriptwrappable_specific_fast_array_iteration -+ // check. -+ if constexpr (std::is_base_of_v<ScriptWrappable, T>) { -+ struct CallbackData { -+ STACK_ALLOCATED(); -+ -+ public: -+ v8::Isolate* isolate; -+ v8::TypecheckWitness witness; -+ ResultType& result; -+ ExceptionState& exception_state; -+ CallbackData(v8::Isolate* isolate, -+ ResultType& result, -+ ExceptionState& exception_state) -+ : isolate(isolate), -+ witness(isolate), -+ result(result), -+ exception_state(exception_state) {} -+ }; -+ -+ CallbackData callback_data(isolate, result, exception_state); -+ v8::Array::IterationCallback callback = [](uint32_t index, -+ v8::Local<v8::Value> v8_element, -+ void* data) { -+ CallbackData* callback_data = reinterpret_cast<CallbackData*>(data); -+ // 3.4. Initialize Si to the result of converting nextItem to an IDL value -+ // of type T. -+ v8::TypecheckWitness& witness = callback_data->witness; -+ // We can speed up type check by taking advantage of V8's type witness, -+ // provided traits' NativeValue implementation doesn't have additional -+ // logic beyond checking the type and calling ToScriptWrappable(). -+ if constexpr ( -+ NativeValueTraits< -+ T>::supports_scriptwrappable_specific_fast_array_iteration) { -+ if (witness.Matches(v8_element)) { -+ auto&& value = ToScriptWrappable(v8_element.As<v8::Object>()) -+ ->template ToImpl<T>(); -+ callback_data->result.push_back(std::move(value)); -+ return v8::Array::CallbackResult::kContinue; -+ } -+ } -+ auto&& element = NativeValueTraits<T>::NativeValue( -+ callback_data->isolate, v8_element, callback_data->exception_state); -+ if (callback_data->exception_state.HadException()) { -+ // It doesn't matter whether we return `kException` or `kBreak` here, -+ // as that only affects the return value of `v8_array->Iterate()`, -+ // which we are ignoring. -+ return v8::Array::CallbackResult::kException; -+ } -+ if constexpr ( -+ NativeValueTraits< -+ T>::supports_scriptwrappable_specific_fast_array_iteration) { -+ witness.Update(v8_element); -+ } -+ callback_data->result.push_back(std::move(element)); -+ return v8::Array::CallbackResult::kContinue; -+ }; -+ if (!v8_array->Iterate(current_context, callback, &callback_data) -+ .IsJust()) { -+ if (try_block.HasCaught()) { -+ exception_state.RethrowV8Exception(try_block.Exception()); -+ } -+ DCHECK(exception_state.HadException()); -+ return {}; -+ } -+ return result; -+ } -+ - // Array length may change if array is mutated during iteration. - for (uint32_t i = 0; i < v8_array->Length(); ++i) { - v8::Local<v8::Value> v8_element; -@@ -1056,6 +1132,7 @@ CreateIDLSequenceFromV8ArraySlow(v8::Isolate* isolate, - return {}; - result.push_back(std::move(element)); - } -+ - // 3.2. If next is false, then return an IDL sequence value of type - // sequence<T> of length i, where the value of the element at index j is Sj. - return result; -@@ -1398,6 +1475,7 @@ struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { - } - }; - -+// Interface types - template <typename T> - requires std::derived_from<T, CallbackInterfaceBase> - struct NativeValueTraits<IDLNullable<T>> -@@ -1470,12 +1548,21 @@ struct NativeValueTraits<T> : public NativeValueTraitsBase<T> { - template <typename T> - requires std::derived_from<T, ScriptWrappable> - struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> { -+ // This signifies that CreateIDLSequenceFromV8ArraySlow() may apply -+ // certain optimization based on assumptions about `NativeValue()` -+ // implementation below. For subclasses of ScriptWrappable that have -+ // different implementation of NativeValue(), this should remain false. -+ static constexpr bool supports_scriptwrappable_specific_fast_array_iteration = -+ true; -+ - static inline T* NativeValue(v8::Isolate* isolate, - v8::Local<v8::Value> value, - ExceptionState& exception_state) { - const WrapperTypeInfo* wrapper_type_info = T::GetStaticWrapperTypeInfo(); -- if (V8PerIsolateData::From(isolate)->HasInstance(wrapper_type_info, value)) -+ if (V8PerIsolateData::From(isolate)->HasInstance(wrapper_type_info, -+ value)) { - return ToScriptWrappable(value.As<v8::Object>())->template ToImpl<T>(); -+ } - - bindings::NativeValueTraitsInterfaceNotOfType(wrapper_type_info, - exception_state); diff --git a/chromium-constexpr.patch b/chromium-constexpr.patch deleted file mode 100644 index 35acd39..0000000 --- a/chromium-constexpr.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/base/types/strong_alias.h b/base/types/strong_alias.h -index 9f80b7fc8adf..4d28bd195c8a 100644 ---- a/base/types/strong_alias.h -+++ b/base/types/strong_alias.h -@@ -110,7 +110,7 @@ class StrongAlias { - // a `StrongAlias<W>`. - friend constexpr auto operator<=>(const StrongAlias& lhs, - const StrongAlias& rhs) = default; -- friend constexpr bool operator==(const StrongAlias& lhs, -+ friend bool operator==(const StrongAlias& lhs, - const StrongAlias& rhs) = default; - - // Hasher to use in std::unordered_map, std::unordered_set, etc. -diff --git a/components/autofill/core/common/unique_ids.h b/components/autofill/core/common/unique_ids.h -index eb8d5d2c8ec9..6bfabf286379 100644 ---- a/components/autofill/core/common/unique_ids.h -+++ b/components/autofill/core/common/unique_ids.h -@@ -137,7 +137,7 @@ struct GlobalId { - - friend constexpr auto operator<=>(const GlobalId<RendererId>& lhs, - const GlobalId<RendererId>& rhs) = default; -- friend constexpr bool operator==(const GlobalId<RendererId>& lhs, -+ friend bool operator==(const GlobalId<RendererId>& lhs, - const GlobalId<RendererId>& rhs) = default; - }; - -diff --git a/components/performance_manager/resource_attribution/query_params.h b/components/performance_manager/resource_attribution/query_params.h -index 4616f1665e91..679dfcabe999 100644 ---- a/components/performance_manager/resource_attribution/query_params.h -+++ b/components/performance_manager/resource_attribution/query_params.h -@@ -29,7 +29,7 @@ class ContextCollection { - ContextCollection(const ContextCollection& other); - ContextCollection& operator=(const ContextCollection& other); - -- friend constexpr bool operator==(const ContextCollection&, -+ friend bool operator==(const ContextCollection&, - const ContextCollection&) = default; - - // Adds `context` to the collection. -@@ -67,7 +67,7 @@ struct QueryParams { - QueryParams(const QueryParams& other); - QueryParams& operator=(const QueryParams& other); - -- friend constexpr bool operator==(const QueryParams&, -+ friend bool operator==(const QueryParams&, - const QueryParams&) = default; - - // Resource types to measure. diff --git a/compiler-rt-16.patch b/compiler-rt-adjust-paths.patch index e14829a..0469220 100644 --- a/compiler-rt-16.patch +++ b/compiler-rt-adjust-paths.patch @@ -18,17 +18,13 @@ index d4de2e0cca0..57359c32121 100644 } else { assert(false) # Unhandled cpu type } -@@ -166,6 +169,15 @@ template("clang_lib") { +@@ -166,6 +169,11 @@ template("clang_lib") { assert(false) # Unhandled target platform } -+ # Bit of a hack to make this find builtins from compiler-rt 16 ++ # Bit of a hack to make this find builtins from compiler-rt >= 16 + if (is_linux || is_chromeos) { -+ if (clang_version == "16") { -+ _dir = "linux" -+ } else { -+ _suffix = "" -+ } ++ _dir = "linux" + } + _clang_lib_dir = "$clang_base_path/lib/clang/$clang_version/lib" diff --git a/drop-flags-unsupported-by-clang16.patch b/drop-flag-unsupported-by-clang17.patch index a146a6d..a1412c9 100644 --- a/drop-flags-unsupported-by-clang16.patch +++ b/drop-flag-unsupported-by-clang17.patch @@ -27,14 +27,3 @@ index 89b4755ac8b3..94b457385663 100644 # TODO(crbug.com/1235145): Investigate why/if this should be needed. if (is_win) { cflags += [ "/clang:-ffp-contract=off" ] -@@ -802,10 +784,6 @@ config("compiler") { - if (is_apple) { - ldflags += [ "-Wcrl,object_path_lto" ] - } -- -- # We only use one version of LLVM within a build so there's no need to -- # upgrade debug info, which can be expensive since it runs the verifier. -- ldflags += [ "-Wl,-mllvm,-disable-auto-upgrade-debug-info" ] - } - - # TODO(https://crbug.com/1211155): investigate why this isn't effective on |