Index: src/spaces.cc |
=================================================================== |
--- src/spaces.cc (revision 10490) |
+++ src/spaces.cc (working copy) |
@@ -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,10 @@ |
bool SemiSpace::GrowTo(int new_capacity) { |
+ if (!is_committed()) { |
+ bool ok = Commit(); |
+ if (!ok) return false; |
Vyacheslav Egorov (Chromium)
2012/01/24 15:57:37
if (!Commit()) return false;
|
+ } |
ASSERT((new_capacity & Page::kPageAlignmentMask) == 0); |
ASSERT(new_capacity <= maximum_capacity_); |
ASSERT(new_capacity > capacity_); |