Revert r12625 due to sandbox incompatibility.
authormstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 1 Oct 2012 12:11:06 +0000 (12:11 +0000)
committermstarzinger@chromium.org <mstarzinger@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 1 Oct 2012 12:11:06 +0000 (12:11 +0000)
Original message: Implement committed physical memory stats for Linux.
This had to be reverted because it crashes when compiled into Chromium
due to the sandbox not allowing the mincore call.

R=verwaest@chromium.org
BUG=v8:2191

Review URL: https://codereview.chromium.org/11023010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12640 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

15 files changed:
include/v8.h
src/api.cc
src/heap.cc
src/heap.h
src/platform-cygwin.cc
src/platform-freebsd.cc
src/platform-linux.cc
src/platform-macos.cc
src/platform-nullos.cc
src/platform-openbsd.cc
src/platform-solaris.cc
src/platform-win32.cc
src/platform.h
src/spaces.cc
src/spaces.h

index 72558d0..92d928b 100644 (file)
@@ -2766,7 +2766,6 @@ class V8EXPORT HeapStatistics {
   HeapStatistics();
   size_t total_heap_size() { return total_heap_size_; }
   size_t total_heap_size_executable() { return total_heap_size_executable_; }
-  size_t total_physical_size() { return total_physical_size_; }
   size_t used_heap_size() { return used_heap_size_; }
   size_t heap_size_limit() { return heap_size_limit_; }
 
@@ -2775,15 +2774,11 @@ class V8EXPORT HeapStatistics {
   void set_total_heap_size_executable(size_t size) {
     total_heap_size_executable_ = size;
   }
-  void set_total_physical_size(size_t size) {
-    total_physical_size_ = size;
-  }
   void set_used_heap_size(size_t size) { used_heap_size_ = size; }
   void set_heap_size_limit(size_t size) { heap_size_limit_ = size; }
 
   size_t total_heap_size_;
   size_t total_heap_size_executable_;
-  size_t total_physical_size_;
   size_t used_heap_size_;
   size_t heap_size_limit_;
 
index 74e0a0b..dcadf52 100644 (file)
@@ -4306,7 +4306,6 @@ bool v8::V8::Dispose() {
 
 HeapStatistics::HeapStatistics(): total_heap_size_(0),
                                   total_heap_size_executable_(0),
-                                  total_physical_size_(0),
                                   used_heap_size_(0),
                                   heap_size_limit_(0) { }
 
@@ -4316,7 +4315,6 @@ void v8::V8::GetHeapStatistics(HeapStatistics* heap_statistics) {
     // Isolate is unitialized thus heap is not configured yet.
     heap_statistics->set_total_heap_size(0);
     heap_statistics->set_total_heap_size_executable(0);
-    heap_statistics->set_total_physical_size(0);
     heap_statistics->set_used_heap_size(0);
     heap_statistics->set_heap_size_limit(0);
     return;
@@ -4326,7 +4324,6 @@ void v8::V8::GetHeapStatistics(HeapStatistics* heap_statistics) {
   heap_statistics->set_total_heap_size(heap->CommittedMemory());
   heap_statistics->set_total_heap_size_executable(
       heap->CommittedMemoryExecutable());
-  heap_statistics->set_total_physical_size(heap->CommittedPhysicalMemory());
   heap_statistics->set_used_heap_size(heap->SizeOfObjects());
   heap_statistics->set_heap_size_limit(heap->MaxReserved());
 }
index 97524a4..1336027 100644 (file)
@@ -211,20 +211,6 @@ intptr_t Heap::CommittedMemory() {
       lo_space_->Size();
 }
 
-
-size_t Heap::CommittedPhysicalMemory() {
-  if (!HasBeenSetUp()) return 0;
-
-  return new_space_.CommittedPhysicalMemory() +
-      old_pointer_space_->CommittedPhysicalMemory() +
-      old_data_space_->CommittedPhysicalMemory() +
-      code_space_->CommittedPhysicalMemory() +
-      map_space_->CommittedPhysicalMemory() +
-      cell_space_->CommittedPhysicalMemory() +
-      lo_space_->CommittedPhysicalMemory();
-}
-
-
 intptr_t Heap::CommittedMemoryExecutable() {
   if (!HasBeenSetUp()) return 0;
 
index c759792..46ec6cf 100644 (file)
@@ -486,9 +486,6 @@ class Heap {
   // Returns the amount of executable memory currently committed for the heap.
   intptr_t CommittedMemoryExecutable();
 
-  // Returns the amount of phyical memory currently committed for the heap.
-  size_t CommittedPhysicalMemory();
-
   // Returns the available bytes in space w/o growing.
   // Heap doesn't guarantee that it can allocate an object that requires
   // all available bytes. Check MaxHeapObjectSize() instead.
index 6c59ecf..089ea38 100644 (file)
@@ -359,13 +359,6 @@ bool VirtualMemory::Guard(void* address) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() : thread_(kNoThread) {}
index 7d41f37..511759c 100644 (file)
@@ -456,13 +456,6 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   pthread_t thread_;  // Thread handle for pthread.
index f934da1..606d102 100644 (file)
@@ -701,24 +701,6 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  const size_t page_size = sysconf(_SC_PAGESIZE);
-  base = reinterpret_cast<void*>(
-      reinterpret_cast<intptr_t>(base) & ~(page_size - 1));
-  const size_t pages = (size + page_size - 1) / page_size;
-  ScopedVector<unsigned char> buffer(pages);
-  int result = mincore(base, size, buffer.start());
-  if (result) return false;
-  int resident_pages = 0;
-  for (unsigned i = 0; i < pages; ++i) {
-    resident_pages += buffer[i] & 1;
-  }
-  *physical = resident_pages * page_size;
-  return true;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() : thread_(kNoThread) {}
index 9b14d2f..a216f6e 100644 (file)
@@ -471,13 +471,6 @@ bool VirtualMemory::ReleaseRegion(void* address, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() : thread_(kNoThread) {}
index 0b2929d..679ef8e 100644 (file)
@@ -335,13 +335,6 @@ bool VirtualMemory::Guard(void* address) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() {
index 558361d..408d4dc 100644 (file)
@@ -504,13 +504,6 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() : thread_(kNoThread) {}
index 2ab3fee..4248ea2 100644 (file)
@@ -448,13 +448,6 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 class Thread::PlatformData : public Malloced {
  public:
   PlatformData() : thread_(kNoThread) {  }
index f10b46e..49463be 100644 (file)
@@ -1551,13 +1551,6 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) {
 }
 
 
-bool VirtualMemory::CommittedPhysicalSizeInRegion(
-    void* base, size_t size, size_t* physical) {
-  // TODO(alph): implement for the platform.
-  return false;
-}
-
-
 // ----------------------------------------------------------------------------
 // Win32 thread support.
 
index 5e3bdc7..f50e713 100644 (file)
@@ -429,14 +429,6 @@ class VirtualMemory {
   // and the same size it was reserved with.
   static bool ReleaseRegion(void* base, size_t size);
 
-  // Returns the size of committed memory which is currently resident
-  // in the physical memory for the region specified with base and size
-  // arguments.
-  // On success stores the committed physical memory size at the location
-  // pointed by the last argument and returns true. Returns false on failure.
-  static bool CommittedPhysicalSizeInRegion(
-      void* base, size_t size, size_t* physical);
-
  private:
   void* address_;  // Start address of the virtual memory.
   size_t size_;  // Size of the virtual memory.
index d286002..62d8263 100644 (file)
@@ -488,18 +488,6 @@ void MemoryChunk::Unlink() {
 }
 
 
-size_t MemoryChunk::CommittedPhysicalMemory() {
-  size_t physical;
-  size_t size = area_size();
-  if (VirtualMemory::CommittedPhysicalSizeInRegion(
-          area_start_, size, &physical)) {
-    return physical;
-  } else {
-    return size;
-  }
-}
-
-
 MemoryChunk* MemoryAllocator::AllocateChunk(intptr_t body_size,
                                             Executability executable,
                                             Space* owner) {
@@ -832,16 +820,6 @@ void PagedSpace::TearDown() {
 }
 
 
-size_t PagedSpace::CommittedPhysicalMemory() {
-  size_t size = 0;
-  PageIterator it(this);
-  while (it.has_next()) {
-    size += it.next()->CommittedPhysicalMemory();
-  }
-  return size;
-}
-
-
 MaybeObject* PagedSpace::FindObject(Address addr) {
   // Note: this function can only be called on precisely swept spaces.
   ASSERT(!heap()->mark_compact_collector()->in_use());
@@ -1407,17 +1385,6 @@ bool SemiSpace::Uncommit() {
 }
 
 
-size_t SemiSpace::CommittedPhysicalMemory() {
-  if (!is_committed()) return 0;
-  size_t size = 0;
-  NewSpacePageIterator it(this);
-  while (it.has_next()) {
-    size += it.next()->CommittedPhysicalMemory();
-  }
-  return size;
-}
-
-
 bool SemiSpace::GrowTo(int new_capacity) {
   if (!is_committed()) {
     if (!Commit()) return false;
@@ -2722,17 +2689,6 @@ MaybeObject* LargeObjectSpace::AllocateRaw(int object_size,
 }
 
 
-size_t LargeObjectSpace::CommittedPhysicalMemory() {
-  size_t size = 0;
-  LargePage* current = first_page_;
-  while (current != NULL) {
-    size += current->CommittedPhysicalMemory();
-    current = current->next_page();
-  }
-  return size;
-}
-
-
 // GC support
 MaybeObject* LargeObjectSpace::FindObject(Address a) {
   LargePage* page = FindPage(a);
index 4ccd788..97bcaa5 100644 (file)
@@ -653,8 +653,6 @@ class MemoryChunk {
     return static_cast<int>(area_end() - area_start());
   }
 
-  size_t CommittedPhysicalMemory();
-
  protected:
   MemoryChunk* next_chunk_;
   MemoryChunk* prev_chunk_;
@@ -1530,9 +1528,6 @@ class PagedSpace : public Space {
   // spaces this equals the capacity.
   intptr_t CommittedMemory() { return Capacity(); }
 
-  // Total amount of physical memory committed for this space.
-  size_t CommittedPhysicalMemory();
-
   // Sets the capacity, the available space and the wasted space to zero.
   // The stats are rebuilt during sweeping by adding each page to the
   // capacity and the size when it is encountered.  As free spaces are
@@ -1999,8 +1994,6 @@ class SemiSpace : public Space {
 
   static void Swap(SemiSpace* from, SemiSpace* to);
 
-  size_t CommittedPhysicalMemory();
-
  private:
   // Flips the semispace between being from-space and to-space.
   // Copies the flags into the masked positions on all pages in the space.
@@ -2198,12 +2191,6 @@ class NewSpace : public Space {
     return Capacity();
   }
 
-  size_t CommittedPhysicalMemory() {
-    return to_space_.CommittedPhysicalMemory()
-        + (from_space_.is_committed() ? from_space_.CommittedPhysicalMemory()
-                                      : 0);
-  }
-
   // Return the available bytes without growing.
   intptr_t Available() {
     return Capacity() - Size();
@@ -2571,8 +2558,6 @@ class LargeObjectSpace : public Space {
     return Size();
   }
 
-  size_t CommittedPhysicalMemory();
-
   int PageCount() {
     return page_count_;
   }