Add support for pdfium use partitionalloc on loongson platform.
Because system pagesize is 4K on general system, such as x86 etc.
But Loongson have 16K system pagesize and unable to print pages
with use print preview.
Therefore, the relevant pagesize places needs to be changed.
Also refer to:
https://chromium.googlesource.com/chromium/src/+/0752dbc988222d7edef2ef7c4e19555089c35fdf
Bug: 801045
R= palmer@chromium.org
Change-Id: Icc5ceae7b8a66be0ced1abb448a80c23fa518f34
Reviewed-on: https://pdfium-review.googlesource.com/22735
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/AUTHORS b/AUTHORS
index 4b40c55..ee6fc93 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -39,9 +39,11 @@
Robert Sesek <rsesek@chromium.org>
Sam Clegg <sbc@chromium.org>
Thomas Sepez <tsepez@chromium.org>
+Wang Qing <wangqing-hf@loongson.cn>
Collabora Ltd. <*@collabora.co.uk>
DocsCorp Pty Ltd. <*@docscorp.com>
Foxit Software Inc <*@foxitsoftware.com>
Google Inc. <*@google.com>
LG Electronics, Inc. <*@lge.com>
+Loongson Technology Corporation Limited. <*@loongson.cn>
diff --git a/third_party/base/allocator/partition_allocator/page_allocator.h b/third_party/base/allocator/partition_allocator/page_allocator.h
index be73363..aee2532 100644
--- a/third_party/base/allocator/partition_allocator/page_allocator.h
+++ b/third_party/base/allocator/partition_allocator/page_allocator.h
@@ -18,6 +18,8 @@
#if defined(OS_WIN)
static const size_t kPageAllocationGranularityShift = 16; // 64KB
+#elif defined(_MIPS_ARCH_LOONGSON)
+static const size_t kPageAllocationGranularityShift = 14; // 16KB
#else
static const size_t kPageAllocationGranularityShift = 12; // 4KB
#endif
@@ -30,7 +32,12 @@
// All Blink-supported systems have 4096 sized system pages and can handle
// permissions and commit / decommit at this granularity.
+// Loongson have 16384 sized system pages.
+#if defined(_MIPS_ARCH_LOONGSON)
+static const size_t kSystemPageSize = 16384;
+#else
static const size_t kSystemPageSize = 4096;
+#endif
static const size_t kSystemPageOffsetMask = kSystemPageSize - 1;
static const size_t kSystemPageBaseMask = ~kSystemPageOffsetMask;
diff --git a/third_party/base/allocator/partition_allocator/partition_alloc.h b/third_party/base/allocator/partition_allocator/partition_alloc.h
index 5832b9f..7e8415c 100644
--- a/third_party/base/allocator/partition_allocator/partition_alloc.h
+++ b/third_party/base/allocator/partition_allocator/partition_alloc.h
@@ -95,7 +95,11 @@
// system page of the span. For our current max slot span size of 64k and other
// constant values, we pack _all_ PartitionAllocGeneric() sizes perfectly up
// against the end of a system page.
+#if defined(_MIPS_ARCH_LOONGSON)
+static const size_t kPartitionPageShift = 16; // 64KB
+#else
static const size_t kPartitionPageShift = 14; // 16KB
+#endif
static const size_t kPartitionPageSize = 1 << kPartitionPageShift;
static const size_t kPartitionPageOffsetMask = kPartitionPageSize - 1;
static const size_t kPartitionPageBaseMask = ~kPartitionPageOffsetMask;