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
-~----------~----~----~----~------~----~------~--~---

Reply via email to