Revision: 10491
Author: [email protected]
Date: Tue Jan 24 08:00:19 2012
Log: Initially unmap one of the semispaces to reduce memory use at
boot time.
Review URL: https://chromiumcodereview.appspot.com/9117035
http://code.google.com/p/v8/source/detail?r=10491
Modified:
/branches/bleeding_edge/src/spaces.cc
/branches/bleeding_edge/src/spaces.h
/branches/bleeding_edge/test/cctest/test-mark-compact.cc
=======================================
--- /branches/bleeding_edge/src/spaces.cc Wed Jan 18 01:21:07 2012
+++ /branches/bleeding_edge/src/spaces.cc Tue Jan 24 08:00:19 2012
@@ -922,16 +922,15 @@
2 * heap()->ReservedSemiSpaceSize());
ASSERT(IsAddressAligned(chunk_base_, 2 * reserved_semispace_capacity,
0));
- if (!to_space_.SetUp(chunk_base_,
- initial_semispace_capacity,
- maximum_semispace_capacity)) {
+ to_space_.SetUp(chunk_base_,
+ initial_semispace_capacity,
+ maximum_semispace_capacity);
+ from_space_.SetUp(chunk_base_ + reserved_semispace_capacity,
+ initial_semispace_capacity,
+ maximum_semispace_capacity);
+ if (!to_space_.Commit()) {
return false;
}
- if (!from_space_.SetUp(chunk_base_ + reserved_semispace_capacity,
- initial_semispace_capacity,
- maximum_semispace_capacity)) {
- return false;
- }
start_ = chunk_base_;
address_mask_ = ~(2 * reserved_semispace_capacity - 1);
@@ -1162,7 +1161,7 @@
//
-----------------------------------------------------------------------------
// SemiSpace implementation
-bool SemiSpace::SetUp(Address start,
+void SemiSpace::SetUp(Address start,
int initial_capacity,
int maximum_capacity) {
// Creates a space in the young generation. The constructor does not
@@ -1181,8 +1180,6 @@
object_mask_ = address_mask_ | kHeapObjectTagMask;
object_expected_ = reinterpret_cast<uintptr_t>(start) | kHeapObjectTag;
age_mark_ = start_;
-
- return Commit();
}
@@ -1232,6 +1229,9 @@
bool SemiSpace::GrowTo(int new_capacity) {
+ if (!is_committed()) {
+ if (!Commit()) return false;
+ }
ASSERT((new_capacity & Page::kPageAlignmentMask) == 0);
ASSERT(new_capacity <= maximum_capacity_);
ASSERT(new_capacity > capacity_);
=======================================
--- /branches/bleeding_edge/src/spaces.h Wed Jan 18 01:21:07 2012
+++ /branches/bleeding_edge/src/spaces.h Tue Jan 24 08:00:19 2012
@@ -1834,7 +1834,7 @@
current_page_(NULL) { }
// 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
// is not deallocated here.
=======================================
--- /branches/bleeding_edge/test/cctest/test-mark-compact.cc Tue Jan 24
07:48:16 2012
+++ /branches/bleeding_edge/test/cctest/test-mark-compact.cc Tue Jan 24
08:00:19 2012
@@ -534,15 +534,15 @@
intptr_t booted_memory = MemoryInUse();
if (sizeof(initial_memory) == 8) {
if (v8::internal::Snapshot::IsEnabled()) {
- CHECK_LE(booted_memory - initial_memory, 7654 * 1024); // 7468.
+ CHECK_LE(booted_memory - initial_memory, 6654 * 1024); // 6444.
} else {
- CHECK_LE(booted_memory - initial_memory, 7777 * 1024); // 7620.
+ CHECK_LE(booted_memory - initial_memory, 6777 * 1024); // 6596.
}
} else {
if (v8::internal::Snapshot::IsEnabled()) {
- CHECK_LE(booted_memory - initial_memory, 7500 * 1024); // 7380.
+ CHECK_LE(booted_memory - initial_memory, 6500 * 1024); // 6365.
} else {
- CHECK_LE(booted_memory - initial_memory, 7654 * 1024); // 7448
+ CHECK_LE(booted_memory - initial_memory, 6654 * 1024); // 6424
}
}
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev