[heap] Decrease large object limit for regular heap objects.

Review URL: https://codereview.chromium.org/1392823003

Cr-Commit-Position: refs/heads/master@{#31217}
This commit is contained in:
hpayer 2015-10-12 09:39:10 -07:00 committed by Commit bot
parent 76bee80672
commit e887d42342
5 changed files with 23 additions and 9 deletions

View File

@ -133,7 +133,12 @@ HeapObject* HeapObjectIterator::FromCurrentPage() {
}
if (!obj->IsFiller()) {
if (obj->IsCode()) {
DCHECK_EQ(space_, space_->heap()->code_space());
DCHECK_CODEOBJECT_SIZE(obj_size, space_);
} else {
DCHECK_OBJECT_SIZE(obj_size);
}
return obj;
}
}

View File

@ -86,6 +86,9 @@ class Isolate;
#define DCHECK_OBJECT_SIZE(size) \
DCHECK((0 < size) && (size <= Page::kMaxRegularHeapObjectSize))
#define DCHECK_CODEOBJECT_SIZE(size, code_space) \
DCHECK((0 < size) && (size <= code_space->AreaSize()))
#define DCHECK_PAGE_OFFSET(offset) \
DCHECK((Page::kObjectStartOffset <= offset) && (offset <= Page::kPageSize))
@ -840,7 +843,7 @@ class Page : public MemoryChunk {
// memory. This also applies to new space allocation, since objects are never
// migrated from new space to large object space. Takes double alignment into
// account.
static const int kMaxRegularHeapObjectSize = kPageSize - kObjectStartOffset;
static const int kMaxRegularHeapObjectSize = 128 * KB * (i::kPointerSize / 4);
static const int kAllocatableMemory = kPageSize - kObjectStartOffset;

View File

@ -10048,9 +10048,14 @@ class JSArray: public JSObject {
static const int kLengthOffset = JSObject::kHeaderSize;
static const int kSize = kLengthOffset + kPointerSize;
// Note that Page::kMaxRegularHeapObjectSize puts a limit on
// permissible values (see the DCHECK in heap.cc).
static const int kInitialMaxFastElementArray = 100000;
// 128 * KB is the Page::kMaxRegularHeapObjectSize defined in spaces.h which
// we do not want to include in objects.h
// Note that Page::kMaxRegularHeapObjectSize has to be in sync with
// kInitialMaxFastElementArray which is checked in a DCHECK in heap.cc.
static const int kInitialMaxFastElementArray =
(128 * KB * (i::kPointerSize / 4) - FixedArray::kHeaderSize - kSize -
AllocationMemento::kSize) /
kPointerSize;
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(JSArray);

View File

@ -1223,15 +1223,15 @@ TEST(SerializeToplevelThreeBigStrings) {
CompileRun("a")
->ToString(CcTest::isolate()->GetCurrentContext())
.ToLocalChecked();
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), OLD_SPACE));
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), LO_SPACE));
result_str = CompileRun("b")
->ToString(CcTest::isolate()->GetCurrentContext())
.ToLocalChecked();
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), OLD_SPACE));
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), LO_SPACE));
result_str = CompileRun("c")
->ToString(CcTest::isolate()->GetCurrentContext())
.ToLocalChecked();
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), OLD_SPACE));
CHECK(heap->InSpace(*v8::Utils::OpenHandle(*result_str), LO_SPACE));
delete cache;
source_a.Dispose();

View File

@ -430,7 +430,8 @@ TEST(CompactionSpace) {
// and would thus neither grow, nor be able to allocate an object.
const int kNumObjects = 100;
const int kExpectedPages = (kNumObjects / (compaction_space->AreaSize() /
Page::kMaxRegularHeapObjectSize));
Page::kMaxRegularHeapObjectSize)) +
1;
for (int i = 0; i < kNumObjects; i++) {
compaction_space->AllocateRawUnaligned(Page::kMaxRegularHeapObjectSize)
.ToObjectChecked();