Commit be288cf2 authored by erik.corry@gmail.com's avatar erik.corry@gmail.com

Initially unmap one of the semispaces to reduce memory use at boot time.

Review URL: https://chromiumcodereview.appspot.com/9117035

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent ee1d0fc5
...@@ -922,14 +922,13 @@ bool NewSpace::SetUp(int reserved_semispace_capacity, ...@@ -922,14 +922,13 @@ bool NewSpace::SetUp(int reserved_semispace_capacity,
2 * heap()->ReservedSemiSpaceSize()); 2 * heap()->ReservedSemiSpaceSize());
ASSERT(IsAddressAligned(chunk_base_, 2 * reserved_semispace_capacity, 0)); ASSERT(IsAddressAligned(chunk_base_, 2 * reserved_semispace_capacity, 0));
if (!to_space_.SetUp(chunk_base_, to_space_.SetUp(chunk_base_,
initial_semispace_capacity, initial_semispace_capacity,
maximum_semispace_capacity)) { maximum_semispace_capacity);
return false; from_space_.SetUp(chunk_base_ + reserved_semispace_capacity,
} initial_semispace_capacity,
if (!from_space_.SetUp(chunk_base_ + reserved_semispace_capacity, maximum_semispace_capacity);
initial_semispace_capacity, if (!to_space_.Commit()) {
maximum_semispace_capacity)) {
return false; return false;
} }
...@@ -1162,7 +1161,7 @@ void NewSpace::Verify() { ...@@ -1162,7 +1161,7 @@ void NewSpace::Verify() {
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// SemiSpace implementation // SemiSpace implementation
bool SemiSpace::SetUp(Address start, void SemiSpace::SetUp(Address start,
int initial_capacity, int initial_capacity,
int maximum_capacity) { int maximum_capacity) {
// Creates a space in the young generation. The constructor does not // Creates a space in the young generation. The constructor does not
...@@ -1181,8 +1180,6 @@ bool SemiSpace::SetUp(Address start, ...@@ -1181,8 +1180,6 @@ bool SemiSpace::SetUp(Address start,
object_mask_ = address_mask_ | kHeapObjectTagMask; object_mask_ = address_mask_ | kHeapObjectTagMask;
object_expected_ = reinterpret_cast<uintptr_t>(start) | kHeapObjectTag; object_expected_ = reinterpret_cast<uintptr_t>(start) | kHeapObjectTag;
age_mark_ = start_; age_mark_ = start_;
return Commit();
} }
...@@ -1232,6 +1229,9 @@ bool SemiSpace::Uncommit() { ...@@ -1232,6 +1229,9 @@ bool SemiSpace::Uncommit() {
bool SemiSpace::GrowTo(int new_capacity) { bool SemiSpace::GrowTo(int new_capacity) {
if (!is_committed()) {
if (!Commit()) return false;
}
ASSERT((new_capacity & Page::kPageAlignmentMask) == 0); ASSERT((new_capacity & Page::kPageAlignmentMask) == 0);
ASSERT(new_capacity <= maximum_capacity_); ASSERT(new_capacity <= maximum_capacity_);
ASSERT(new_capacity > capacity_); ASSERT(new_capacity > capacity_);
......
...@@ -1834,7 +1834,7 @@ class SemiSpace : public Space { ...@@ -1834,7 +1834,7 @@ class SemiSpace : public Space {
current_page_(NULL) { } current_page_(NULL) { }
// Sets up the semispace using the given chunk. // Sets up the semispace using the given chunk.
bool SetUp(Address start, int initial_capacity, int maximum_capacity); void SetUp(Address start, int initial_capacity, int maximum_capacity);
// Tear down the space. Heap memory was not allocated by the space, so it // Tear down the space. Heap memory was not allocated by the space, so it
// is not deallocated here. // is not deallocated here.
......
...@@ -534,15 +534,15 @@ TEST(BootUpMemoryUse) { ...@@ -534,15 +534,15 @@ TEST(BootUpMemoryUse) {
intptr_t booted_memory = MemoryInUse(); intptr_t booted_memory = MemoryInUse();
if (sizeof(initial_memory) == 8) { if (sizeof(initial_memory) == 8) {
if (v8::internal::Snapshot::IsEnabled()) { if (v8::internal::Snapshot::IsEnabled()) {
CHECK_LE(booted_memory - initial_memory, 7654 * 1024); // 7468. CHECK_LE(booted_memory - initial_memory, 6654 * 1024); // 6444.
} else { } else {
CHECK_LE(booted_memory - initial_memory, 7777 * 1024); // 7620. CHECK_LE(booted_memory - initial_memory, 6777 * 1024); // 6596.
} }
} else { } else {
if (v8::internal::Snapshot::IsEnabled()) { if (v8::internal::Snapshot::IsEnabled()) {
CHECK_LE(booted_memory - initial_memory, 7500 * 1024); // 7380. CHECK_LE(booted_memory - initial_memory, 6500 * 1024); // 6365.
} else { } else {
CHECK_LE(booted_memory - initial_memory, 7654 * 1024); // 7448 CHECK_LE(booted_memory - initial_memory, 6654 * 1024); // 6424
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment