mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
extra/qt6-webengine: fix
This commit is contained in:
parent
34c26f03b5
commit
3de92ab6f5
4 changed files with 13 additions and 363 deletions
|
@ -1,17 +1,17 @@
|
||||||
From 46dc6b6a276e974341328f78451678d756c382f9 Mon Sep 17 00:00:00 2001
|
From 3305608d1fae517995349d6276545891374c4e92 Mon Sep 17 00:00:00 2001
|
||||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||||
Date: Tue, 4 Jul 2017 11:54:39 -0600
|
Date: Tue, 4 Jul 2017 11:54:39 -0600
|
||||||
Subject: [PATCH 1/3] ARM toolchain fixes
|
Subject: [PATCH 1/2] ARM toolchain fixes
|
||||||
|
|
||||||
---
|
---
|
||||||
chromium/build/toolchain/linux/BUILD.gn | 24 ++++++++++--------------
|
chromium/build/toolchain/linux/BUILD.gn | 24 ++++++++++--------------
|
||||||
1 file changed, 10 insertions(+), 14 deletions(-)
|
1 file changed, 10 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
diff --git a/chromium/build/toolchain/linux/BUILD.gn b/chromium/build/toolchain/linux/BUILD.gn
|
diff --git a/chromium/build/toolchain/linux/BUILD.gn b/chromium/build/toolchain/linux/BUILD.gn
|
||||||
index 0c0b0a3321e..fa147fa5667 100644
|
index 64face8eff5..55a707835f4 100644
|
||||||
--- a/chromium/build/toolchain/linux/BUILD.gn
|
--- a/chromium/build/toolchain/linux/BUILD.gn
|
||||||
+++ b/chromium/build/toolchain/linux/BUILD.gn
|
+++ b/chromium/build/toolchain/linux/BUILD.gn
|
||||||
@@ -31,15 +31,13 @@ clang_toolchain("clang_arm64") {
|
@@ -30,15 +30,13 @@ clang_toolchain("clang_arm64") {
|
||||||
}
|
}
|
||||||
|
|
||||||
gcc_toolchain("arm64") {
|
gcc_toolchain("arm64") {
|
||||||
|
@ -32,7 +32,7 @@ index 0c0b0a3321e..fa147fa5667 100644
|
||||||
|
|
||||||
toolchain_args = {
|
toolchain_args = {
|
||||||
current_cpu = "arm64"
|
current_cpu = "arm64"
|
||||||
@@ -52,15 +50,13 @@ gcc_toolchain("arm64") {
|
@@ -51,15 +49,13 @@ gcc_toolchain("arm64") {
|
||||||
}
|
}
|
||||||
|
|
||||||
gcc_toolchain("arm") {
|
gcc_toolchain("arm") {
|
||||||
|
@ -54,5 +54,5 @@ index 0c0b0a3321e..fa147fa5667 100644
|
||||||
toolchain_args = {
|
toolchain_args = {
|
||||||
current_cpu = "arm"
|
current_cpu = "arm"
|
||||||
--
|
--
|
||||||
2.37.0
|
2.37.3
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
From 8b1d4ec4b3f5c569eef9d8e5d40cb0e961d6ba31 Mon Sep 17 00:00:00 2001
|
From 79734ab9f448456bda2607e131547afd76bf93d7 Mon Sep 17 00:00:00 2001
|
||||||
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
From: Kevin Mihelich <kevin@archlinuxarm.org>
|
||||||
Date: Tue, 2 Feb 2021 13:58:59 -0700
|
Date: Tue, 2 Feb 2021 13:58:59 -0700
|
||||||
Subject: [PATCH 2/3] Run blink bindings generation single threaded
|
Subject: [PATCH 2/2] Run blink bindings generation single threaded
|
||||||
|
|
||||||
When not single threaded this process will eat all the RAM.
|
When not single threaded this process will eat all the RAM.
|
||||||
---
|
---
|
||||||
|
@ -9,7 +9,7 @@ When not single threaded this process will eat all the RAM.
|
||||||
1 file changed, 1 insertion(+)
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
diff --git a/chromium/third_party/blink/renderer/bindings/BUILD.gn b/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
diff --git a/chromium/third_party/blink/renderer/bindings/BUILD.gn b/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
||||||
index 30017570a13..f88e5906f23 100644
|
index 3b474c47dc7..e7787535882 100644
|
||||||
--- a/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
--- a/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
||||||
+++ b/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
+++ b/chromium/third_party/blink/renderer/bindings/BUILD.gn
|
||||||
@@ -148,6 +148,7 @@ template("generate_bindings") {
|
@@ -148,6 +148,7 @@ template("generate_bindings") {
|
||||||
|
@ -21,5 +21,5 @@ index 30017570a13..f88e5906f23 100644
|
||||||
rebase_path(web_idl_database, root_build_dir),
|
rebase_path(web_idl_database, root_build_dir),
|
||||||
"--root_src_dir",
|
"--root_src_dir",
|
||||||
--
|
--
|
||||||
2.37.0
|
2.37.3
|
||||||
|
|
||||||
|
|
|
@ -1,347 +0,0 @@
|
||||||
From 165879e6725a1546f33b1b2437669a248ffdbcea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yichao Yu <yyc1992@gmail.com>
|
|
||||||
Date: Thu, 21 Jul 2022 06:42:07 -0400
|
|
||||||
Subject: [PATCH 3/3] Backport of 16k page support on aarch64
|
|
||||||
|
|
||||||
---
|
|
||||||
.../address_space_randomization.h | 15 ++++++
|
|
||||||
.../page_allocator_constants.h | 50 +++++++++++++++++-
|
|
||||||
.../partition_address_space.cc | 6 +++
|
|
||||||
.../partition_alloc_constants.h | 5 +-
|
|
||||||
.../partition_allocator/partition_root.cc | 2 +-
|
|
||||||
.../address_space_randomization.h | 15 ++++++
|
|
||||||
.../partition_allocator/page_allocator.cc | 8 +++
|
|
||||||
.../page_allocator_constants.h | 52 ++++++++++++++++++-
|
|
||||||
.../partition_allocator/partition_alloc.cc | 2 +-
|
|
||||||
.../partition_alloc_constants.h | 5 +-
|
|
||||||
10 files changed, 152 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/chromium/base/allocator/partition_allocator/address_space_randomization.h b/chromium/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
index e77003eab25..31ac05b86f5 100644
|
|
||||||
--- a/chromium/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
+++ b/chromium/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
@@ -119,6 +119,21 @@ AslrMask(uintptr_t bits) {
|
|
||||||
return AslrAddress(0x20000000ULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ #elif defined(OS_LINUX)
|
|
||||||
+
|
|
||||||
+ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on
|
|
||||||
+ // page size and number of levels of translation pages used. We use
|
|
||||||
+ // 39-bit as base as all setups should support this, lowered to 38-bit
|
|
||||||
+ // as ASLROffset() could cause a carry.
|
|
||||||
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t
|
|
||||||
+ ASLRMask() {
|
|
||||||
+ return AslrMask(38);
|
|
||||||
+ }
|
|
||||||
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t
|
|
||||||
+ ASLROffset() {
|
|
||||||
+ return AslrAddress(0x1000000000ULL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
|
|
||||||
// ARM64 on Linux has 39-bit user space. Use 38 bits since ASLROffset()
|
|
||||||
diff --git a/chromium/base/allocator/partition_allocator/page_allocator_constants.h b/chromium/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
index f6f19e41611..200903d3342 100644
|
|
||||||
--- a/chromium/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
+++ b/chromium/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
@@ -24,6 +24,31 @@
|
|
||||||
// elimination.
|
|
||||||
#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
|
|
||||||
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+// This should work for all POSIX (if needed), but currently all other
|
|
||||||
+// supported OS/architecture combinations use either hard-coded values
|
|
||||||
+// (such as x86) or have means to determine these values without needing
|
|
||||||
+// atomics (such as macOS on arm64).
|
|
||||||
+
|
|
||||||
+// Page allocator constants are run-time constant
|
|
||||||
+#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
|
|
||||||
+
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#include <atomic>
|
|
||||||
+
|
|
||||||
+namespace base::internal {
|
|
||||||
+
|
|
||||||
+// Holds the current page size and shift, where size = 1 << shift
|
|
||||||
+// Use PageAllocationGranularity(), PageAllocationGranularityShift()
|
|
||||||
+// to initialize and retrieve these values safely.
|
|
||||||
+struct PageCharacteristics {
|
|
||||||
+ std::atomic<int> size;
|
|
||||||
+ std::atomic<int> shift;
|
|
||||||
+};
|
|
||||||
+extern PageCharacteristics page_characteristics;
|
|
||||||
+
|
|
||||||
+} // namespace partition_alloc::internal
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
|
|
||||||
// When defined, page size constants are fixed at compile time. When not
|
|
||||||
@@ -38,6 +63,10 @@
|
|
||||||
|
|
||||||
namespace base {
|
|
||||||
|
|
||||||
+// Forward declaration, implementation below
|
|
||||||
+PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
+PageAllocationGranularity();
|
|
||||||
+
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
PageAllocationGranularityShift() {
|
|
||||||
#if defined(OS_WIN) || defined(ARCH_CPU_PPC64)
|
|
||||||
@@ -50,6 +79,15 @@ PageAllocationGranularityShift() {
|
|
||||||
return 14; // 16kB
|
|
||||||
#elif defined(OS_APPLE) && defined(ARCH_CPU_64_BITS)
|
|
||||||
return vm_page_shift;
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16)
|
|
||||||
+ // page sizes. Retrieve from or initialize cache.
|
|
||||||
+ int shift = internal::page_characteristics.shift.load(std::memory_order_relaxed);
|
|
||||||
+ if (UNLIKELY(shift == 0)) {
|
|
||||||
+ shift = __builtin_ctz((int)PageAllocationGranularity());
|
|
||||||
+ internal::page_characteristics.shift.store(shift, std::memory_order_relaxed);
|
|
||||||
+ }
|
|
||||||
+ return shift;
|
|
||||||
#else
|
|
||||||
return 12; // 4kB
|
|
||||||
#endif
|
|
||||||
@@ -61,6 +99,15 @@ PageAllocationGranularity() {
|
|
||||||
// This is literally equivalent to |1 << PageAllocationGranularityShift()|
|
|
||||||
// below, but was separated out for OS_APPLE to avoid << on a non-constexpr.
|
|
||||||
return vm_page_size;
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or
|
|
||||||
+ // initialize cache.
|
|
||||||
+ int size = internal::page_characteristics.size.load(std::memory_order_relaxed);
|
|
||||||
+ if (UNLIKELY(size == 0)) {
|
|
||||||
+ size = getpagesize();
|
|
||||||
+ internal::page_characteristics.size.store(size, std::memory_order_relaxed);
|
|
||||||
+ }
|
|
||||||
+ return size;
|
|
||||||
#else
|
|
||||||
return 1ULL << PageAllocationGranularityShift();
|
|
||||||
#endif
|
|
||||||
@@ -90,7 +137,8 @@ SystemPageShift() {
|
|
||||||
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
SystemPageSize() {
|
|
||||||
-#if defined(OS_APPLE) && defined(ARCH_CPU_64_BITS)
|
|
||||||
+#if (defined(OS_APPLE) && defined(ARCH_CPU_64_BITS)) || \
|
|
||||||
+ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64))
|
|
||||||
// This is literally equivalent to |1 << SystemPageShift()| below, but was
|
|
||||||
// separated out for 64-bit OS_APPLE to avoid << on a non-constexpr.
|
|
||||||
return PageAllocationGranularity();
|
|
||||||
diff --git a/chromium/base/allocator/partition_allocator/partition_address_space.cc b/chromium/base/allocator/partition_allocator/partition_address_space.cc
|
|
||||||
index ee6294d8f55..3c9e4f47d4c 100644
|
|
||||||
--- a/chromium/base/allocator/partition_allocator/partition_address_space.cc
|
|
||||||
+++ b/chromium/base/allocator/partition_allocator/partition_address_space.cc
|
|
||||||
@@ -97,6 +97,12 @@ void PartitionAddressSpace::UninitForTesting() {
|
|
||||||
internal::AddressPoolManager::GetInstance()->ResetForTesting();
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+
|
|
||||||
+PageCharacteristics page_characteristics;
|
|
||||||
+
|
|
||||||
+#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+
|
|
||||||
#endif // defined(PA_HAS_64_BITS_POINTERS)
|
|
||||||
|
|
||||||
} // namespace internal
|
|
||||||
diff --git a/chromium/base/allocator/partition_allocator/partition_alloc_constants.h b/chromium/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
index 1eeac4993a5..61bfc4f4b95 100644
|
|
||||||
--- a/chromium/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
+++ b/chromium/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
@@ -47,10 +47,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
PartitionPageShift() {
|
|
||||||
return 18; // 256 KiB
|
|
||||||
}
|
|
||||||
-#elif defined(OS_APPLE) && defined(ARCH_CPU_64_BITS)
|
|
||||||
+#elif (defined(OS_APPLE) && defined(ARCH_CPU_64_BITS)) || \
|
|
||||||
+ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64))
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
PartitionPageShift() {
|
|
||||||
- return vm_page_shift + 2;
|
|
||||||
+ return PageAllocationGranularityShift() + 2;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
diff --git a/chromium/base/allocator/partition_allocator/partition_root.cc b/chromium/base/allocator/partition_allocator/partition_root.cc
|
|
||||||
index 37a190f371d..a268c74f62d 100644
|
|
||||||
--- a/chromium/base/allocator/partition_allocator/partition_root.cc
|
|
||||||
+++ b/chromium/base/allocator/partition_allocator/partition_root.cc
|
|
||||||
@@ -182,7 +182,7 @@ static size_t PartitionPurgeSlotSpan(
|
|
||||||
constexpr size_t kMaxSlotCount =
|
|
||||||
(PartitionPageSize() * kMaxPartitionPagesPerRegularSlotSpan) /
|
|
||||||
SystemPageSize();
|
|
||||||
-#elif defined(OS_APPLE)
|
|
||||||
+#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64))
|
|
||||||
// It's better for slot_usage to be stack-allocated and fixed-size, which
|
|
||||||
// demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is
|
|
||||||
// always SystemPageSize() << 2, so regardless of what the run time page size
|
|
||||||
diff --git a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
index 28c8271fd68..3957e0cdf76 100644
|
|
||||||
--- a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
+++ b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/address_space_randomization.h
|
|
||||||
@@ -120,6 +120,21 @@ AslrMask(uintptr_t bits) {
|
|
||||||
return AslrAddress(0x20000000ULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ #elif defined(OS_LINUX)
|
|
||||||
+
|
|
||||||
+ // Linux on arm64 can use 39, 42, 48, or 52-bit user space, depending on
|
|
||||||
+ // page size and number of levels of translation pages used. We use
|
|
||||||
+ // 39-bit as base as all setups should support this, lowered to 38-bit
|
|
||||||
+ // as ASLROffset() could cause a carry.
|
|
||||||
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t
|
|
||||||
+ ASLRMask() {
|
|
||||||
+ return AslrMask(38);
|
|
||||||
+ }
|
|
||||||
+ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE uintptr_t
|
|
||||||
+ ASLROffset() {
|
|
||||||
+ return AslrAddress(0x1000000000ULL);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
|
|
||||||
// ARM64 on Linux has 39-bit user space. Use 38 bits since kASLROffset
|
|
||||||
diff --git a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc
|
|
||||||
index e1cf290a66f..c5386a7c564 100644
|
|
||||||
--- a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc
|
|
||||||
+++ b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc
|
|
||||||
@@ -255,5 +255,13 @@ uint32_t GetAllocPageErrorCode() {
|
|
||||||
return s_allocPageErrorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+
|
|
||||||
+namespace internal {
|
|
||||||
+PageCharacteristics page_characteristics;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+#endif // defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+
|
|
||||||
} // namespace base
|
|
||||||
} // namespace pdfium
|
|
||||||
diff --git a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
index fdc65ac47b7..f826308839d 100644
|
|
||||||
--- a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
+++ b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_constants.h
|
|
||||||
@@ -24,6 +24,31 @@
|
|
||||||
// elimination.
|
|
||||||
#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
|
|
||||||
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+// This should work for all POSIX (if needed), but currently all other
|
|
||||||
+// supported OS/architecture combinations use either hard-coded values
|
|
||||||
+// (such as x86) or have means to determine these values without needing
|
|
||||||
+// atomics (such as macOS on arm64).
|
|
||||||
+
|
|
||||||
+// Page allocator constants are run-time constant
|
|
||||||
+#define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const))
|
|
||||||
+
|
|
||||||
+#include <unistd.h>
|
|
||||||
+#include <atomic>
|
|
||||||
+
|
|
||||||
+namespace pdfium::base::internal {
|
|
||||||
+
|
|
||||||
+// Holds the current page size and shift, where size = 1 << shift
|
|
||||||
+// Use PageAllocationGranularity(), PageAllocationGranularityShift()
|
|
||||||
+// to initialize and retrieve these values safely.
|
|
||||||
+struct PageCharacteristics {
|
|
||||||
+ std::atomic<int> size;
|
|
||||||
+ std::atomic<int> shift;
|
|
||||||
+};
|
|
||||||
+extern PageCharacteristics page_characteristics;
|
|
||||||
+
|
|
||||||
+} // namespace base::internal
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
|
|
||||||
// When defined, page size constants are fixed at compile time. When not
|
|
||||||
@@ -37,11 +62,18 @@
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace pdfium {
|
|
||||||
+
|
|
||||||
+namespace base {
|
|
||||||
+// Forward declaration, implementation below
|
|
||||||
+PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
+PageAllocationGranularity();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
#if !defined(OS_APPLE)
|
|
||||||
|
|
||||||
-constexpr ALWAYS_INLINE int PageAllocationGranularityShift() {
|
|
||||||
+PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int PageAllocationGranularityShift() {
|
|
||||||
#if defined(OS_WIN) || defined(ARCH_CPU_PPC64)
|
|
||||||
// Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page
|
|
||||||
// sizes. Since 64kB is the de facto standard on the platform and binaries
|
|
||||||
@@ -50,6 +82,15 @@ constexpr ALWAYS_INLINE int PageAllocationGranularityShift() {
|
|
||||||
return 16; // 64kB
|
|
||||||
#elif defined(_MIPS_ARCH_LOONGSON)
|
|
||||||
return 14; // 16kB
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+ // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16)
|
|
||||||
+ // page sizes. Retrieve from or initialize cache.
|
|
||||||
+ int shift = base::internal::page_characteristics.shift.load(std::memory_order_relaxed);
|
|
||||||
+ if (UNLIKELY(shift == 0)) {
|
|
||||||
+ shift = __builtin_ctz((int)base::PageAllocationGranularity());
|
|
||||||
+ base::internal::page_characteristics.shift.store(shift, std::memory_order_relaxed);
|
|
||||||
+ }
|
|
||||||
+ return shift;
|
|
||||||
#else
|
|
||||||
return 12; // 4kB
|
|
||||||
#endif
|
|
||||||
@@ -65,6 +106,15 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE size_t
|
|
||||||
PageAllocationGranularity() {
|
|
||||||
#if defined(OS_APPLE)
|
|
||||||
return vm_page_size;
|
|
||||||
+#elif defined(OS_LINUX) && defined(ARCH_CPU_ARM64)
|
|
||||||
+ // arm64 supports 4kb, 16kb, and 64kb page sizes. Retrieve from or
|
|
||||||
+ // initialize cache.
|
|
||||||
+ int size = internal::page_characteristics.size.load(std::memory_order_relaxed);
|
|
||||||
+ if (UNLIKELY(size == 0)) {
|
|
||||||
+ size = getpagesize();
|
|
||||||
+ internal::page_characteristics.size.store(size, std::memory_order_relaxed);
|
|
||||||
+ }
|
|
||||||
+ return size;
|
|
||||||
#else
|
|
||||||
return 1ULL << PageAllocationGranularityShift();
|
|
||||||
#endif
|
|
||||||
diff --git a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc
|
|
||||||
index 2e5e87fa7e6..89b9f6217a6 100644
|
|
||||||
--- a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc
|
|
||||||
+++ b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc.cc
|
|
||||||
@@ -486,7 +486,7 @@ static size_t PartitionPurgePage(internal::PartitionPage* page, bool discard) {
|
|
||||||
#if defined(PAGE_ALLOCATOR_CONSTANTS_ARE_CONSTEXPR)
|
|
||||||
constexpr size_t kMaxSlotCount =
|
|
||||||
(PartitionPageSize() * kMaxPartitionPagesPerSlotSpan) / SystemPageSize();
|
|
||||||
-#elif defined(OS_APPLE)
|
|
||||||
+#elif defined(OS_APPLE) || (defined(OS_LINUX) && defined(ARCH_CPU_ARM64))
|
|
||||||
// It's better for slot_usage to be stack-allocated and fixed-size, which
|
|
||||||
// demands that its size be constexpr. On OS_APPLE, PartitionPageSize() is
|
|
||||||
// always SystemPageSize() << 2, so regardless of what the run time page size
|
|
||||||
diff --git a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
index e3bcf5a9933..1dd3d429f69 100644
|
|
||||||
--- a/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
+++ b/chromium/third_party/pdfium/third_party/base/allocator/partition_allocator/partition_alloc_constants.h
|
|
||||||
@@ -49,10 +49,11 @@ PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int
|
|
||||||
PartitionPageShift() {
|
|
||||||
return 18; // 256 KiB
|
|
||||||
}
|
|
||||||
-#elif defined(OS_APPLE)
|
|
||||||
+#elif defined(OS_APPLE) || \
|
|
||||||
+ (defined(OS_LINUX) && defined(ARCH_CPU_ARM64))
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int
|
|
||||||
PartitionPageShift() {
|
|
||||||
- return vm_page_shift + 2;
|
|
||||||
+ return PageAllocationGranularityShift() + 2;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR ALWAYS_INLINE int
|
|
||||||
--
|
|
||||||
2.37.0
|
|
||||||
|
|
|
@ -26,12 +26,10 @@ groups=(qt6)
|
||||||
_pkgfn=${pkgname/6-/}-everywhere-src-$_qtver
|
_pkgfn=${pkgname/6-/}-everywhere-src-$_qtver
|
||||||
source=(https://download.qt.io/official_releases/qt/${pkgver%.*}/$_qtver/submodules/$_pkgfn.tar.xz
|
source=(https://download.qt.io/official_releases/qt/${pkgver%.*}/$_qtver/submodules/$_pkgfn.tar.xz
|
||||||
0001-ARM-toolchain-fixes.patch
|
0001-ARM-toolchain-fixes.patch
|
||||||
0002-Run-blink-bindings-generation-single-threaded.patch
|
0002-Run-blink-bindings-generation-single-threaded.patch)
|
||||||
0003-Backport-of-16k-page-support-on-aarch64.patch)
|
|
||||||
sha256sums=('662ae9ec599b00e902e2c2751ae4977fa95bedf1b035033547ea1b1b69e75303'
|
sha256sums=('662ae9ec599b00e902e2c2751ae4977fa95bedf1b035033547ea1b1b69e75303'
|
||||||
'170557c0d13ceb518002f9b76b4135efc1721024138aa59b9d08864fe220510d'
|
'772aeba76d16387e28ef629285965109a4bfaa02ca2dd466e9526fe2030773ec'
|
||||||
'3b1b9aa13a6f805a73b84347f27bf68fed19f3c1d3e474b6f6e4a05e8aee4095'
|
'eff4ebf2e714185ef6e36e30c8d2158da6b41a46e3168d06472d35f6c9977aaf')
|
||||||
'70c5d0f8b6b5dd1883dbd55818b4144c4ffb2a346325c3441fdacf6ffb3db8a9')
|
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
cd $_pkgfn
|
cd $_pkgfn
|
||||||
|
@ -43,7 +41,6 @@ prepare() {
|
||||||
cd "$srcdir/$_pkgfn/src/3rdparty"
|
cd "$srcdir/$_pkgfn/src/3rdparty"
|
||||||
patch -p1 -i ${srcdir}/0001-ARM-toolchain-fixes.patch
|
patch -p1 -i ${srcdir}/0001-ARM-toolchain-fixes.patch
|
||||||
patch -p1 -i ${srcdir}/0002-Run-blink-bindings-generation-single-threaded.patch
|
patch -p1 -i ${srcdir}/0002-Run-blink-bindings-generation-single-threaded.patch
|
||||||
patch -p1 -i ${srcdir}/0003-Backport-of-16k-page-support-on-aarch64.patch
|
|
||||||
}
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
|
|
Loading…
Reference in a new issue