PPC/S390: Disable builtin remap on P/Z linux

There is currently a bug in docker where fstat may not
return the correct device id and as a result a check under
`OS::RemapPages, stat_buf.st_dev != enclosing_region.dev`
fails, details on the bug:
https://github.com/moby/moby/issues/43512

Platform specific page sizes are also defined for kMaxPageSize
to fix compilation errors.

Change-Id: I026609329aa6432eda4f1880a0f586c0c2162461
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3601211
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Junliang Yan <junyan@redhat.com>
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Cr-Commit-Position: refs/heads/main@{#80111}
This commit is contained in:
Milad Fa 2022-04-21 16:26:51 -04:00 committed by V8 LUCI CQ
parent 1ebb9786d6
commit 0603f8a953
2 changed files with 12 additions and 2 deletions

View File

@ -311,7 +311,8 @@ class V8_BASE_EXPORT OS {
// Whether the platform supports mapping a given address in another location
// in the address space.
V8_WARN_UNUSED_RESULT static constexpr bool IsRemapPageSupported() {
#if defined(V8_OS_MACOS) || defined(V8_OS_LINUX)
#if (defined(V8_OS_MACOS) || defined(V8_OS_LINUX)) && \
!(defined(V8_TARGET_ARCH_PPC64) || defined(V8_TARGET_ARCH_S390X))
return true;
#else
return false;

View File

@ -23,8 +23,17 @@ namespace v8 {
namespace base {
#ifdef V8_TARGET_OS_WIN
// Alignemnt is constrained on Windows.
// Alignment is constrained on Windows.
constexpr size_t kMaxPageSize = 4096;
#elif V8_HOST_ARCH_PPC64
#if defined(_AIX)
// gcc might complain about overalignment (bug):
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89357
constexpr size_t kMaxPageSize = 4096;
#else
// Native PPC linux has large (64KB) physical pages.
constexpr size_t kMaxPageSize = 65536;
#endif
#else
constexpr size_t kMaxPageSize = 16384;
#endif