import chromium-125.0.6422.60-1.el8

i8ce changed/i8ce/chromium-125.0.6422.60-1.el8
MSVSphere Packaging Team 6 months ago
parent ab4b03fe47
commit a8f058f5d4

@ -1,4 +1,4 @@
d2e88897fba7702a6ac076290b5e3f6da0381da1 SOURCES/chromium-124.0.6367.201-clean.tar.xz
616b1a33cb3076c6f5ea3b082fbcd1a3c9148ffa SOURCES/chromium-125.0.6422.60-clean.tar.xz
7e5d2c7864c5c83ec789b59c77cd9c20d2594916 SOURCES/linux-arm64-0.19.2.tgz
dea187019741602d57aaf189a80abba261fbd2aa SOURCES/linux-x64-0.19.2.tgz
3e94bb4f999c636293bc745b02d98e7925da5616 SOURCES/node-v20.6.1-linux-arm64.tar.xz

2
.gitignore vendored

@ -1,4 +1,4 @@
SOURCES/chromium-124.0.6367.201-clean.tar.xz
SOURCES/chromium-125.0.6422.60-clean.tar.xz
SOURCES/linux-arm64-0.19.2.tgz
SOURCES/linux-x64-0.19.2.tgz
SOURCES/node-v20.6.1-linux-arm64.tar.xz

@ -1,49 +1,7 @@
Index: chromium-124.0.6367.60/third_party/boringssl/src/cmake/perlasm.cmake
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/abi_self_test.cc
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/cmake/perlasm.cmake
+++ chromium-124.0.6367.60/third_party/boringssl/src/cmake/perlasm.cmake
@@ -17,6 +17,7 @@ function(add_perlasm_target dest src)
DEPENDS
${src}
${PROJECT_SOURCE_DIR}/crypto/perlasm/arm-xlate.pl
+ ${PROJECT_SOURCE_DIR}/crypto/perlasm/ppc-xlate.pl
${PROJECT_SOURCE_DIR}/crypto/perlasm/x86_64-xlate.pl
${PROJECT_SOURCE_DIR}/crypto/perlasm/x86asm.pl
${PROJECT_SOURCE_DIR}/crypto/perlasm/x86gas.pl
@@ -39,6 +40,9 @@ function(perlasm var arch dest src)
elseif(arch STREQUAL "arm")
add_perlasm_target("${dest}-linux.S" ${src} linux32 ${ARGN})
append_to_parent_scope("${var}_ASM" "${dest}-linux.S")
+ elseif(arch STREQUAL "ppc64le")
+ add_perlasm_target("${dest}-linux.S" ${src} linux64le)
+ append_to_parent_scope("${var}_ASM" "${dest}-linux.S")
elseif(arch STREQUAL "x86")
add_perlasm_target("${dest}-apple.S" ${src} macosx -fPIC ${ARGN})
add_perlasm_target("${dest}-linux.S" ${src} elf -fPIC ${ARGN})
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/CMakeLists.txt
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/CMakeLists.txt
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/CMakeLists.txt
@@ -26,6 +26,7 @@ perlasm(CRYPTO_SOURCES aarch64 cipher_ex
perlasm(CRYPTO_SOURCES aarch64 test/trampoline-armv8 test/asm/trampoline-armv8.pl)
perlasm(CRYPTO_SOURCES arm chacha/chacha-armv4 chacha/asm/chacha-armv4.pl)
perlasm(CRYPTO_SOURCES arm test/trampoline-armv4 test/asm/trampoline-armv4.pl)
+perlasm(CRYPTO_SOURCES ppc64le test/trampoline-ppc test/asm/trampoline-ppc.pl)
perlasm(CRYPTO_SOURCES x86 chacha/chacha-x86 chacha/asm/chacha-x86.pl)
perlasm(CRYPTO_SOURCES x86 test/trampoline-x86 test/asm/trampoline-x86.pl)
perlasm(CRYPTO_SOURCES x86_64 chacha/chacha-x86_64 chacha/asm/chacha-x86_64.pl)
@@ -137,6 +138,7 @@ add_library(
cpu_arm_freebsd.c
cpu_arm_linux.c
cpu_intel.c
+ cpu_ppc64le.c
crypto.c
curve25519/curve25519.c
curve25519/curve25519_64_adx.c
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/abi_self_test.cc
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/abi_self_test.cc
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/abi_self_test.cc
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/abi_self_test.cc
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/abi_self_test.cc
@@ -521,3 +521,289 @@ TEST(ABITest, AArch64) {
CHECK_ABI_NO_UNWIND(abi_test_clobber_v15_upper);
}
@ -334,10 +292,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/abi_self_test.cc
+ CHECK_ABI_NO_UNWIND(abi_test_clobber_lr);
+}
+#endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/cpu_ppc64le.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/cpu_ppc64le.c
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/cpu_ppc64le.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/cpu_ppc64le.c
@@ -0,0 +1,38 @@
+/* Copyright (c) 2016, Google Inc.
+ *
@ -377,10 +335,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/cpu_ppc64le.c
+}
+
+#endif // OPENSSL_PPC64LE
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/crypto.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/crypto.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/crypto.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/crypto.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/crypto.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/crypto.c
@@ -25,10 +25,12 @@ static_assert(sizeof(ossl_ssize_t) == si
"ossl_ssize_t should be the same size as size_t");
@ -419,23 +377,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/crypto.c
#elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
#include <openssl/arm_arch.h>
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/CMakeLists.txt
@@ -19,6 +19,8 @@ perlasm(BCM_SOURCES arm sha1-armv4-large
perlasm(BCM_SOURCES arm sha256-armv4 sha/asm/sha256-armv4.pl)
perlasm(BCM_SOURCES arm sha512-armv4 sha/asm/sha512-armv4.pl)
perlasm(BCM_SOURCES arm vpaes-armv7 aes/asm/vpaes-armv7.pl)
+perlasm(BCM_SOURCES ppc64le aesp8-ppc aes/asm/aesp8-ppc.pl)
+perlasm(BCM_SOURCES ppc64le ghashp8-ppc modes/asm/ghashp8-ppc.pl)
perlasm(BCM_SOURCES x86 aesni-x86 aes/asm/aesni-x86.pl)
perlasm(BCM_SOURCES x86 bn-586 bn/asm/bn-586.pl)
perlasm(BCM_SOURCES x86 co-586 bn/asm/co-586.pl)
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/aes/asm/aesp8-ppc.pl
@@ -0,0 +1,3809 @@
+#! /usr/bin/env perl
+# Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved.
@ -4246,10 +4191,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/as
+}
+
+close STDOUT or die "error closing STDOUT: $!";
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/aes/internal.h
@@ -59,6 +59,12 @@ OPENSSL_INLINE int vpaes_capable(void) {
OPENSSL_INLINE int vpaes_capable(void) { return CRYPTO_is_NEON_capable(); }
#endif
@ -4263,10 +4208,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/aes/in
#endif
#endif // !NO_ASM
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bcm.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/bcm.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bcm.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/bcm.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/bcm.c
@@ -102,6 +102,7 @@
#include "self_check/fips.c"
#include "self_check/self_check.c"
@ -4275,10 +4220,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bcm.c
#include "sha/sha1.c"
#include "sha/sha256.c"
#include "sha/sha512.c"
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/bn/bn.c
@@ -384,6 +384,23 @@ int bn_expand(BIGNUM *bn, size_t bits) {
}
@ -4303,10 +4248,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/bn/bn.
if ((size_t)bn->width <= words) {
if (!bn_wexpand(bn, words)) {
return 0;
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c
@@ -1455,6 +1455,8 @@ int EVP_has_aes_hardware(void) {
return hwaes_capable() && crypto_gcm_clmul_enabled();
#elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
@ -4316,10 +4261,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/cipher
#else
return 0;
#endif
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/asm/ghashp8-ppc.pl
@@ -0,0 +1,671 @@
+#! /usr/bin/env perl
+# Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved.
@ -4992,10 +4937,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/
+}
+
+close STDOUT or die "error closing STDOUT: $!"; # enforce flush
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/gcm.c
@@ -228,6 +228,13 @@ void CRYPTO_ghash_init(gmult_func *out_m
*out_hash = gcm_ghash_neon;
return;
@ -5010,10 +4955,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/
#endif
gcm_init_nohw(out_table, H);
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/gcm_test.cc
@@ -215,5 +215,15 @@ TEST(GCMTest, ABI) {
}
}
@ -5030,10 +4975,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/
+#endif // GHASH_ASM_PPC64LE
}
#endif // SUPPORTS_ABI_TEST && !OPENSSL_NO_ASM
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/modes/internal.h
@@ -325,6 +325,13 @@ void aes_gcm_dec_kernel(const uint8_t *i
const u128 Htable[16]);
#endif
@ -5048,10 +4993,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/modes/
#endif
#endif // OPENSSL_NO_ASM
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/rand/getrandom_fillin.h
@@ -30,6 +30,8 @@
#define EXPECTED_NR_getrandom 278
#elif defined(OPENSSL_ARM)
@ -5061,10 +5006,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/g
#elif defined(OPENSSL_RISCV64)
#define EXPECTED_NR_getrandom 278
#endif
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/rand/rand.c
@@ -431,6 +431,11 @@ void RAND_bytes_with_additional_data(uin
// Take a read lock around accesses to |state->drbg|. This is needed to
// avoid returning bad entropy if we race with
@ -5077,16 +5022,15 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/rand/r
CRYPTO_MUTEX_lock_read(&state->clear_drbg_lock);
#endif
if (!CTR_DRBG_reseed(&state->drbg, seed, reseed_additional_data,
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
@@ -23,6 +23,17 @@
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/internal.h
@@ -23,6 +23,16 @@
extern "C" {
#endif
+#if defined(OPENSSL_PPC64LE) || \
+ (!defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86))
+#if defined(OPENSSL_PPC64LE)
+// POWER has an intrinsics-based implementation of SHA-1 and thus the functions
+// normally defined in assembly are available even with |OPENSSL_NO_ASM| in
+// this case.
@ -5099,10 +5043,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/in
// Define SHA{n}[_{variant}]_ASM if sha{n}_block_data_order[_{variant}] is
// defined in assembly.
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/sha1-altivec.c
@@ -0,0 +1,361 @@
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
@ -5465,10 +5409,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sh
+#undef BODY_20_39
+#undef BODY_40_59
+#undef BODY_60_79
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/internal.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/internal.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/internal.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/internal.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/internal.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/internal.h
@@ -181,7 +181,7 @@ extern "C" {
@ -5478,7 +5422,7 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/internal.h
// OPENSSL_cpuid_setup initializes the platform-specific feature cache.
void OPENSSL_cpuid_setup(void);
#endif
@@ -1632,6 +1632,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51
@@ -1638,6 +1638,16 @@ OPENSSL_INLINE int CRYPTO_is_ARMv8_SHA51
#endif // OPENSSL_ARM || OPENSSL_AARCH64
@ -5495,10 +5439,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/internal.h
#if defined(BORINGSSL_DISPATCH_TEST)
// Runtime CPU dispatch testing support
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/perlasm/ppc-xlate.pl
@@ -0,0 +1,320 @@
+#! /usr/bin/env perl
+# Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved.
@ -5820,10 +5764,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/perlasm/ppc-xlate
+___
+
+close STDOUT or die "error closing STDOUT: $!";
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/abi_test.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/test/abi_test.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/test/abi_test.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/abi_test.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/test/abi_test.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/test/abi_test.h
@@ -179,7 +179,78 @@ struct alignas(16) Reg128 {
CALLER_STATE_REGISTER(uint64_t, x28) \
CALLER_STATE_REGISTER(uint64_t, x29)
@ -5930,10 +5874,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/abi_test.h
static_assert(sizeof...(args) <= 8,
"too many arguments for abi_test_trampoline");
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/test/asm/trampoline-ppc.pl
@@ -0,0 +1,262 @@
+#!/usr/bin/env perl
+# Copyright (c) 2019, Google Inc.
@ -6197,10 +6141,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/test/asm/trampoli
+
+print $code;
+close STDOUT or die "error closing STDOUT: $!";
Index: chromium-124.0.6367.60/third_party/boringssl/src/include/openssl/target.h
Index: chromium-125.0.6422.41/third_party/boringssl/src/include/openssl/target.h
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/include/openssl/target.h
+++ chromium-124.0.6367.60/third_party/boringssl/src/include/openssl/target.h
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/include/openssl/target.h
+++ chromium-125.0.6422.41/third_party/boringssl/src/include/openssl/target.h
@@ -34,6 +34,9 @@
#elif defined(__ARMEL__) || defined(_M_ARM)
#define OPENSSL_32_BIT
@ -6211,10 +6155,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/include/openssl/target.h
#elif defined(__MIPSEL__) && !defined(__LP64__)
#define OPENSSL_32_BIT
#define OPENSSL_MIPS
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/acvp/modulewrapper/main.cc
@@ -37,6 +37,8 @@ int main(int argc, char **argv) {
puts("ARM (32-bit)");
#elif defined(OPENSSL_AARCH64)
@ -6224,10 +6168,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/acvp/modu
#else
#error "FIPS build not supported on this architecture"
#endif
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate.go
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate.go
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate.go
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.go
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate.go
@@ -54,7 +54,8 @@ type stringWriter interface {
type processorType int
@ -6827,10 +6771,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
case "str", "bl", "ldr", "st1":
return aarch64
}
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate.peg
@@ -12,7 +12,7 @@
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
@ -6840,10 +6784,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
# https://github.com/pointlander/peg. delocate.go has a go:generate line for
# rebuilding delocate.peg.go from this file.
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/delocate_test.go
@@ -39,6 +39,11 @@ func (test *delocateTest) Path(file stri
var delocateTests = []delocateTest{
@ -6856,10 +6800,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
{"x86_64-Basic", []string{"in.s"}, "out.s"},
{"x86_64-BSS", []string{"in.s"}, "out.s"},
{"x86_64-GOTRewrite", []string{"in.s"}, "out.s"},
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/in.s
@@ -0,0 +1,9 @@
+ .text
+foo:
@ -6870,10 +6814,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+ .localentry foo,.-foo
+.LVL0:
+ bl
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-GlobalEntry/out.s
@@ -0,0 +1,62 @@
+.text
+.file 1 "inserted_by_delocate.c"
@ -6937,19 +6881,19 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff
+.byte 0x31
+.byte 0x80
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/in.s
@@ -0,0 +1,4 @@
+ .text
+foo:
+ addis 22,2,bar@toc@ha
+ ld 0,bar@toc@l(22)
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-LoadToR0/out.s
@@ -0,0 +1,72 @@
+.text
+.file 1 "inserted_by_delocate.c"
@ -7023,10 +6967,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff
+.byte 0x31
+.byte 0x80
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/in.s
@@ -0,0 +1,161 @@
+ .file "foo.c"
+ .abiversion 2
@ -7189,10 +7133,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+ .size exported_function,.-exported_function
+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
+ .section .note.GNU-stack,"",@progbits
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample/out.s
@@ -0,0 +1,552 @@
+.text
+.file 1 "inserted_by_delocate.c"
@ -7746,10 +7690,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff
+.byte 0x31
+.byte 0x80
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/in.s
@@ -0,0 +1,226 @@
+ .file "foo.c"
+ .abiversion 2
@ -7977,10 +7921,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+ .zero 20
+ .ident "GCC: (Ubuntu 4.9.2-10ubuntu13) 4.9.2"
+ .section .note.GNU-stack,"",@progbits
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-Sample2/out.s
@@ -0,0 +1,677 @@
+.text
+.file 1 "inserted_by_delocate.c"
@ -8659,10 +8603,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff
+.byte 0x31
+.byte 0x80
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/in.s
@@ -0,0 +1,23 @@
+ .text
+foo:
@ -8687,10 +8631,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+
+ addis 4, 2, 1+foo-2@toc@ha+3
+ addi 4, 4, 1+foo-2@toc@l+3
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
===================================================================
--- /dev/null
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/fipstools/delocate/testdata/ppc64le-TOCWithOffset/out.s
@@ -0,0 +1,178 @@
+.text
+.file 1 "inserted_by_delocate.c"
@ -8870,22 +8814,10 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/util/fipstools/delocate/
+.byte 0xff
+.byte 0x31
+.byte 0x80
Index: chromium-124.0.6367.60/third_party/boringssl/src/util/generate_build_files.py
Index: chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/util/generate_build_files.py
+++ chromium-124.0.6367.60/third_party/boringssl/src/util/generate_build_files.py
@@ -34,6 +34,7 @@ OS_ARCH_COMBOS = [
('apple', 'x86_64', 'macosx', [], 'S'),
('linux', 'arm', 'linux32', [], 'S'),
('linux', 'aarch64', 'linux64', [], 'S'),
+ ('linux', 'ppc64le', 'linux64le', [], 'S'),
('linux', 'x86', 'elf', ['-fPIC'], 'S'),
('linux', 'x86_64', 'elf', [], 'S'),
('win', 'x86', 'win32n', [], 'asm'),
Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
===================================================================
--- chromium-124.0.6367.60.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
+++ chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
+++ chromium-125.0.6422.41/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c
@@ -416,6 +416,10 @@ static void sha1_block_data_order(uint32
return;
}
@ -8897,3 +8829,99 @@ Index: chromium-124.0.6367.60/third_party/boringssl/src/crypto/fipsmodule/sha/sh
sha1_block_data_order_nohw(state, data, num);
}
Index: chromium-125.0.6422.41/third_party/boringssl/src/build.json
===================================================================
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/build.json
+++ chromium-125.0.6422.41/third_party/boringssl/src/build.json
@@ -118,6 +118,10 @@
{"src": "crypto/fipsmodule/sha/asm/sha512-armv4.pl"},
{"src": "crypto/fipsmodule/aes/asm/vpaes-armv7.pl"}
],
+ "perlasm_ppc64le": [
+ {"src": "crypto/fipsmodule/aes/asm/aesp8-ppc.pl"},
+ {"src": "crypto/fipsmodule/modes/asm/ghashp8-ppc.pl"}
+ ],
"perlasm_x86": [
{"src": "crypto/fipsmodule/aes/asm/aesni-x86.pl"},
{"src": "crypto/fipsmodule/bn/asm/bn-586.pl"},
@@ -221,6 +225,7 @@
"crypto/cpu_arm_freebsd.c",
"crypto/cpu_arm_linux.c",
"crypto/cpu_intel.c",
+ "crypto/cpu_ppc64le.c",
"crypto/crypto.c",
"crypto/curve25519/curve25519.c",
"crypto/curve25519/curve25519_64_adx.c",
@@ -765,6 +770,9 @@
"perlasm_arm": [
{"src": "crypto/test/asm/trampoline-armv4.pl"}
],
+ "perlasm_ppc64le": [
+ {"src": "crypto/test/asm/trampoline-ppc.pl"}
+ ],
"perlasm_x86": [
{"src": "crypto/test/asm/trampoline-x86.pl"}
],
Index: chromium-125.0.6422.41/third_party/boringssl/src/util/pregenerate/build.go
===================================================================
--- chromium-125.0.6422.41.orig/third_party/boringssl/src/util/pregenerate/build.go
+++ chromium-125.0.6422.41/third_party/boringssl/src/util/pregenerate/build.go
@@ -38,6 +38,7 @@ type InputTarget struct {
// architecture.
PerlasmAarch64 []PerlasmSource `json:"perlasm_aarch64,omitempty"`
PerlasmArm []PerlasmSource `json:"perlasm_arm,omitempty"`
+ PerlasmPPC64LE []PerlasmSource `json:"perlasm_ppc64le,omitempty"`
PerlasmX86 []PerlasmSource `json:"perlasm_x86,omitempty"`
PerlasmX86_64 []PerlasmSource `json:"perlasm_x86_64,omitempty"`
}
@@ -116,6 +117,9 @@ func (in *InputTarget) Pregenerate(name
for _, p := range in.PerlasmArm {
addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux32"})
}
+ for _, p := range in.PerlasmPPC64LE {
+ addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"linux64le"})
+ }
for _, p := range in.PerlasmX86 {
addPerlasmTask(&out.Asm, &p, "-apple.S", []string{"macosx", "-fPIC", "-DOPENSSL_IA32_SSE2"})
addPerlasmTask(&out.Asm, &p, "-linux.S", []string{"elf", "-fPIC", "-DOPENSSL_IA32_SSE2"})
Index: chromium-125.0.6422.41/third_party/boringssl/BUILD.generated.gni
===================================================================
--- chromium-125.0.6422.41.orig/third_party/boringssl/BUILD.generated.gni
+++ chromium-125.0.6422.41/third_party/boringssl/BUILD.generated.gni
@@ -93,6 +93,7 @@ crypto_sources = [
"src/crypto/cpu_arm_linux.c",
"src/crypto/cpu_arm_linux.h",
"src/crypto/cpu_intel.c",
+ "src/crypto/cpu_ppc64le.c",
"src/crypto/crypto.c",
"src/crypto/curve25519/curve25519.c",
"src/crypto/curve25519/curve25519_64_adx.c",
@@ -334,6 +335,7 @@ crypto_sources_asm = [
"src/gen/bcm/aesv8-gcm-armv8-apple.S",
"src/gen/bcm/aesv8-gcm-armv8-linux.S",
"src/gen/bcm/aesv8-gcm-armv8-win.S",
+ "src/gen/bcm/aesp8-ppc-linux.S",
"src/gen/bcm/armv4-mont-linux.S",
"src/gen/bcm/armv8-mont-apple.S",
"src/gen/bcm/armv8-mont-linux.S",
@@ -350,6 +352,7 @@ crypto_sources_asm = [
"src/gen/bcm/ghash-neon-armv8-apple.S",
"src/gen/bcm/ghash-neon-armv8-linux.S",
"src/gen/bcm/ghash-neon-armv8-win.S",
+ "src/gen/bcm/ghashp8-ppc-linux.S",
"src/gen/bcm/ghash-ssse3-x86-apple.S",
"src/gen/bcm/ghash-ssse3-x86-linux.S",
"src/gen/bcm/ghash-ssse3-x86_64-apple.S",
Index: chromium-125.0.6422.41/third_party/boringssl/README.ppc64le
===================================================================
--- /dev/null
+++ chromium-125.0.6422.41/third_party/boringssl/README.ppc64le
@@ -0,0 +1,8 @@
+==============================================================
+To recreate boringssl pregenerated files patch for ppc64le:
+
+cd third_party/boringssl/src
+cp -Rp gen gen.orig
+go run ./util/pregenerate
+cd ../../../../
+diff -urN chromium-*/third_party/boringssl/src/gen.orig chromium-*/third_party/boringssl/src/gen

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,13 +1,13 @@
Index: chromium-120.0.6099.71/third_party/skia/src/core/SkRasterPipeline.h
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkRasterPipeline.h
===================================================================
--- chromium-120.0.6099.71.orig/third_party/skia/src/core/SkRasterPipeline.h
+++ chromium-120.0.6099.71/third_party/skia/src/core/SkRasterPipeline.h
@@ -24,7 +24,7 @@ enum SkColorType : int;
struct SkImageInfo;
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkRasterPipeline.h
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkRasterPipeline.h
@@ -27,7 +27,7 @@ struct SkImageInfo;
struct skcms_TransferFunction;
-#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32)
+#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && !defined(__powerpc64__)
#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \
- !defined(SK_CPU_LOONGARCH)
+ !defined(SK_CPU_LOONGARCH) && !defined(__powerpc64__)
#define SK_HAS_MUSTTAIL 1
#else
#define SK_HAS_MUSTTAIL 0

@ -1,38 +0,0 @@
diff -up chromium-116.0.5845.50/net/filter/brotli_source_stream.cc.system-brotli chromium-116.0.5845.50/net/filter/brotli_source_stream.cc
--- chromium-116.0.5845.50/net/filter/brotli_source_stream.cc.system-brotli 2023-07-30 13:06:06.284705823 +0200
+++ chromium-116.0.5845.50/net/filter/brotli_source_stream.cc 2023-07-30 13:08:43.398218141 +0200
@@ -12,8 +12,8 @@
#include "base/memory/raw_ptr.h"
#include "base/metrics/histogram_macros.h"
#include "net/base/io_buffer.h"
-#include "third_party/brotli/include/brotli/decode.h"
-#include "third_party/brotli/include/brotli/shared_dictionary.h"
+#include <brotli/decode.h>
+#include <brotli/shared_dictionary.h>
namespace net {
diff -up chromium-116.0.5845.50/net/ssl/cert_compression.cc.system-brotli chromium-116.0.5845.50/net/ssl/cert_compression.cc
--- chromium-116.0.5845.50/net/ssl/cert_compression.cc.system-brotli 2023-07-26 17:43:01.000000000 +0200
+++ chromium-116.0.5845.50/net/ssl/cert_compression.cc 2023-07-30 13:06:06.284705823 +0200
@@ -9,7 +9,7 @@
#include "third_party/boringssl/src/include/openssl/ssl.h"
#if !defined(NET_DISABLE_BROTLI)
-#include "third_party/brotli/include/brotli/decode.h"
+#include <brotli/decode.h>
#endif
namespace net {
diff -up chromium-116.0.5845.50/ui/base/resource/resource_bundle.cc.system-brotli chromium-116.0.5845.50/ui/base/resource/resource_bundle.cc
--- chromium-116.0.5845.50/ui/base/resource/resource_bundle.cc.system-brotli 2023-07-26 17:43:23.000000000 +0200
+++ chromium-116.0.5845.50/ui/base/resource/resource_bundle.cc 2023-07-30 13:06:06.284705823 +0200
@@ -32,7 +32,7 @@
#include "net/filter/gzip_header.h"
#include "skia/ext/image_operations.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
-#include "third_party/brotli/include/brotli/decode.h"
+#include <brotli/decode.h>
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkColor.h"
#include "third_party/zlib/google/compression_utils.h"

@ -1,171 +0,0 @@
commit ce71348a09f6689dd01a68db64b172191d0182d8
Author: Andrey Kosyakov <caseq@chromium.org>
Date: Thu Dec 21 18:38:38 2023 +0000
[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}
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 1e5a0790df6da..a5c28b37e9454 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 5011503dcf1c0..f085b6e905161 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);

@ -1,12 +0,0 @@
diff -up chromium-122.0.6261.29/media/base/media_switches.cc.disable-FFmpegAllowLists chromium-122.0.6261.29/media/base/media_switches.cc
--- chromium-122.0.6261.29/media/base/media_switches.cc.disable-FFmpegAllowLists 2024-02-12 15:56:50.703196471 +0100
+++ chromium-122.0.6261.29/media/base/media_switches.cc 2024-02-12 17:08:42.266076401 +0100
@@ -1687,7 +1687,7 @@ BASE_FEATURE(kUseWindowBoundsForPip,
// Enables FFmpeg allow lists for supported codecs / containers.
BASE_FEATURE(kFFmpegAllowLists,
"FFmpegAllowLists",
- base::FEATURE_ENABLED_BY_DEFAULT);
+ base::FEATURE_DISABLED_BY_DEFAULT);
// Enables sending MediaLog to the log stream, which is useful for easier
// development by ensuring logs can be seen without a remote desktop session.

@ -1,169 +0,0 @@
diff -up chromium-122.0.6261.29/base/check_op.h.missing-header-files chromium-122.0.6261.29/base/check_op.h
--- chromium-122.0.6261.29/base/check_op.h.missing-header-files 2024-02-07 19:49:20.000000000 +0100
+++ chromium-122.0.6261.29/base/check_op.h 2024-02-12 14:59:48.136415060 +0100
@@ -5,6 +5,7 @@
#ifndef BASE_CHECK_OP_H_
#define BASE_CHECK_OP_H_
+#include <cstdint>
#include <cstddef>
#include <string>
#include <string_view>
diff -up chromium-122.0.6261.29/base/containers/flat_map.h.missing-header-files chromium-122.0.6261.29/base/containers/flat_map.h
--- chromium-122.0.6261.29/base/containers/flat_map.h.missing-header-files 2024-02-07 19:49:20.000000000 +0100
+++ chromium-122.0.6261.29/base/containers/flat_map.h 2024-02-12 14:59:48.136415060 +0100
@@ -5,6 +5,7 @@
#ifndef BASE_CONTAINERS_FLAT_MAP_H_
#define BASE_CONTAINERS_FLAT_MAP_H_
+#include <cstdint>
#include <functional>
#include <tuple>
#include <type_traits>
diff -up chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h
--- chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h.missing-header-files 2024-02-12 14:59:48.137415079 +0100
+++ chromium-122.0.6261.29/chrome/browser/webauthn/authenticator_request_dialog_model.h 2024-02-12 15:28:17.168395787 +0100
@@ -9,6 +9,7 @@
#include <optional>
#include <string>
#include <vector>
+#include <variant>
#include "base/containers/span.h"
#include "base/functional/callback_forward.h"
diff -up chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc
--- chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc.missing-header-files 2024-02-07 19:49:27.000000000 +0100
+++ chromium-122.0.6261.29/chrome/test/chromedriver/chrome/web_view_impl.cc 2024-02-12 14:59:48.137415079 +0100
@@ -11,6 +11,7 @@
#include <queue>
#include <utility>
#include <vector>
+#include <cstring>
#include "base/check.h"
#include "base/files/file_path.h"
diff -up chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h
--- chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h.missing-header-files 2024-02-07 19:49:30.000000000 +0100
+++ chromium-122.0.6261.29/components/feature_engagement/internal/never_event_storage_validator.h 2024-02-12 14:59:48.138415097 +0100
@@ -5,6 +5,7 @@
#ifndef COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
#define COMPONENTS_FEATURE_ENGAGEMENT_INTERNAL_NEVER_EVENT_STORAGE_VALIDATOR_H_
+#include <cstdint>
#include <string>
#include "components/feature_engagement/internal/event_storage_validator.h"
diff -up chromium-122.0.6261.29/gin/time_clamper.h.missing-header-files chromium-122.0.6261.29/gin/time_clamper.h
--- chromium-122.0.6261.29/gin/time_clamper.h.missing-header-files 2024-02-07 19:49:35.000000000 +0100
+++ chromium-122.0.6261.29/gin/time_clamper.h 2024-02-12 14:59:48.138415097 +0100
@@ -48,7 +48,7 @@ class GIN_EXPORT TimeClamper {
const int64_t micros = now_micros % 1000;
// abs() is necessary for devices with times before unix-epoch (most likely
// configured incorrectly).
- if (abs(micros) + kResolutionMicros < 1000) {
+ if (std::abs(micros) + kResolutionMicros < 1000) {
return now_micros / 1000;
}
return ClampTimeResolution(now_micros) / 1000;
diff -up chromium-122.0.6261.29/net/base/net_export.h.missing-header-files chromium-122.0.6261.29/net/base/net_export.h
--- chromium-122.0.6261.29/net/base/net_export.h.missing-header-files 2024-02-07 19:49:38.000000000 +0100
+++ chromium-122.0.6261.29/net/base/net_export.h 2024-02-12 14:59:48.139415116 +0100
@@ -5,6 +5,8 @@
#ifndef NET_BASE_NET_EXPORT_H_
#define NET_BASE_NET_EXPORT_H_
+#include <cstdint>
+
// Defines NET_EXPORT so that functionality implemented by the net module can
// be exported to consumers, and NET_EXPORT_PRIVATE that allows unit tests to
// access features not intended to be used directly by real consumers.
diff -up chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h
--- chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h.missing-header-files 2024-02-07 19:49:40.000000000 +0100
+++ chromium-122.0.6261.29/third_party/abseil-cpp/absl/strings/string_view.h 2024-02-12 14:59:48.142415172 +0100
@@ -27,6 +27,7 @@
#ifndef ABSL_STRINGS_STRING_VIEW_H_
#define ABSL_STRINGS_STRING_VIEW_H_
+#include <cstdint>
#include <algorithm>
#include <cassert>
#include <cstddef>
diff -up chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h
--- chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h.missing-header-files 2024-02-07 19:50:44.000000000 +0100
+++ chromium-122.0.6261.29/third_party/dawn/src/tint/lang/spirv/reader/ast_parser/namer.h 2024-02-12 14:59:48.142415172 +0100
@@ -28,6 +28,7 @@
#ifndef SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
#define SRC_TINT_LANG_SPIRV_READER_AST_PARSER_NAMER_H_
+#include <cstdint>
#include <string>
#include <unordered_map>
#include <vector>
diff -up chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc
--- chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc.missing-header-files 2024-02-07 19:54:45.000000000 +0100
+++ chromium-122.0.6261.29/third_party/swiftshader/third_party/llvm-10.0/llvm/lib/Support/Unix/Signals.inc 2024-02-12 14:59:48.143415190 +0100
@@ -45,6 +45,7 @@
#include "llvm/Support/SaveAndRestore.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
+#include <cstdint>
#include <string>
#include <sysexits.h>
#ifdef HAVE_BACKTRACE
diff -up chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h
--- chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h.missing-header-files 2024-02-07 19:53:17.000000000 +0100
+++ chromium-122.0.6261.29/third_party/tflite/src/tensorflow/lite/kernels/internal/spectrogram.h 2024-02-12 14:59:48.143415190 +0100
@@ -31,6 +31,7 @@ limitations under the License.
#ifndef TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
#define TENSORFLOW_LITE_KERNELS_INTERNAL_SPECTROGRAM_H_
+#include <cstdint>
#include <complex>
#include <deque>
#include <vector>
diff -up chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h
--- chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h.missing-header-files 2024-02-07 19:54:20.000000000 +0100
+++ chromium-122.0.6261.29/third_party/vulkan-deps/vulkan-validation-layers/src/layers/external/vma/vk_mem_alloc.h 2024-02-12 14:59:48.145415228 +0100
@@ -2884,6 +2884,7 @@ static void vma_aligned_free(void* VMA_N
// Define this macro to 1 to enable functions: vmaBuildStatsString, vmaFreeStatsString.
#if VMA_STATS_STRING_ENABLED
+#include <stdio.h>
static inline void VmaUint32ToStr(char* VMA_NOT_NULL outStr, size_t strLen, uint32_t num)
{
snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
diff -up chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc
--- chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc.missing-header-files 2024-02-07 19:53:17.000000000 +0100
+++ chromium-122.0.6261.29/third_party/webrtc/audio/utility/channel_mixer.cc 2024-02-12 14:59:48.145415228 +0100
@@ -8,6 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <cstring>
+
#include "audio/utility/channel_mixer.h"
#include "audio/utility/channel_mixing_matrix.h"
diff -up chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h
--- chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h.missing-header-files 2024-02-07 19:53:17.000000000 +0100
+++ chromium-122.0.6261.29/third_party/webrtc/modules/include/module_common_types_public.h 2024-02-12 14:59:48.145415228 +0100
@@ -11,6 +11,7 @@
#ifndef MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
#define MODULES_INCLUDE_MODULE_COMMON_TYPES_PUBLIC_H_
+#include <cstdint>
#include <limits>
#include "absl/types/optional.h"
diff -up chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h.missing-header-files chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h
--- chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h.missing-header-files 2024-02-07 19:50:05.000000000 +0100
+++ chromium-122.0.6261.29/ui/gfx/linux/drm_util_linux.h 2024-02-12 14:59:48.147415265 +0100
@@ -9,6 +9,8 @@
#include "ui/gfx/buffer_types.h"
+#include <cstdint>
+
namespace ui {
int GetFourCCFormatFromBufferFormat(gfx::BufferFormat format);

@ -1,733 +0,0 @@
commit 940af9f2c87b436559b97c53763aa9eaaf1254eb
Author: Jeremy Roman <jbroman@chromium.org>
Date: Wed Nov 15 16:24:54 2023 +0000
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}
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 7fc91d14acc71..1e5a0790df6da 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 508ea6d8eea48..18de71d84023f 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 899929dcf49f9..5011503dcf1c0 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
@@ -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;

@ -34,3 +34,15 @@ diff -up chromium-123.0.6312.46/third_party/pdfium/core/fpdfdoc/cpdf_defaultappe
CPDF_DefaultAppearance::CPDF_DefaultAppearance(const ByteString& csDA)
: m_csDA(csDA) {}
diff -up chromium-124.0.6367.201/components/manta/base_provider.cc.me chromium-124.0.6367.201/components/manta/base_provider.cc
--- chromium-124.0.6367.201/components/manta/base_provider.cc.me 2024-05-11 21:32:47.108964074 +0200
+++ chromium-124.0.6367.201/components/manta/base_provider.cc 2024-05-11 21:34:42.758918367 +0200
@@ -13,7 +13,7 @@ constexpr base::TimeDelta kTimeout = bas
} // namespace
-BaseProvider::BaseProvider() = default;
+BaseProvider::BaseProvider() {}
BaseProvider::BaseProvider(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
signin::IdentityManager* identity_manager)

@ -1,18 +0,0 @@
diff -up chromium-124.0.6367.118/third_party/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp.me chromium-124.0.6367.118/third_party/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
--- chromium-124.0.6367.118/third_party/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp.me 2024-05-05 17:29:38.907559210 +0200
+++ chromium-124.0.6367.118/third_party/angle/src/libANGLE/renderer/vulkan/FramebufferVk.cpp 2024-05-05 17:51:26.665080742 +0200
@@ -1726,10 +1726,10 @@ angle::Result FramebufferVk::generateFra
for (uint32_t point = 0; point < activeFocalPoints.size(); point++)
{
float density =
- 1.0f / std::max(std::powf(activeFocalPoints[point].focalX - px, 2) *
- std::powf(activeFocalPoints[point].gainX, 2) +
- std::powf(activeFocalPoints[point].focalY - py, 2) *
- std::powf(activeFocalPoints[point].gainY, 2) -
+ 1.0f / std::max(powf(activeFocalPoints[point].focalX - px, 2) *
+ powf(activeFocalPoints[point].gainX, 2) +
+ powf(activeFocalPoints[point].focalY - py, 2) *
+ powf(activeFocalPoints[point].gainY, 2) -
activeFocalPoints[point].foveaArea,
1.0f);

@ -0,0 +1,12 @@
diff -up chromium-125.0.6422.41/media/base/media_switches.cc.disable-FFmpegAllowLists chromium-125.0.6422.41/media/base/media_switches.cc
--- chromium-125.0.6422.41/media/base/media_switches.cc.disable-FFmpegAllowLists 2024-05-12 21:28:43.694027396 +0200
+++ chromium-125.0.6422.41/media/base/media_switches.cc 2024-05-12 21:32:48.155063623 +0200
@@ -1753,7 +1753,7 @@ BASE_FEATURE(kUseWindowBoundsForPip,
// Enables FFmpeg allow lists for supported codecs / containers.
BASE_FEATURE(kFFmpegAllowLists,
"FFmpegAllowLists",
- base::FEATURE_ENABLED_BY_DEFAULT);
+ base::FEATURE_DISABLED_BY_DEFAULT);
#if BUILDFLAG(IS_WIN)
// Enables audio offload when supported by endpoints.

@ -0,0 +1,739 @@
revert as workaround for compiler error with old clang < 17
commit 940af9f2c87b436559b97c53763aa9eaaf1254eb
Author: Jeremy Roman <jbroman@chromium.org>
Date: Wed Nov 15 16:24:54 2023 +0000
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}
--- 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,7 +5,6 @@
#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"
@@ -31,7 +30,7 @@ class ExceptionState;
// return toInt32(isolate, value, exceptionState, NormalConversion);
// }
// }
-template <typename T>
+template <typename T, typename SFINAEHelper = void>
struct NativeValueTraits;
// This declaration serves only as a blueprint for specializations: the
@@ -46,15 +45,22 @@ struct NativeValueTraits;
namespace bindings {
+template <typename T, typename = void>
+struct NativeValueTraitsHasIsNull : std::false_type {};
+
template <typename T>
-struct ImplTypeFor {
- using type = T;
-};
+struct NativeValueTraitsHasIsNull<
+ T,
+ std::void_t<decltype(std::declval<T>().IsNull())>> : std::true_type {};
template <typename T>
- requires std::derived_from<T, IDLBase>
-struct ImplTypeFor<T> {
- using type = typename T::ImplType;
+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;
};
} // namespace bindings
@@ -72,17 +78,37 @@ struct ImplTypeFor<T> {
// 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>
+template <typename T, typename SFINAEHelper = void>
struct NativeValueTraitsBase {
STATIC_ONLY(NativeValueTraitsBase);
- using ImplType = bindings::ImplTypeFor<T>::type;
+ 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>> {
+ STATIC_ONLY(NativeValueTraitsBase);
+
+ using ImplType = typename T::ImplType;
- // Pointer types have nullptr as IDL null value.
- // ScriptValue, String, and union types have IsNull member function.
static constexpr bool has_null_value =
- std::is_pointer_v<ImplType> ||
- requires(ImplType value) { value.IsNull(); };
+ bindings::NativeValueTraitsHasNullValue<ImplType>::value;
// This should only be true for certain subclasses of ScriptWrappable
// that satisfy the assumptions of CreateIDLSequenceFromV8ArraySlow() with
--- 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,7 +7,6 @@
#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,11 +697,12 @@ DOMArrayBufferBase* NativeValueTraits<
// ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-NotShared<T> NativeValueTraits<NotShared<T>>::NativeValue(
- v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return NativeValueImpl<
RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
@@ -711,12 +711,13 @@ NotShared<T> NativeValueTraits<NotShared
}
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<
RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
@@ -727,11 +728,12 @@ NotShared<T> NativeValueTraits<NotShared
// [AllowShared] ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-MaybeShared<T> NativeValueTraits<MaybeShared<T>>::NativeValue(
- v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
@@ -740,12 +742,13 @@ MaybeShared<T> NativeValueTraits<MaybeSh
}
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
@@ -756,12 +759,12 @@ MaybeShared<T> NativeValueTraits<MaybeSh
// [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-MaybeShared<T>
-NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>::NativeValue(
- v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return NativeValueImpl<
RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
@@ -770,12 +773,13 @@ NativeValueTraits<IDLBufferSourceTypeNoS
}
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<
RecipeTrait<MaybeShared<T>>, ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNotNullable, BufferSizeCheck::kDoNotCheck,
@@ -786,11 +790,12 @@ MaybeShared<T> NativeValueTraits<IDLBuff
// Nullable ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-NotShared<T> NativeValueTraits<IDLNullable<NotShared<T>>>::NativeValue(
- v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return NativeValueImpl<
RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
Nullablity::kIsNullable, BufferSizeCheck::kCheck,
@@ -799,12 +804,13 @@ NotShared<T> NativeValueTraits<IDLNullab
}
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<
RecipeTrait<NotShared<T>>, ToDOMViewType<T, kNotShared>,
Nullablity::kIsNullable, BufferSizeCheck::kCheck,
@@ -815,11 +821,12 @@ NotShared<T> NativeValueTraits<IDLNullab
// Nullable [AllowShared] ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-MaybeShared<T> NativeValueTraits<IDLNullable<MaybeShared<T>>>::NativeValue(
- v8::Isolate* isolate,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return NativeValueImpl<RecipeTrait<MaybeShared<T>>,
ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNullable, BufferSizeCheck::kCheck,
@@ -828,12 +835,13 @@ MaybeShared<T> NativeValueTraits<IDLNull
}
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<RecipeTrait<MaybeShared<T>>,
ToDOMViewType<T, kMaybeShared>,
Nullablity::kIsNullable, BufferSizeCheck::kCheck,
@@ -844,9 +852,9 @@ MaybeShared<T> NativeValueTraits<IDLNull
// Nullable [AllowShared, BufferSourceTypeNoSizeLimit] ArrayBufferView
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-MaybeShared<T>
-NativeValueTraits<IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>::
+MaybeShared<T> NativeValueTraits<
+ IDLNullable<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,
@@ -861,11 +869,13 @@ NativeValueTraits<IDLNullable<IDLBufferS
// [AllowShared, FlexibleArrayBufferView] ArrayBufferView
template <typename T>
- requires std::derived_from<T, FlexibleArrayBufferView>
-T NativeValueTraits<T>::ArgumentValue(v8::Isolate* isolate,
- int argument_index,
- v8::Local<v8::Value> value,
- ExceptionState& exception_state) {
+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) {
return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
Nullablity::kIsNotNullable, BufferSizeCheck::kCheck,
ResizableAllowance::kDisallowResizable,
@@ -877,12 +887,13 @@ T NativeValueTraits<T>::ArgumentValue(v8
// ArrayBufferView
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<
RecipeTrait<T>, ToFlexibleArrayBufferView, Nullablity::kIsNotNullable,
BufferSizeCheck::kDoNotCheck, ResizableAllowance::kDisallowResizable,
@@ -893,12 +904,13 @@ T NativeValueTraits<IDLBufferSourceTypeN
// Nullable [AllowShared, FlexibleArrayBufferView] ArrayBufferView
template <typename T>
- 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) {
+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) {
return ArgumentValueImpl<RecipeTrait<T>, ToFlexibleArrayBufferView,
Nullablity::kIsNullable, BufferSizeCheck::kCheck,
ResizableAllowance::kDisallowResizable,
--- 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,9 +5,7 @@
#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 <optional>
-#include <type_traits>
#include "third_party/blink/renderer/bindings/core/v8/idl_types.h"
#include "third_party/blink/renderer/bindings/core/v8/native_value_traits.h"
@@ -718,8 +716,9 @@ struct CORE_EXPORT NativeValueTraits<
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<T> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
// NotShared<T> or MaybeShared<T> should be used instead.
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -731,8 +730,9 @@ struct NativeValueTraits<T> {
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<IDLNullable<T>> {
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>> {
// NotShared<T> or MaybeShared<T> should be used instead.
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -744,8 +744,9 @@ struct NativeValueTraits<IDLNullable<T>>
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<NotShared<T>>
+struct NativeValueTraits<
+ NotShared<T>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<NotShared<T>> {
static NotShared<T> NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -758,8 +759,9 @@ struct NativeValueTraits<NotShared<T>>
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<IDLNullable<NotShared<T>>>
+struct NativeValueTraits<
+ IDLNullable<NotShared<T>>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<NotShared<T>> {
static NotShared<T> NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -772,8 +774,9 @@ struct NativeValueTraits<IDLNullable<Not
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<MaybeShared<T>>
+struct NativeValueTraits<
+ MaybeShared<T>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<MaybeShared<T>> {
static MaybeShared<T> NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -786,8 +789,9 @@ struct NativeValueTraits<MaybeShared<T>>
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>
+struct NativeValueTraits<
+ IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<MaybeShared<T>> {
// FlexibleArrayBufferView uses this in its implementation, so we cannot
// delete it.
@@ -802,8 +806,9 @@ struct NativeValueTraits<IDLBufferSource
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
-struct NativeValueTraits<IDLNullable<MaybeShared<T>>>
+struct NativeValueTraits<
+ IDLNullable<MaybeShared<T>>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<MaybeShared<T>> {
static MaybeShared<T> NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -816,9 +821,9 @@ struct NativeValueTraits<IDLNullable<May
};
template <typename T>
- requires std::derived_from<T, DOMArrayBufferView>
struct NativeValueTraits<
- IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>>
+ IDLNullable<IDLBufferSourceTypeNoSizeLimit<MaybeShared<T>>>,
+ typename std::enable_if_t<std::is_base_of<DOMArrayBufferView, T>::value>>
: public NativeValueTraitsBase<MaybeShared<T>> {
// BufferSourceTypeNoSizeLimit must be used only as arguments.
static MaybeShared<T> NativeValue(v8::Isolate* isolate,
@@ -832,8 +837,11 @@ struct NativeValueTraits<
};
template <typename T>
- requires std::derived_from<T, FlexibleArrayBufferView>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<
+ std::is_base_of<FlexibleArrayBufferView, T>::value>>
+ : public NativeValueTraitsBase<T> {
// FlexibleArrayBufferView must be used only as arguments.
static T NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -846,8 +854,10 @@ struct NativeValueTraits<T> : public Nat
};
template <typename T>
- requires std::derived_from<T, FlexibleArrayBufferView>
-struct NativeValueTraits<IDLBufferSourceTypeNoSizeLimit<T>>
+struct NativeValueTraits<
+ IDLBufferSourceTypeNoSizeLimit<T>,
+ typename std::enable_if_t<
+ std::is_base_of<FlexibleArrayBufferView, T>::value>>
: public NativeValueTraitsBase<T> {
// BufferSourceTypeNoSizeLimit and FlexibleArrayBufferView must be used only
// as arguments.
@@ -862,8 +872,11 @@ struct NativeValueTraits<IDLBufferSource
};
template <typename T>
- requires std::derived_from<T, FlexibleArrayBufferView>
-struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T> {
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<
+ std::is_base_of<FlexibleArrayBufferView, T>::value>>
+ : public NativeValueTraitsBase<T> {
// FlexibleArrayBufferView must be used only as arguments.
static T NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -1199,8 +1212,9 @@ NativeValueTraits<IDLSequence<T>>::Nativ
}
template <typename T>
- requires NativeValueTraits<IDLSequence<T>>::has_null_value
-struct NativeValueTraits<IDLNullable<IDLSequence<T>>>
+struct NativeValueTraits<IDLNullable<IDLSequence<T>>,
+ typename std::enable_if_t<
+ NativeValueTraits<IDLSequence<T>>::has_null_value>>
: public NativeValueTraitsBase<HeapVector<AddMemberIfNeeded<T>>*> {
using ImplType = typename NativeValueTraits<IDLSequence<T>>::ImplType*;
@@ -1276,8 +1290,9 @@ struct NativeValueTraits<IDLArray<T>>
: public NativeValueTraits<IDLSequence<T>> {};
template <typename T>
- requires NativeValueTraits<IDLSequence<T>>::has_null_value
-struct NativeValueTraits<IDLNullable<IDLArray<T>>>
+struct NativeValueTraits<IDLNullable<IDLArray<T>>,
+ typename std::enable_if_t<
+ NativeValueTraits<IDLSequence<T>>::has_null_value>>
: public NativeValueTraits<IDLNullable<IDLSequence<T>>> {};
// Record types
@@ -1407,8 +1422,10 @@ struct NativeValueTraits<IDLRecord<K, V>
// Callback function types
template <typename T>
- requires std::derived_from<T, CallbackFunctionBase>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
+ : public NativeValueTraitsBase<T*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1431,8 +1448,9 @@ struct NativeValueTraits<T> : public Nat
};
template <typename T>
- requires std::derived_from<T, CallbackFunctionBase>
-struct NativeValueTraits<IDLNullable<T>>
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<std::is_base_of<CallbackFunctionBase, T>::value>>
: public NativeValueTraitsBase<IDLNullable<T>> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -1461,8 +1479,10 @@ struct NativeValueTraits<IDLNullable<T>>
// Callback interface types
template <typename T>
- requires std::derived_from<T, CallbackInterfaceBase>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
+ : public NativeValueTraitsBase<T*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1486,8 +1506,9 @@ struct NativeValueTraits<T> : public Nat
// Interface types
template <typename T>
- requires std::derived_from<T, CallbackInterfaceBase>
-struct NativeValueTraits<IDLNullable<T>>
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<std::is_base_of<CallbackInterfaceBase, T>::value>>
: public NativeValueTraitsBase<IDLNullable<T>> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -1516,8 +1537,11 @@ struct NativeValueTraits<IDLNullable<T>>
// Dictionary types
template <typename T>
- requires std::derived_from<T, bindings::DictionaryBase>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<
+ std::is_base_of<bindings::DictionaryBase, T>::value>>
+ : public NativeValueTraitsBase<T*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1528,11 +1552,14 @@ struct NativeValueTraits<T> : public Nat
// We don't support nullable dictionary types in general since it's quite
// confusing and often misused.
template <typename 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*> {
+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*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1544,8 +1571,11 @@ struct NativeValueTraits<IDLNullable<T>>
// Enumeration types
template <typename T>
- requires std::derived_from<T, bindings::EnumerationBase>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<
+ std::is_base_of<bindings::EnumerationBase, T>::value>>
+ : public NativeValueTraitsBase<T> {
static T NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1555,8 +1585,10 @@ struct NativeValueTraits<T> : public Nat
// Interface types
template <typename T>
- requires std::derived_from<T, ScriptWrappable>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
+ : public NativeValueTraitsBase<T*> {
// This signifies that CreateIDLSequenceFromV8ArraySlow() may apply
// certain optimization based on assumptions about `NativeValue()`
// implementation below. For subclasses of ScriptWrappable that have
@@ -1593,8 +1625,9 @@ struct NativeValueTraits<T> : public Nat
};
template <typename T>
- requires std::derived_from<T, ScriptWrappable>
-struct NativeValueTraits<IDLNullable<T>>
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
: public NativeValueTraitsBase<IDLNullable<T>> {
static inline T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
@@ -1629,8 +1662,10 @@ struct NativeValueTraits<IDLNullable<T>>
};
template <typename T>
- requires std::derived_from<T, bindings::UnionBase>
-struct NativeValueTraits<T> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ T,
+ typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
+ : public NativeValueTraitsBase<T*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1646,8 +1681,10 @@ struct NativeValueTraits<T> : public Nat
};
template <typename T>
- requires std::derived_from<T, bindings::UnionBase>
-struct NativeValueTraits<IDLNullable<T>> : public NativeValueTraitsBase<T*> {
+struct NativeValueTraits<
+ IDLNullable<T>,
+ typename std::enable_if_t<std::is_base_of<bindings::UnionBase, T>::value>>
+ : public NativeValueTraitsBase<T*> {
static T* NativeValue(v8::Isolate* isolate,
v8::Local<v8::Value> value,
ExceptionState& exception_state) {
@@ -1668,8 +1705,9 @@ struct NativeValueTraits<IDLNullable<T>>
// Nullable types
template <typename InnerType>
- requires(!NativeValueTraits<InnerType>::has_null_value)
-struct NativeValueTraits<IDLNullable<InnerType>>
+struct NativeValueTraits<
+ IDLNullable<InnerType>,
+ typename std::enable_if_t<!NativeValueTraits<InnerType>::has_null_value>>
: public NativeValueTraitsBase<IDLNullable<InnerType>> {
// https://webidl.spec.whatwg.org/#es-nullable-type
using ImplType =
@@ -1701,8 +1739,9 @@ struct NativeValueTraits<IDLNullable<IDL
// Optional types
template <typename T>
- requires std::is_arithmetic_v<typename NativeValueTraits<T>::ImplType>
-struct NativeValueTraits<IDLOptional<T>>
+struct NativeValueTraits<IDLOptional<T>,
+ typename std::enable_if_t<std::is_arithmetic<
+ typename NativeValueTraits<T>::ImplType>::value>>
: public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
using ImplType = typename NativeValueTraits<T>::ImplType;
@@ -1724,8 +1763,9 @@ struct NativeValueTraits<IDLOptional<T>>
};
template <typename T>
- requires std::is_pointer_v<typename NativeValueTraits<T>::ImplType>
-struct NativeValueTraits<IDLOptional<T>>
+struct NativeValueTraits<IDLOptional<T>,
+ typename std::enable_if_t<std::is_pointer<
+ typename NativeValueTraits<T>::ImplType>::value>>
: public NativeValueTraitsBase<typename NativeValueTraits<T>::ImplType> {
using ImplType = typename NativeValueTraits<T>::ImplType;

@ -0,0 +1,144 @@
revert as workaround for compiler error with old clang < 17
commit ce71348a09f6689dd01a68db64b172191d0182d8
Author: Andrey Kosyakov <caseq@chromium.org>
Date: Thu Dec 21 18:38:38 2023 +0000
[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}
--- a/third_party/blink/renderer/bindings/core/v8/native_value_traits.h 2024-05-13 20:23:41.165774029 +0200
+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits.h 2024-05-13 20:27:58.994663485 +0200
@@ -110,12 +110,6 @@ struct NativeValueTraitsBase<
static constexpr bool has_null_value =
bindings::NativeValueTraitsHasNullValue<ImplType>::value;
- // 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,
--- a/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h 2024-05-13 20:23:47.295915837 +0200
+++ b/third_party/blink/renderer/bindings/core/v8/native_value_traits_impl.h 2024-05-13 20:27:21.649808564 +0200
@@ -1050,87 +1050,11 @@ CreateIDLSequenceFromV8ArraySlow(v8::Iso
return {};
}
- using ResultType = typename NativeValueTraits<IDLSequence<T>>::ImplType;
- ResultType result;
+ typename NativeValueTraits<IDLSequence<T>>::ImplType 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);
- v8::Isolate* isolate = callback_data->isolate;
- // 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(isolate, 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(
- 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;
@@ -1590,12 +1514,6 @@ struct NativeValueTraits<
T,
typename std::enable_if_t<std::is_base_of<ScriptWrappable, T>::value>>
: 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,

@ -0,0 +1,105 @@
commit 62274859104bd828373ae406aa9309e610449ac5
Author: Ted Meyer <tmathmeyer@chromium.org>
Date: Fri Mar 22 19:56:55 2024 +0000
Replace deprecated use of AVCodecContext::reordered_opaque
We can use the AV_CODEC_FLAG_COPY_OPAQUE flag on the codec context
now to trigger timestamp propagation.
Bug: 330573128
Change-Id: I6bc57241a35ab5283742aad8d42acb4dc5e85858
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5384308
Commit-Queue: Ted (Chromium) Meyer <tmathmeyer@chromium.org>
Reviewed-by: Dan Sanders <sandersd@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1277051}
diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
index bd75477feeabb..8a658a58caac5 100644
--- a/media/filters/ffmpeg_video_decoder.cc
+++ b/media/filters/ffmpeg_video_decoder.cc
@@ -134,7 +134,7 @@ bool FFmpegVideoDecoder::IsCodecSupported(VideoCodec codec) {
}
FFmpegVideoDecoder::FFmpegVideoDecoder(MediaLog* media_log)
- : media_log_(media_log) {
+ : media_log_(media_log), timestamp_map_(128) {
DVLOG(1) << __func__;
DETACH_FROM_SEQUENCE(sequence_checker_);
}
@@ -363,8 +363,10 @@ bool FFmpegVideoDecoder::FFmpegDecode(const DecoderBuffer& buffer) {
DCHECK(packet->data);
DCHECK_GT(packet->size, 0);
- // Let FFmpeg handle presentation timestamp reordering.
- codec_context_->reordered_opaque = buffer.timestamp().InMicroseconds();
+ const int64_t timestamp = buffer.timestamp().InMicroseconds();
+ const TimestampId timestamp_id = timestamp_id_generator_.GenerateNextId();
+ timestamp_map_.Put(std::make_pair(timestamp_id, timestamp));
+ packet->opaque = reinterpret_cast<void*>(timestamp_id.GetUnsafeValue());
}
FFmpegDecodingLoop::DecodeStatus decode_status = decoding_loop_->DecodePacket(
packet, base::BindRepeating(&FFmpegVideoDecoder::OnNewFrame,
@@ -423,7 +425,12 @@ bool FFmpegVideoDecoder::OnNewFrame(AVFrame* frame) {
}
gfx::Size natural_size = aspect_ratio.GetNaturalSize(visible_rect);
- const auto pts = base::Microseconds(frame->reordered_opaque);
+ const auto ts_id = TimestampId(reinterpret_cast<size_t>(frame->opaque));
+ const auto ts_lookup = timestamp_map_.Get(ts_id);
+ if (ts_lookup == timestamp_map_.end()) {
+ return false;
+ }
+ const auto pts = base::Microseconds(std::get<1>(*ts_lookup));
auto video_frame = VideoFrame::WrapExternalDataWithLayout(
opaque->layout, visible_rect, natural_size, opaque->data, opaque->size,
pts);
@@ -498,8 +505,10 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config,
codec_context_->thread_count = GetFFmpegVideoDecoderThreadCount(config);
codec_context_->thread_type =
FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+
codec_context_->opaque = this;
codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->flags |= AV_CODEC_FLAG_COPY_OPAQUE;
if (base::FeatureList::IsEnabled(kFFmpegAllowLists)) {
// Note: FFmpeg will try to free this string, so we must duplicate it.
diff --git a/media/filters/ffmpeg_video_decoder.h b/media/filters/ffmpeg_video_decoder.h
index d02cb89c3ddf7..0a2de1c623fff 100644
--- a/media/filters/ffmpeg_video_decoder.h
+++ b/media/filters/ffmpeg_video_decoder.h
@@ -7,10 +7,12 @@
#include <memory>
+#include "base/containers/lru_cache.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/sequence_checker.h"
+#include "base/types/id_type.h"
#include "media/base/frame_buffer_pool.h"
#include "media/base/supported_video_decoder_config.h"
#include "media/base/video_decoder.h"
@@ -87,6 +89,20 @@ class MEDIA_EXPORT FFmpegVideoDecoder : public VideoDecoder {
// FFmpeg structures owned by this object.
std::unique_ptr<AVCodecContext, ScopedPtrAVFreeContext> codec_context_;
+ // The gist here is that timestamps need to be 64 bits to store microsecond
+ // precision. A 32 bit integer would overflow at ~35 minutes at this level of
+ // precision. We can't cast the timestamp to the void ptr object used by the
+ // opaque field in ffmpeg then, because it would lose data on a 32 bit build.
+ // However, we don't actually have 2^31 timestamped frames in a single
+ // playback, so it's fine to use the 32 bit value as a key in a map which
+ // contains the actual timestamps. Additionally, we've in the past set 128
+ // outstanding frames for re-ordering as a limit for cross-thread decoding
+ // tasks, so we'll do that here too with the LRU cache.
+ using TimestampId = base::IdType<int64_t, size_t, 0>;
+
+ TimestampId::Generator timestamp_id_generator_;
+ base::LRUCache<TimestampId, int64_t> timestamp_map_;
+
VideoDecoderConfig config_;
scoped_refptr<FrameBufferPool> frame_pool_;

@ -0,0 +1,38 @@
diff -up chromium-125.0.6422.41/net/filter/brotli_source_stream.cc.system-brotli chromium-125.0.6422.41/net/filter/brotli_source_stream.cc
--- chromium-125.0.6422.41/net/filter/brotli_source_stream.cc.system-brotli 2024-05-08 22:30:00.000000000 +0200
+++ chromium-125.0.6422.41/net/filter/brotli_source_stream.cc 2024-05-12 20:23:30.859178769 +0200
@@ -11,8 +11,8 @@
#include "base/memory/raw_ptr.h"
#include "base/metrics/histogram_macros.h"
#include "net/base/io_buffer.h"
-#include "third_party/brotli/include/brotli/decode.h"
-#include "third_party/brotli/include/brotli/shared_dictionary.h"
+#include <brotli/decode.h>
+#include <brotli/shared_dictionary.h>
namespace net {
diff -up chromium-125.0.6422.41/net/ssl/cert_compression.cc.system-brotli chromium-125.0.6422.41/net/ssl/cert_compression.cc
--- chromium-125.0.6422.41/net/ssl/cert_compression.cc.system-brotli 2024-05-08 22:30:00.000000000 +0200
+++ chromium-125.0.6422.41/net/ssl/cert_compression.cc 2024-05-12 20:23:30.860178793 +0200
@@ -9,7 +9,7 @@
#include "third_party/boringssl/src/include/openssl/ssl.h"
#if !defined(NET_DISABLE_BROTLI)
-#include "third_party/brotli/include/brotli/decode.h"
+#include <brotli/decode.h>
#endif
namespace net {
diff -up chromium-125.0.6422.41/ui/base/resource/resource_bundle.cc.system-brotli chromium-125.0.6422.41/ui/base/resource/resource_bundle.cc
--- chromium-125.0.6422.41/ui/base/resource/resource_bundle.cc.system-brotli 2024-05-12 20:23:30.861178816 +0200
+++ chromium-125.0.6422.41/ui/base/resource/resource_bundle.cc 2024-05-12 21:19:03.775332093 +0200
@@ -33,7 +33,7 @@
#include "net/filter/gzip_header.h"
#include "skia/ext/image_operations.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
-#include "third_party/brotli/include/brotli/decode.h"
+#include "brotli/decode.h"
#include "third_party/skia/include/codec/SkPngDecoder.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkColor.h"

@ -106,6 +106,7 @@ header_files=" libavcodec/x86/inline_asm.h \
libavcodec/hwconfig.h \
libavcodec/idctdsp.h \
libavcodec/internal.h \
libavcodec/itut35.h \
libavcodec/kbdwin.h \
libavcodec/mathops.h \
libavcodec/me_cmp.h \

@ -1,8 +1,8 @@
Index: chromium-124.0.6367.118/third_party/skia/BUILD.gn
Index: chromium-125.0.6422.41/third_party/skia/BUILD.gn
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/BUILD.gn
+++ chromium-124.0.6367.118/third_party/skia/BUILD.gn
@@ -191,6 +191,12 @@ opts("skx") {
--- chromium-125.0.6422.41.orig/third_party/skia/BUILD.gn
+++ chromium-125.0.6422.41/third_party/skia/BUILD.gn
@@ -188,6 +188,12 @@ opts("skx") {
}
}
@ -15,7 +15,7 @@ Index: chromium-124.0.6367.118/third_party/skia/BUILD.gn
# Any feature of Skia that requires third-party code should be optional and use this template.
template("optional") {
if (invoker.enabled) {
@@ -1482,6 +1488,7 @@ skia_component("skia") {
@@ -1478,6 +1484,7 @@ skia_component("skia") {
":skx",
":typeface_fontations",
":vello",
@ -23,7 +23,7 @@ Index: chromium-124.0.6367.118/third_party/skia/BUILD.gn
":webp_decode",
":wuffs",
":xml",
@@ -1659,7 +1666,10 @@ skia_static_library("pathkit") {
@@ -1653,7 +1660,10 @@ skia_static_library("pathkit") {
public_configs = [ ":skia_public" ]
configs = skia_library_configs
@ -35,23 +35,23 @@ Index: chromium-124.0.6367.118/third_party/skia/BUILD.gn
sources = []
sources += skia_pathops_sources
Index: chromium-124.0.6367.118/third_party/skia/gn/skia/BUILD.gn
Index: chromium-125.0.6422.41/third_party/skia/gn/skia/BUILD.gn
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/gn/skia/BUILD.gn
+++ chromium-124.0.6367.118/third_party/skia/gn/skia/BUILD.gn
--- chromium-125.0.6422.41.orig/third_party/skia/gn/skia/BUILD.gn
+++ chromium-125.0.6422.41/third_party/skia/gn/skia/BUILD.gn
@@ -163,6 +163,8 @@ config("default") {
"-mfpmath=sse",
]
ldflags += [ "-m32" ]
+ } else if (current_cpu == "ppc64") {
+ cflags += [ "-mcpu=power9", "-mtune=power9" ]
}
if (malloc != "" && !is_win) {
Index: chromium-124.0.6367.118/third_party/skia/include/core/SkTypes.h
} else if (current_cpu == "loong64") {
cflags += [
"-mlsx",
Index: chromium-125.0.6422.41/third_party/skia/include/core/SkTypes.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/include/core/SkTypes.h
+++ chromium-124.0.6367.118/third_party/skia/include/core/SkTypes.h
--- chromium-125.0.6422.41.orig/third_party/skia/include/core/SkTypes.h
+++ chromium-125.0.6422.41/third_party/skia/include/core/SkTypes.h
@@ -195,5 +195,44 @@ static constexpr uint32_t SK_InvalidGenI
*/
static constexpr uint32_t SK_InvalidUniqueID = 0;
@ -97,10 +97,10 @@ Index: chromium-124.0.6367.118/third_party/skia/include/core/SkTypes.h
+
#endif
Index: chromium-124.0.6367.118/third_party/skia/src/base/SkSpinlock.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/base/SkSpinlock.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/base/SkSpinlock.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/base/SkSpinlock.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/base/SkSpinlock.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/base/SkSpinlock.cpp
@@ -33,7 +33,8 @@
#endif
@ -111,10 +111,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/base/SkSpinlock.cpp
#include <emmintrin.h>
static void do_pause() { _mm_pause(); }
#else
Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkBitmapProcState_opts.h
Index: chromium-125.0.6422.41/third_party/skia/src/opts/SkBitmapProcState_opts.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h
+++ chromium-124.0.6367.118/third_party/skia/src/opts/SkBitmapProcState_opts.h
--- chromium-125.0.6422.41.orig/third_party/skia/src/opts/SkBitmapProcState_opts.h
+++ chromium-125.0.6422.41/third_party/skia/src/opts/SkBitmapProcState_opts.h
@@ -21,7 +21,13 @@
// The rest are scattershot at the moment but I want to get them
// all migrated to be normal code inside SkBitmapProcState.cpp.
@ -130,10 +130,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkBitmapProcState_opts.
#include <immintrin.h>
#elif defined(SK_ARM_HAS_NEON)
#include <arm_neon.h>
Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkBlitRow_opts.h
Index: chromium-125.0.6422.41/third_party/skia/src/opts/SkBlitRow_opts.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/opts/SkBlitRow_opts.h
+++ chromium-124.0.6367.118/third_party/skia/src/opts/SkBlitRow_opts.h
--- chromium-125.0.6422.41.orig/third_party/skia/src/opts/SkBlitRow_opts.h
+++ chromium-125.0.6422.41/third_party/skia/src/opts/SkBlitRow_opts.h
@@ -69,7 +69,7 @@
#endif
@ -143,14 +143,14 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkBlitRow_opts.h
static inline __m128i SkPMSrcOver_SSE2(const __m128i& src, const __m128i& dst) {
__m128i scale = _mm_sub_epi32(_mm_set1_epi32(256),
Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
Index: chromium-125.0.6422.41/third_party/skia/src/opts/SkRasterPipeline_opts.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h
+++ chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
--- chromium-125.0.6422.41.orig/third_party/skia/src/opts/SkRasterPipeline_opts.h
+++ chromium-125.0.6422.41/third_party/skia/src/opts/SkRasterPipeline_opts.h
@@ -1,5 +1,6 @@
/*
* Copyright 2018 Google Inc.
+ * Copyright 2023 Raptor Engineering, LLC
+ * Copyright 2023-2024 Raptor Engineering, LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
@ -163,16 +163,16 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SKX
#define JUMPER_IS_SKX
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_AVX2
@@ -107,6 +110,8 @@ using NoCtx = const void*;
@@ -111,6 +114,8 @@ using NoCtx = const void*;
#include <math.h>
#elif defined(JUMPER_IS_NEON)
#include <arm_neon.h>
+#elif defined(JUMPER_IS_VSX)
+ #include <emmintrin.h>
#else
#include <immintrin.h>
#endif
@@ -200,6 +205,184 @@ namespace SK_OPTS_NS {
#elif defined(JUMPER_IS_LASX)
#include <lasxintrin.h>
#include <lsxintrin.h>
@@ -209,6 +214,184 @@ namespace SK_OPTS_NS {
ptr[3] = a;
}
@ -357,7 +357,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
#elif defined(JUMPER_IS_NEON)
template <typename T> using V = Vec<4, T>;
using F = V<float >;
@@ -1025,6 +1208,15 @@ SI F from_half(U16 h) {
@@ -1406,6 +1589,15 @@ SI F from_half(U16 h) {
#elif defined(JUMPER_IS_HSW)
return _mm256_cvtph_ps((__m128i)h);
@ -373,7 +373,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else
// Remember, a half is 1-5-10 (sign-exponent-mantissa) with 15 exponent bias.
U32 sem = expand(h),
@@ -1048,6 +1240,16 @@ SI U16 to_half(F f) {
@@ -1429,6 +1621,16 @@ SI U16 to_half(F f) {
#elif defined(JUMPER_IS_HSW)
return (U16)_mm256_cvtps_ph(f, _MM_FROUND_CUR_DIRECTION);
@ -390,16 +390,16 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
#else
// Remember, a float is 1-8-23 (sign-exponent-mantissa) with 127 exponent bias.
U32 sem = sk_bit_cast<U32>(f),
@@ -1123,7 +1325,7 @@ static constexpr size_t N = sizeof(F) /
@@ -1504,7 +1706,7 @@ static constexpr size_t N = sizeof(F) /
// instead of {b,a} on the stack. Narrow stages work best for __vectorcall.
#define ABI __vectorcall
#define JUMPER_NARROW_STAGES 1
-#elif defined(__x86_64__) || defined(SK_CPU_ARM64)
+#elif defined(__x86_64__) || defined(SK_CPU_ARM64) || defined(SK_CPU_PPC64)
-#elif defined(__x86_64__) || defined(SK_CPU_ARM64) || defined(SK_CPU_LOONGARCH)
+#elif defined(__x86_64__) || defined(SK_CPU_ARM64) || defined(SK_CPU_LOONGARCH) || defined(SK_CPU_PPC64)
// These platforms are ideal for wider stages, and their default ABI is ideal.
#define ABI
#define JUMPER_NARROW_STAGES 0
@@ -5023,6 +5225,10 @@ SI F sqrt_(F x) {
@@ -5467,6 +5669,10 @@ SI F sqrt_(F x) {
float32x4_t lo,hi;
split(x, &lo,&hi);
return join<F>(sqrt(lo), sqrt(hi));
@ -407,10 +407,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
+ vector float lo,hi;
+ split(x, &lo,&hi);
+ return join<F>(vec_sqrt(lo), vec_sqrt(hi));
#else
return F{
sqrtf(x[0]), sqrtf(x[1]), sqrtf(x[2]), sqrtf(x[3]),
@@ -5046,6 +5252,10 @@ SI F floor_(F x) {
#elif defined(JUMPER_IS_LASX)
__m256 lo,hi;
split(x, &lo,&hi);
@@ -5498,6 +5704,10 @@ SI F floor_(F x) {
__m128 lo,hi;
split(x, &lo,&hi);
return join<F>(_mm_floor_ps(lo), _mm_floor_ps(hi));
@ -418,10 +418,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
+ vector float lo,hi;
+ split(x, &lo,&hi);
+ return join<F>(vec_floor(lo), vec_floor(hi));
#else
F roundtrip = cast<F>(cast<I32>(x));
return roundtrip - if_then_else(roundtrip > x, F_(1), F_(0));
@@ -5057,6 +5267,7 @@ SI F floor_(F x) {
#elif defined(JUMPER_IS_LASX)
__m256 lo,hi;
split(x, &lo,&hi);
@@ -5517,6 +5727,7 @@ SI F floor_(F x) {
// (2 * a * b + (1 << 15)) >> 16
// The result is a number on [-1, 1).
// Note: on neon this is a saturating multiply while the others are not.
@ -429,7 +429,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
SI I16 scaled_mult(I16 a, I16 b) {
#if defined(JUMPER_IS_SKX)
return (I16)_mm256_mulhrs_epi16((__m256i)a, (__m256i)b);
@@ -5068,6 +5279,22 @@ SI I16 scaled_mult(I16 a, I16 b) {
@@ -5528,6 +5739,22 @@ SI I16 scaled_mult(I16 a, I16 b) {
return vqrdmulhq_s16(a, b);
#elif defined(JUMPER_IS_NEON)
return vqrdmulhq_s16(a, b);
@ -449,10 +449,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
+ d = vec_add(d, ones);
+ d = vec_sr(d,(vector unsigned int)ones);
+ return vec_pack(c, d);
#else
const I32 roundingTerm = I32_(1 << 14);
return cast<I16>((cast<I32>(a) * cast<I32>(b) + roundingTerm) >> 15);
@@ -5089,7 +5316,26 @@ SI U16 constrained_add(I16 a, U16 b) {
#elif defined(JUMPER_IS_LASX)
I16 res = __lasx_xvmuh_h(a, b);
return __lasx_xvslli_h(res, 1);
@@ -5555,7 +5782,26 @@ SI U16 constrained_add(I16 a, U16 b) {
SkASSERT(-ib <= ia && ia <= 65535 - ib);
}
#endif
@ -479,7 +479,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
}
SI F fract(F x) { return x - floor_(x); }
@@ -5947,8 +6193,14 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
@@ -6479,8 +6725,14 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
// 2^-8 * v = 2^-9 * (tx*(R - L) + (R + L))
// v = 1/2 * (tx*(R - L) + (R + L))
auto lerpX = [&](U16 left, U16 right) -> U16 {
@ -494,7 +494,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
// The constrained_add is the most subtle part of lerp. The first term is on the interval
// [-1, 1), and the second term is on the interval is on the interval [0, 1) because
// both terms are too high by a factor of 2 which will be handled below. (Both R and L are
@@ -5960,7 +6212,12 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
@@ -6492,7 +6744,12 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
U16 v2 = constrained_add(scaled_mult(tx, width), middle) + 1;
// Divide by 2 to calculate v and at the same time bring the intermediate value onto the
// interval [0, 1/2] to set up for the lerpY.
@ -507,7 +507,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
};
const uint32_t* ptr;
@@ -5994,9 +6251,15 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
@@ -6526,9 +6783,15 @@ STAGE_GP(bilerp_clamp_8888, const SkRast
I16 width = (I16)bottom - (I16)top;
U16 middle = bottom + top;
// Add + 0x80 for rounding.
@ -524,10 +524,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkRasterPipeline_opts.h
};
r = lerpY(topR, bottomR);
Index: chromium-124.0.6367.118/third_party/skia/src/base/SkVx.h
Index: chromium-125.0.6422.41/third_party/skia/src/base/SkVx.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/base/SkVx.h
+++ chromium-124.0.6367.118/third_party/skia/src/base/SkVx.h
--- chromium-125.0.6422.41.orig/third_party/skia/src/base/SkVx.h
+++ chromium-125.0.6422.41/third_party/skia/src/base/SkVx.h
@@ -42,7 +42,13 @@
#if SKVX_USE_SIMD
@ -543,10 +543,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/base/SkVx.h
#elif defined(SK_ARM_HAS_NEON)
#include <arm_neon.h>
#elif defined(__wasm_simd128__)
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkBlitMask_opts_ssse3.cpp
@@ -9,7 +9,7 @@
#include "src/core/SkBlitMask.h"
#include "src/core/SkOptsTargets.h"
@ -556,10 +556,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts_ssse3.c
// The order of these includes is important:
// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkSwizzler_opts_ssse3.cpp
@@ -10,7 +10,7 @@
#include "src/core/SkOptsTargets.h"
#include "src/core/SkSwizzlePriv.h"
@ -569,10 +569,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkSwizzler_opts_ssse3.c
!defined(SK_ENABLE_OPTIMIZE_SIZE) && \
SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkBlitMask_opts.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkBlitMask_opts.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkBlitMask_opts.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkBlitMask_opts.cpp
@@ -25,7 +25,7 @@ namespace SkOpts {
static bool init() {
#if defined(SK_ENABLE_OPTIMIZE_SIZE)
@ -582,10 +582,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBlitMask_opts.cpp
#if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BlitMask_ssse3(); }
#endif
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkBitmapProcState_opts.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkBitmapProcState_opts.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkBitmapProcState_opts.cpp
@@ -25,7 +25,7 @@ namespace SkOpts {
static bool init() {
#if defined(SK_ENABLE_OPTIMIZE_SIZE)
@ -595,11 +595,11 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts.
#if SK_CPU_SSE_LEVEL < SK_CPU_SSE_LEVEL_SSSE3
if (SkCpu::Supports(SkCpu::SSSE3)) { Init_BitmapProcState_ssse3(); }
#endif
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkCpu.h
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkCpu.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkCpu.h
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkCpu.h
@@ -55,7 +55,7 @@ inline bool SkCpu::Supports(uint32_t mas
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkCpu.h
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkCpu.h
@@ -60,7 +60,7 @@ inline bool SkCpu::Supports(uint32_t mas
// If we mask in compile-time known lower limits, the compiler can
// often compile away this entire function.
@ -608,10 +608,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkCpu.h
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
features |= SSE1;
#endif
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkBitmapProcState_opts_ssse3.cpp
@@ -8,7 +8,7 @@
#include "include/private/base/SkFeatures.h"
#include "src/core/SkOptsTargets.h"
@ -621,10 +621,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBitmapProcState_opts_
// The order of these includes is important:
// 1) Select the target CPU architecture by defining SK_OPTS_TARGET and including SkOpts_SetTarget
Index: chromium-124.0.6367.118/third_party/skia/include/private/base/SkFeatures.h
Index: chromium-125.0.6422.41/third_party/skia/include/private/base/SkFeatures.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/include/private/base/SkFeatures.h
+++ chromium-124.0.6367.118/third_party/skia/include/private/base/SkFeatures.h
--- chromium-125.0.6422.41.orig/third_party/skia/include/private/base/SkFeatures.h
+++ chromium-125.0.6422.41/third_party/skia/include/private/base/SkFeatures.h
@@ -63,6 +63,8 @@
#if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
@ -633,11 +633,11 @@ Index: chromium-124.0.6367.118/third_party/skia/include/private/base/SkFeatures.
+ #define SK_CPU_PPC64 1
#endif
/**
Index: chromium-124.0.6367.118/third_party/skia/modules/skcms/src/skcms_internals.h
#if defined(__loongarch__) || defined (__loongarch64)
Index: chromium-125.0.6422.41/third_party/skia/modules/skcms/src/skcms_internals.h
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/modules/skcms/src/skcms_internals.h
+++ chromium-124.0.6367.118/third_party/skia/modules/skcms/src/skcms_internals.h
--- chromium-125.0.6422.41.orig/third_party/skia/modules/skcms/src/skcms_internals.h
+++ chromium-125.0.6422.41/third_party/skia/modules/skcms/src/skcms_internals.h
@@ -47,6 +47,7 @@ extern "C" {
&& !defined(__EMSCRIPTEN__) \
&& !defined(__arm__) \
@ -646,10 +646,10 @@ Index: chromium-124.0.6367.118/third_party/skia/modules/skcms/src/skcms_internal
&& !defined(__loongarch__) \
&& !defined(_WIN32) && !defined(__SYMBIAN32__)
#define SKCMS_HAS_MUSTTAIL 1
Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkSwizzler_opts.inc
Index: chromium-125.0.6422.41/third_party/skia/src/opts/SkSwizzler_opts.inc
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/opts/SkSwizzler_opts.inc
+++ chromium-124.0.6367.118/third_party/skia/src/opts/SkSwizzler_opts.inc
--- chromium-125.0.6422.41.orig/third_party/skia/src/opts/SkSwizzler_opts.inc
+++ chromium-125.0.6422.41/third_party/skia/src/opts/SkSwizzler_opts.inc
@@ -14,7 +14,10 @@
#include <cmath>
#include <utility>
@ -662,7 +662,7 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkSwizzler_opts.inc
#include <immintrin.h>
#elif defined(SK_ARM_HAS_NEON)
#include <arm_neon.h>
@@ -61,6 +64,33 @@ SI float reciprocal_alpha_times_255(floa
@@ -65,6 +68,33 @@ SI float reciprocal_alpha_times_255(floa
SI float reciprocal_alpha(float a) {
return reciprocal_alpha_portable(a);
}
@ -696,10 +696,10 @@ Index: chromium-124.0.6367.118/third_party/skia/src/opts/SkSwizzler_opts.inc
#elif SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1 && (defined(__clang__) || !defined(_MSC_VER))
// -- SSE -- Harden against timing attacks -- MSVC is not supported.
using F4 = __m128;
Index: chromium-124.0.6367.118/third_party/skia/src/core/SkBlitter_ARGB32.cpp
Index: chromium-125.0.6422.41/third_party/skia/src/core/SkBlitter_ARGB32.cpp
===================================================================
--- chromium-124.0.6367.118.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+++ chromium-124.0.6367.118/third_party/skia/src/core/SkBlitter_ARGB32.cpp
--- chromium-125.0.6422.41.orig/third_party/skia/src/core/SkBlitter_ARGB32.cpp
+++ chromium-125.0.6422.41/third_party/skia/src/core/SkBlitter_ARGB32.cpp
@@ -126,6 +126,16 @@ static inline SkPMColor blend_lcd16_opaq
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
#include <emmintrin.h>

@ -314,8 +314,8 @@
%endif
Name: chromium%{chromium_channel}
Version: 124.0.6367.201
Release: 2%{?dist}
Version: 125.0.6422.60
Release: 1%{?dist}
Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use
Url: http://www.chromium.org/Home
License: BSD-3-Clause AND LGPL-2.1-or-later AND Apache-2.0 AND IJG AND MIT AND GPL-2.0-or-later AND ISC AND OpenSSL AND (MPL-1.1 OR GPL-2.0-only OR LGPL-2.0-only)
@ -364,7 +364,7 @@ Patch69: chromium-103.0.5060.53-update-rjsmin-to-1.2.0.patch
Patch82: chromium-98.0.4758.102-remoting-no-tests.patch
# patch for using system brotli
Patch89: chromium-116-system-brotli.patch
Patch89: chromium-125-system-brotli.patch
# patch for using system libxml
Patch90: chromium-121-system-libxml.patch
@ -378,9 +378,9 @@ Patch100: chromium-116-el7-include-fcntl-memfd.patch
# add define HAVE_STRNDUP on epel7
Patch101: chromium-108-el7-wayland-strndup-error.patch
# Workaround for old clang
# Workaround for old clang 14
# error: defaulting this default constructor would delete it after its first declaration
Patch102: chromium-123-el7-default-constructor-involving-anonymous-union.patch
Patch102: chromium-124-el7-default-constructor-involving-anonymous-union.patch
# Work around old and missing headers on EPEL7
Patch103: chromium-110-epel7-old-headers-workarounds.patch
@ -406,7 +406,6 @@ Patch108: chromium-118-el7_v4l2_quantization.patch
Patch109: chromium-114-wireless-el7.patch
Patch110: chromium-115-buildflag-el7.patch
Patch111: chromium-122-el7-inline-function.patch
Patch112: chromium-124-el7-powf.patch
Patch113: chromium-121-el7-clang-version-warning.patch
Patch114: chromium-123-el7-clang-build-failure.patch
Patch115: chromium-124-el7-size_t.patch
@ -429,6 +428,7 @@ Patch122: chromium-124-el7-constexpr.patch
# system ffmpeg
# need for old ffmpeg 5.x on epel9
Patch129: chromium-125-ffmpeg-5.x-reordered_opaque.patch
Patch130: chromium-107-ffmpeg-5.x-duration.patch
# disable the check
Patch131: chromium-107-proprietary-codecs.patch
@ -450,13 +450,9 @@ Patch150: chromium-124-qt6.patch
# not supported in old glibc < 2.30, error: fatal error: 'sys/ifunc.h' file not found
Patch305: chromium-124-arm64-memory_tagging.patch
# compiler errors on epel
# revert it for old clang on rhel and f38
Patch307: chromium-121-v8-c++20-p1.patch
Patch308: chromium-123-v8-c++20.patch
# missing include header files
Patch310: chromium-123-missing-header-files.patch
# compiler errors on el7/el8 and f38 (clang <17)
Patch307: chromium-125-el-NativeValueTraits-p1.patch
Patch308: chromium-125-el-NativeValueTraits-p2.patch
# enable fstack-protector-strong
Patch312: chromium-123-fstack-protector-strong.patch
@ -466,6 +462,9 @@ Patch313: chromium-123-rust-clap_lex.patch
Patch314: chromium-124-clang16-buildflags.patch
# remove ldflags -Wl,-mllvm,-disable-auto-upgrade-debug-info which is not supported
Patch315: chromium-122-clang16-disable-auto-upgrade-debug-info.patch
# add -ftrivial-auto-var-init=zero and -fwrapv
Patch316: chromium-122-clang-build-flags.patch
@ -481,10 +480,7 @@ Patch352: chromium-117-workaround_for_crash_on_BTI_capable_system.patch
Patch354: chromium-120-split-threshold-for-reg-with-hint.patch
# disable FFmpegAllowLists by default to allow external ffmpeg
patch356: chromium-122-disable-FFmpegAllowLists.patch
# remove ldflags -Wl,-mllvm,-disable-auto-upgrade-debug-info which is not supported
Patch357: chromium-122-clang16-disable-auto-upgrade-debug-info.patch
patch356: chromium-125-disable-FFmpegAllowLists.patch
# set clang_lib path
Patch358: chromium-124-rust-clang_lib.patch
@ -517,21 +513,21 @@ Patch377: 0001-Add-PPC64-support-for-boringssl.patch
Patch378: 0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
Patch379: 0001-third_party-lss-Don-t-look-for-mmap2-on-ppc64.patch
Patch380: 0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
Patch381: 0002-third_party-lss-kernel-structs.patch
Patch381: 0002-Add-PPC64-generated-files-for-boringssl.patch
Patch382: 0002-third_party-lss-kernel-structs.patch
Patch382: Rtc_base-system-arch.h-PPC.patch
Patch383: Rtc_base-system-arch.h-PPC.patch
Patch383: 0002-Include-cstddef-to-fix-build.patch
Patch384: 0004-third_party-crashpad-port-curl-transport-ppc64.patch
Patch384: 0002-Include-cstddef-to-fix-build.patch
Patch385: 0004-third_party-crashpad-port-curl-transport-ppc64.patch
Patch385: HACK-third_party-libvpx-use-generic-gnu.patch
Patch386: HACK-debian-clang-disable-skia-musttail.patch
Patch386: HACK-third_party-libvpx-use-generic-gnu.patch
Patch387: HACK-debian-clang-disable-skia-musttail.patch
Patch387: 0001-Add-ppc64-target-to-libaom.patch
Patch388: 0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
Patch388: 0001-Add-ppc64-target-to-libaom.patch
Patch389: 0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
Patch389: 0002-third_party-libvpx-Remove-bad-ppc64-config.patch
Patch390: 0002-third-party-boringssl-add-generated-files.patch
Patch390: 0002-third_party-libvpx-Remove-bad-ppc64-config.patch
Patch391: 0003-third_party-libvpx-Add-ppc64-generated-config.patch
# Enabling VSX causes artifacts to appear in VP9 videos
Patch394: 0004-third_party-libvpx-work-around-ambiguous-vsx.patch
@ -542,11 +538,12 @@ Patch395: skia-vsx-instructions.patch
Patch396: 0001-Implement-support-for-ppc64-on-Linux.patch
Patch397: 0001-Implement-support-for-PPC64-on-Linux.patch
Patch398: 0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
Patch399: fix-rustc.patch
Patch400: fix-rust-linking.patch
Patch401: fix-breakpad-compile.patch
Patch402: fix-partition-alloc-compile.patch
Patch403: 0002-Add-ppc64-trap-instructions.patch
Patch399: fix-clang-selection.patch
Patch400: fix-rustc.patch
Patch401: fix-rust-linking.patch
Patch402: fix-breakpad-compile.patch
Patch403: fix-partition-alloc-compile.patch
Patch404: 0002-Add-ppc64-trap-instructions.patch
Patch407: fix-ppc64-linux-syscalls-headers.patch
Patch409: use-sysconf-page-size-on-ppc64.patch
@ -559,8 +556,6 @@ Patch412: fix-swiftshader-compile.patch
# Suppress harmless compiler warning messages that appear on ppc64 due to arch-specific warning flags being passed
Patch413: fix-unknown-warning-option-messages.diff
Patch415: fix-clang-selection.patch
# upstream patches
# 64kpage support on el8
Patch500: chromium-124-el8-support-64kpage.patch
@ -1044,7 +1039,9 @@ Provides: bundled(libwebp) = 0.6.0
Provides: bundled(libxml) = 2.9.4
%endif
%if %{bundlelibXNVCtrl}
Provides: bundled(libXNVCtrl) = 302.17
%endif
Provides: bundled(libyuv) = 1651
Provides: bundled(lzma) = 15.14
Provides: bundled(libudis86) = 1.7.1
@ -1176,6 +1173,7 @@ udev.
%if ! %{bundleffmpegfree}
%if 0%{?rhel} == 9
%patch -P129 -p1 -R -b .ffmpeg-5.x-reordered_opaque
%patch -P130 -p1 -b .ffmpeg-5.x-duration
%endif
%patch -P131 -p1 -b .prop-codecs
@ -1197,7 +1195,6 @@ udev.
%patch -P109 -p1 -b .wireless
%patch -P110 -p1 -b .buildflag-el7
%patch -P111 -p1 -b .inline-function-el7
%patch -P112 -p1 -b .el7-powf
%patch -P113 -p1 -b .el7-clang-version-warning
%patch -P114 -p1 -b .clang-build-failure
%patch -P115 -p1 -b .el7-size_t
@ -1229,13 +1226,13 @@ udev.
%endif
%endif
%if 0%{?rhel} || 0%{?fedora} && 0%{?fedora} < 39
%patch -P307 -p1 -R -b .v8-c++20
%patch -P308 -p1 -R -b .v8-c++20
%if 0%{?rhel} && 0%{?rhel} < 9 || 0%{?fedora} && 0%{?fedora} < 39
%patch -P307 -p1 -b .el-NativeValueTraits-p1
%patch -P308 -p1 -b .el-NativeValueTraits
%patch -P314 -p1 -b .clang16-buildflag
%patch -P315 -p1 -b .clang16-disable-auto-upgrade-debug-info
%endif
%patch -P310 -p1 -b .missing-header-files
%patch -P312 -p1 -b .fstack-protector-strong
%if 0%{?rhel} && 0%{?rhel} < 10
@ -1252,7 +1249,6 @@ udev.
%patch -P354 -p1 -b .revert-split-threshold-for-reg-with-hint
%patch -P356 -p1 -b .disable-FFmpegAllowLists
%patch -P357 -p1 -b .clang16-disable-auto-upgrade-debug-info
%patch -P358 -p1 -b .rust-clang_lib
%patch -P359 -p1 -b .libavif-deps
@ -1279,21 +1275,21 @@ udev.
%patch -P378 -p1 -b .0001-third_party-libvpx-Properly-generate-gni-on-ppc64
%patch -P379 -p1 -b .0001-third_party-lss-Don-t-look-for-mmap2-on-ppc64
%patch -P380 -p1 -b .0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI
%patch -P381 -p1 -b .0002-third_party-lss-kernel-structs
%patch -P381 -p1 -b .002-Add-PPC64-generated-files-for-boringssl
%patch -P382 -p1 -b .0002-third_party-lss-kernel-structs
%patch -P382 -p1 -b .Rtc_base-system-arch.h-PPC
%patch -P383 -p1 -b .Rtc_base-system-arch.h-PPC
%patch -P383 -p1 -b .0002-Include-cstddef-to-fix-build
%patch -P384 -p1 -b .0004-third_party-crashpad-port-curl-transport-ppc64
%patch -P384 -p1 -b .0002-Include-cstddef-to-fix-build
%patch -P385 -p1 -b .0004-third_party-crashpad-port-curl-transport-ppc64
%patch -P385 -p1 -b .HACK-third_party-libvpx-use-generic-gnu
%patch -P386 -p1 -b .HACK-debian-clang-disable-skia-musttail
%patch -P386 -p1 -b .HACK-third_party-libvpx-use-generic-gnu
%patch -P387 -p1 -b .HACK-debian-clang-disable-skia-musttail
%patch -P387 -p1 -b .0001-Add-ppc64-target-to-libaom
%patch -P388 -p1 -b .0001-Add-pregenerated-config-for-libaom-on-ppc64
%patch -P388 -p1 -b .0001-Add-ppc64-target-to-libaom
%patch -P389 -p1 -b .0001-Add-pregenerated-config-for-libaom-on-ppc64
%patch -P389 -p1 -b .0002-third_party-libvpx-Remove-bad-ppc64-config
%patch -P390 -p1 -b .0002-third-party-boringssl-add-generated-files
%patch -P390 -p1 -b .0002-third_party-libvpx-Remove-bad-ppc64-config
%patch -P391 -p1 -b .0003-third_party-libvpx-Add-ppc64-generated-config
%patch -P394 -p1 -b .0004-third_party-libvpx-work-around-ambiguous-vsx
@ -1302,11 +1298,12 @@ udev.
%patch -P396 -p1 -b .0001-Implement-support-for-ppc64-on-Linux
%patch -P397 -p1 -b .0001-Implement-support-for-PPC64-on-Linux
%patch -P398 -p1 -b .0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-
%patch -P399 -p1 -b .fix-rustc
%patch -P400 -p1 -b .fix-rust-linking
%patch -P401 -p1 -b .fix-breakpad-compile
%patch -P402 -p1 -b .fix-partition-alloc-compile
%patch -P403 -p1 -b .0002-Add-ppc64-trap-instructions
%patch -P399 -p1 -b .fix-clang-selection
%patch -P400 -p1 -b .fix-rustc
%patch -P401 -p1 -b .fix-rust-linking
%patch -P402 -p1 -b .fix-breakpad-compile
%patch -P403 -p1 -b .fix-partition-alloc-compile
%patch -P404 -p1 -b .0002-Add-ppc64-trap-instructions
%patch -P407 -p1 -b .fix-ppc64-linux-syscalls-headers
%patch -P409 -p1 -b .use-sysconf-page-size-on-ppc64
@ -1316,8 +1313,6 @@ udev.
%patch -P412 -p1 -b .fix-swiftshader-compile.patch
%patch -P413 -p1 -b .fix-unknown-warning-option-messages
%patch -P415 -p1 -b .fix-clang-selection
%endif
%%ifarch aarch64
@ -2120,8 +2115,18 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%endif
%changelog
* Thu May 16 2024 Than Ngo <than@redhat.com> - 125.0.6422.60-1
- update to 125.0.6422.60
* High CVE-2024-4947: Type Confusion in V8
* High CVE-2024-4948: Use after free in Dawn
* Medium CVE-2024-4949: Use after free in V8
* Low CVE-2024-4950: Inappropriate implementation in Downloads
* Sun May 12 2024 Than Ngo <than@redhat.com> - 125.0.6422.41-1
- update to 125.0.6422.41
* Sat May 11 2024 Than Ngo <than@redhat.com> - 124.0.6367.201-2
- include headless_command_resources.pak for head_shell
- include headless_command_resources.pak for headless_shell
* Fri May 10 2024 Than Ngo <than@redhat.com> - 124.0.6367.201-1
- update to 124.0.6367.201

Loading…
Cancel
Save