Chromium Code Reviews| 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_); |