Revision: 2712 Author: [email protected] Date: Wed Aug 19 01:12:12 2009 Log: Temporarily revert the reduction of semispace sizes and the growth policy change.
I will put the changes back one at a time so we can see the effect of them in isolation. Also, there is a bug in the growth policy change that I will fix before putting it back again. Review URL: http://codereview.chromium.org/174050 http://code.google.com/p/v8/source/detail?r=2712 Modified: /branches/bleeding_edge/src/heap.cc /branches/bleeding_edge/src/spaces.cc /branches/bleeding_edge/src/spaces.h ======================================= --- /branches/bleeding_edge/src/heap.cc Wed Aug 19 00:30:20 2009 +++ /branches/bleeding_edge/src/heap.cc Wed Aug 19 01:12:12 2009 @@ -74,11 +74,11 @@ int Heap::old_generation_size_ = 128*MB; int Heap::initial_semispace_size_ = 128*KB; #elseif defined(V8_TARGET_ARCH_X64) -int Heap::semispace_size_ = 8*MB; +int Heap::semispace_size_ = 16*MB; int Heap::old_generation_size_ = 1*GB; int Heap::initial_semispace_size_ = 1*MB; #else -int Heap::semispace_size_ = 4*MB; +int Heap::semispace_size_ = 8*MB; int Heap::old_generation_size_ = 512*MB; int Heap::initial_semispace_size_ = 512*KB; #endif @@ -661,11 +661,11 @@ if (new_space_.Capacity() < new_space_.MaximumCapacity() && survived_since_last_expansion_ > new_space_.Capacity()) { - // Grow the size of new space if there is room to grow and enough + // Double the size of new space if there is room to grow and enough // data has survived scavenge since the last expansion. - // TODO(1240712): NewSpace::Grow has a return value which is + // TODO(1240712): NewSpace::Double has a return value which is // ignored here. - new_space_.Grow(); + new_space_.Double(); survived_since_last_expansion_ = 0; } ======================================= --- /branches/bleeding_edge/src/spaces.cc Thu Aug 13 07:58:35 2009 +++ /branches/bleeding_edge/src/spaces.cc Wed Aug 19 01:12:12 2009 @@ -952,13 +952,13 @@ } -bool NewSpace::Grow() { - ASSERT(capacity_ < maximum_capacity_); +bool NewSpace::Double() { + ASSERT(capacity_ <= maximum_capacity_ / 2); // TODO(1240712): Failure to double the from space can result in // semispaces of different sizes. In the event of that failure, the // to space doubling should be rolled back before returning false. - if (!to_space_.Grow() || !from_space_.Grow()) return false; - capacity_ = to_space_.Capacity() + from_space_.Capacity(); + if (!to_space_.Double() || !from_space_.Double()) return false; + capacity_ *= 2; allocation_info_.limit = to_space_.high(); ASSERT_SEMISPACE_ALLOCATION_INFO(allocation_info_, to_space_); return true; @@ -1080,16 +1080,11 @@ } -bool SemiSpace::Grow() { - // Commit 50% extra space but only up to maximum capacity. - int extra = RoundUp(capacity_ / 2, OS::AllocateAlignment()); - if (capacity_ + extra > maximum_capacity_) { - extra = maximum_capacity_ - capacity_; - } - if (!MemoryAllocator::CommitBlock(high(), extra, executable())) { +bool SemiSpace::Double() { + if (!MemoryAllocator::CommitBlock(high(), capacity_, executable())) { return false; } - capacity_ += extra; + capacity_ *= 2; return true; } ======================================= --- /branches/bleeding_edge/src/spaces.h Thu Aug 13 05:35:59 2009 +++ /branches/bleeding_edge/src/spaces.h Wed Aug 19 01:12:12 2009 @@ -1004,11 +1004,11 @@ // True if the space has been set up but not torn down. bool HasBeenSetup() { return start_ != NULL; } - // Grow the size of the semispace by committing extra virtual memory. + // Double the size of the semispace by committing extra virtual memory. // Assumes that the caller has checked that the semispace has not reached // its maximum capacity (and thus there is space available in the reserved // address range to grow). - bool Grow(); + bool Double(); // Returns the start address of the space. Address low() { return start_; } @@ -1050,9 +1050,6 @@ virtual void Print(); virtual void Verify(); #endif - - // Returns the current capacity of the semi space. - int Capacity() { return capacity_; } private: // The current and maximum capacity of the space. @@ -1147,9 +1144,9 @@ // Flip the pair of spaces. void Flip(); - // Grow the capacity of the semispaces. Assumes that they are not at + // Doubles the capacity of the semispaces. Assumes that they are not at // their maximum capacity. Returns a flag indicating success or failure. - bool Grow(); + bool Double(); // True if the address or object lies in the address range of either // semispace (not necessarily below the allocation pointer). --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
