From 9b4f8d1951aaeab7bfe38a1d29f47d22f1785142 Mon Sep 17 00:00:00 2001 From: bjaideep Date: Fri, 29 Jul 2016 07:25:40 -0700 Subject: [PATCH] PPC: Set CodeRange constants correctly for PPC Linux The OS page size for PPC linux is 64KB. The page size for paged spaces on PPC linux is set to 4MB. kCodeRangeAreaAlignment is set to OS page size(64KB) and kMinimumCodeRangeSize is set to the size of 3 pages (12MB). This issue was exposed with testcase test-spaces/Regress3540 which used kMinimumCodeRangeSize. R=jochen@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com BUG= LOG=N Review-Url: https://codereview.chromium.org/2187833002 Cr-Commit-Position: refs/heads/master@{#38180} --- src/globals.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/globals.h b/src/globals.h index faff717458..93d2e79731 100644 --- a/src/globals.h +++ b/src/globals.h @@ -151,6 +151,9 @@ const bool kRequiresCodeRange = true; // region. Used only for large object space. const size_t kMaximalCodeRangeSize = 256 * MB; const size_t kCodeRangeAreaAlignment = 256 * MB; +#elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX +const size_t kMaximalCodeRangeSize = 512 * MB; +const size_t kCodeRangeAreaAlignment = 64 * KB; // OS page on PPC Linux #else const size_t kMaximalCodeRangeSize = 512 * MB; const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. @@ -158,6 +161,10 @@ const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. #if V8_OS_WIN const size_t kMinimumCodeRangeSize = 4 * MB; const size_t kReservedCodeRangePages = 1; +// On PPC Linux PageSize is 4MB +#elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX +const size_t kMinimumCodeRangeSize = 12 * MB; +const size_t kReservedCodeRangePages = 0; #else const size_t kMinimumCodeRangeSize = 3 * MB; const size_t kReservedCodeRangePages = 0; @@ -171,15 +178,19 @@ const uintptr_t kUintptrAllBitsSet = 0xFFFFFFFFu; const bool kRequiresCodeRange = true; const size_t kMaximalCodeRangeSize = 256 * MB; const size_t kMinimumCodeRangeSize = 3 * MB; -const size_t kReservedCodeRangePages = 0; const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. +#elif V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC && V8_OS_LINUX +const bool kRequiresCodeRange = false; +const size_t kMaximalCodeRangeSize = 0 * MB; +const size_t kMinimumCodeRangeSize = 0 * MB; +const size_t kCodeRangeAreaAlignment = 64 * KB; // OS page on PPC Linux #else const bool kRequiresCodeRange = false; const size_t kMaximalCodeRangeSize = 0 * MB; const size_t kMinimumCodeRangeSize = 0 * MB; -const size_t kReservedCodeRangePages = 0; const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page. #endif +const size_t kReservedCodeRangePages = 0; #endif // The external allocation limit should be below 256 MB on all architectures