| Index: src/spaces.cc
 | 
| diff --git a/src/spaces.cc b/src/spaces.cc
 | 
| index bc1d7b09ccaa97751c50e1083c3067340a1a93ab..d8d92efa86402e8176fcfead4b16d9e3feef83fe 100644
 | 
| --- a/src/spaces.cc
 | 
| +++ b/src/spaces.cc
 | 
| @@ -448,6 +448,7 @@ MemoryChunk* MemoryChunk::Initialize(Heap* heap,
 | 
|    chunk->slots_buffer_ = NULL;
 | 
|    chunk->skip_list_ = NULL;
 | 
|    chunk->write_barrier_counter_ = kWriteBarrierCounterGranularity;
 | 
| +  chunk->high_water_mark_ = area_start - base;
 | 
|    chunk->ResetLiveBytes();
 | 
|    Bitmap::Clear(chunk);
 | 
|    chunk->initialize_scan_on_scavenge(false);
 | 
| @@ -820,6 +821,18 @@ void PagedSpace::TearDown() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +size_t PagedSpace::CommittedPhysicalMemory() {
 | 
| +  if (!VirtualMemory::HasLazyCommits()) return CommittedMemory();
 | 
| +  MemoryChunk::UpdateHighWaterMark(allocation_info_.top);
 | 
| +  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());
 | 
| @@ -1173,6 +1186,7 @@ void NewSpace::Shrink() {
 | 
|  
 | 
|  
 | 
|  void NewSpace::UpdateAllocationInfo() {
 | 
| +  MemoryChunk::UpdateHighWaterMark(allocation_info_.top);
 | 
|    allocation_info_.top = to_space_.page_low();
 | 
|    allocation_info_.limit = to_space_.page_high();
 | 
|  
 | 
| @@ -1385,6 +1399,17 @@ 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;
 | 
| @@ -1817,6 +1842,17 @@ void NewSpace::RecordPromotion(HeapObject* obj) {
 | 
|    promoted_histogram_[type].increment_bytes(obj->Size());
 | 
|  }
 | 
|  
 | 
| +
 | 
| +size_t NewSpace::CommittedPhysicalMemory() {
 | 
| +  if (!VirtualMemory::HasLazyCommits()) return CommittedMemory();
 | 
| +  MemoryChunk::UpdateHighWaterMark(allocation_info_.top);
 | 
| +  size_t size = to_space_.CommittedPhysicalMemory();
 | 
| +  if (from_space_.is_committed()) {
 | 
| +    size += from_space_.CommittedPhysicalMemory();
 | 
| +  }
 | 
| +  return size;
 | 
| +}
 | 
| +
 | 
|  // -----------------------------------------------------------------------------
 | 
|  // Free lists for old object spaces implementation
 | 
|  
 | 
| @@ -2691,6 +2727,18 @@ MaybeObject* LargeObjectSpace::AllocateRaw(int object_size,
 | 
|  }
 | 
|  
 | 
|  
 | 
| +size_t LargeObjectSpace::CommittedPhysicalMemory() {
 | 
| +  if (!VirtualMemory::HasLazyCommits()) return CommittedMemory();
 | 
| +  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);
 | 
| 
 |