[heap] Reduce regular heap object size limit to half of the page size

This CL removes PPC specific constants and makes the regular heap
object size limit a power of two.

Bug: chromium:852420
Change-Id: I5f4000f76d029d689d22112877eea124774b29d2
Reviewed-on: https://chromium-review.googlesource.com/c/1496367
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60011}
This commit is contained in:
Ulan Degenbaev 2019-03-04 13:24:44 +01:00 committed by Commit Bot
parent 438eee8493
commit 21f75f9ae1
3 changed files with 4 additions and 15 deletions

View File

@ -236,13 +236,8 @@ constexpr int kExternalAllocationSoftLimit =
// migrated from new space to large object space. Takes double alignment into // migrated from new space to large object space. Takes double alignment into
// account. // account.
// //
// Current value: Page::kAllocatableMemory (on 32-bit arch) - 512 (slack). // Current value: half of the page size.
#ifdef V8_HOST_ARCH_PPC constexpr int kMaxRegularHeapObjectSize = (1 << (kPageSizeBits - 1));
// Reduced kMaxRegularHeapObjectSize due to larger page size(64k) on ppc64le
constexpr int kMaxRegularHeapObjectSize = 327680;
#else
constexpr int kMaxRegularHeapObjectSize = 507136;
#endif
constexpr int kBitsPerByte = 8; constexpr int kBitsPerByte = 8;
constexpr int kBitsPerByteLog2 = 3; constexpr int kBitsPerByteLog2 = 3;

View File

@ -1948,7 +1948,7 @@ class V8_EXPORT_PRIVATE FreeList {
static const size_t kTinyListMax = 0x1f * kTaggedSize; static const size_t kTinyListMax = 0x1f * kTaggedSize;
static const size_t kSmallListMax = 0xff * kTaggedSize; static const size_t kSmallListMax = 0xff * kTaggedSize;
static const size_t kMediumListMax = 0x7ff * kTaggedSize; static const size_t kMediumListMax = 0x7ff * kTaggedSize;
static const size_t kLargeListMax = 0x3fff * kTaggedSize; static const size_t kLargeListMax = 0x2fff * kTaggedSize;
static const size_t kTinyAllocationMax = kTiniestListMax; static const size_t kTinyAllocationMax = kTiniestListMax;
static const size_t kSmallAllocationMax = kTinyListMax; static const size_t kSmallAllocationMax = kTinyListMax;
static const size_t kMediumAllocationMax = kSmallListMax; static const size_t kMediumAllocationMax = kSmallListMax;

View File

@ -176,13 +176,7 @@ class HashTable : public HashTableBase {
// Don't shrink a HashTable below this capacity. // Don't shrink a HashTable below this capacity.
static const int kMinShrinkCapacity = 16; static const int kMinShrinkCapacity = 16;
// Maximum length to create a regular HashTable (aka. non large object). static const int kMaxRegularCapacity = kMaxRegularHeapObjectSize / 32;
#if V8_HOST_ARCH_PPC
// Reduced kMaxRegularCapacity due to reduced kMaxRegularHeapObjectSize
static const int kMaxRegularCapacity = 16384 / 2;
#else
static const int kMaxRegularCapacity = 16384;
#endif
// Returns the index for an entry (of the key) // Returns the index for an entry (of the key)
static constexpr inline int EntryToIndex(int entry) { static constexpr inline int EntryToIndex(int entry) {