Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/glue/webkitplatformsupport_impl.h" | 5 #include "webkit/glue/webkitplatformsupport_impl.h" |
| 6 | 6 |
| 7 #if defined(OS_LINUX) | 7 #if defined(OS_LINUX) |
| 8 #include <malloc.h> | 8 #include <malloc.h> |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 662 return 0; | 662 return 0; |
| 663 } | 663 } |
| 664 | 664 |
| 665 WebKit::WebString WebKitPlatformSupportImpl::signedPublicKeyAndChallengeString( | 665 WebKit::WebString WebKitPlatformSupportImpl::signedPublicKeyAndChallengeString( |
| 666 unsigned key_size_index, | 666 unsigned key_size_index, |
| 667 const WebKit::WebString& challenge, | 667 const WebKit::WebString& challenge, |
| 668 const WebKit::WebURL& url) { | 668 const WebKit::WebURL& url) { |
| 669 return WebKit::WebString(""); | 669 return WebKit::WebString(""); |
| 670 } | 670 } |
| 671 | 671 |
| 672 static base::ProcessMetrics* CurrentProcessMetrics() { | |
| 673 using base::ProcessMetrics; | |
| 674 #if defined(OS_MACOSX) | |
| 675 static ProcessMetrics* process_metrics = | |
| 676 // The default port provider is sufficient to get data for the current | |
| 677 // process. | |
| 678 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle(), | |
| 679 NULL); | |
| 680 #else | |
| 681 static ProcessMetrics* process_metrics = | |
| 682 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle()); | |
| 683 #endif | |
| 684 DCHECK(process_metrics); | |
| 685 return process_metrics; | |
| 686 } | |
| 687 | |
| 672 #if defined(OS_LINUX) || defined(OS_ANDROID) | 688 #if defined(OS_LINUX) || defined(OS_ANDROID) |
| 673 static size_t memoryUsageMB() { | 689 static size_t memoryUsageMB() { |
| 674 struct mallinfo minfo = mallinfo(); | 690 struct mallinfo minfo = mallinfo(); |
| 675 uint64_t mem_usage = | 691 uint64_t mem_usage = |
| 676 #if defined(USE_TCMALLOC) | 692 #if defined(USE_TCMALLOC) |
| 677 minfo.uordblks | 693 minfo.uordblks |
| 678 #else | 694 #else |
| 679 (minfo.hblkhd + minfo.arena) | 695 (minfo.hblkhd + minfo.arena) |
| 680 #endif | 696 #endif |
| 681 >> 20; | 697 >> 20; |
| 682 | 698 |
| 683 v8::HeapStatistics stat; | 699 v8::HeapStatistics stat; |
| 684 v8::V8::GetHeapStatistics(&stat); | 700 v8::V8::GetHeapStatistics(&stat); |
| 685 return mem_usage + (static_cast<uint64_t>(stat.total_heap_size()) >> 20); | 701 return mem_usage + (static_cast<uint64_t>(stat.total_heap_size()) >> 20); |
| 686 } | 702 } |
| 687 #elif defined(OS_MACOSX) | |
| 688 static size_t memoryUsageMB() { | |
| 689 using base::ProcessMetrics; | |
| 690 static ProcessMetrics* process_metrics = | |
| 691 // The default port provider is sufficient to get data for the current | |
| 692 // process. | |
| 693 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle(), | |
| 694 NULL); | |
| 695 DCHECK(process_metrics); | |
| 696 return process_metrics->GetWorkingSetSize() >> 20; | |
|
ulan
2012/09/21 13:30:08
Just noticed that this is missing in the current T
yurys
2012/09/21 13:52:12
Looks like GetWorkingSetSize was deleted by mistak
| |
| 697 } | |
| 698 #else | 703 #else |
| 699 static size_t memoryUsageMB() { | 704 static size_t memoryUsageMB() { |
| 700 using base::ProcessMetrics; | 705 return CurrentProcessMetrics()->GetPagefileUsage() >> 20; |
| 701 static ProcessMetrics* process_metrics = | |
| 702 ProcessMetrics::CreateProcessMetrics(base::GetCurrentProcessHandle()); | |
| 703 DCHECK(process_metrics); | |
| 704 return process_metrics->GetPagefileUsage() >> 20; | |
| 705 } | 706 } |
| 706 #endif | 707 #endif |
| 707 | 708 |
| 708 static size_t getMemoryUsageMB(bool bypass_cache) { | 709 static size_t getMemoryUsageMB(bool bypass_cache) { |
| 709 size_t current_mem_usage = 0; | 710 size_t current_mem_usage = 0; |
| 710 MemoryUsageCache* mem_usage_cache_singleton = MemoryUsageCache::GetInstance(); | 711 MemoryUsageCache* mem_usage_cache_singleton = MemoryUsageCache::GetInstance(); |
| 711 if (!bypass_cache && | 712 if (!bypass_cache && |
| 712 mem_usage_cache_singleton->IsCachedValueValid(¤t_mem_usage)) | 713 mem_usage_cache_singleton->IsCachedValueValid(¤t_mem_usage)) |
| 713 return current_mem_usage; | 714 return current_mem_usage; |
| 714 | 715 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 741 size_t WebKitPlatformSupportImpl::highUsageDeltaMB() { | 742 size_t WebKitPlatformSupportImpl::highUsageDeltaMB() { |
| 742 // If memory usage is above highMemoryUsageMB() and memory usage increased by | 743 // If memory usage is above highMemoryUsageMB() and memory usage increased by |
| 743 // more than highUsageDeltaMB() since the last GC, then force GC. | 744 // more than highUsageDeltaMB() since the last GC, then force GC. |
| 744 // Note that this limit should be greater than the amount of memory for V8 | 745 // Note that this limit should be greater than the amount of memory for V8 |
| 745 // internal data structures that are released on GC and reallocated during JS | 746 // internal data structures that are released on GC and reallocated during JS |
| 746 // execution (about 8MB). Otherwise, it will cause too aggressive GCs. | 747 // execution (about 8MB). Otherwise, it will cause too aggressive GCs. |
| 747 return base::SysInfo::DalvikHeapSizeMB() / 8; | 748 return base::SysInfo::DalvikHeapSizeMB() / 8; |
| 748 } | 749 } |
| 749 #endif | 750 #endif |
| 750 | 751 |
| 752 bool WebKitPlatformSupportImpl::processMemorySizesInBytes( | |
| 753 size_t* private_bytes, | |
| 754 size_t* shared_bytes) { | |
| 755 return CurrentProcessMetrics()->GetMemoryBytes(private_bytes, shared_bytes); | |
| 756 } | |
| 757 | |
| 751 void WebKitPlatformSupportImpl::SuspendSharedTimer() { | 758 void WebKitPlatformSupportImpl::SuspendSharedTimer() { |
| 752 ++shared_timer_suspended_; | 759 ++shared_timer_suspended_; |
| 753 } | 760 } |
| 754 | 761 |
| 755 void WebKitPlatformSupportImpl::ResumeSharedTimer() { | 762 void WebKitPlatformSupportImpl::ResumeSharedTimer() { |
| 756 // The shared timer may have fired or been adjusted while we were suspended. | 763 // The shared timer may have fired or been adjusted while we were suspended. |
| 757 if (--shared_timer_suspended_ == 0 && !shared_timer_.IsRunning()) { | 764 if (--shared_timer_suspended_ == 0 && !shared_timer_.IsRunning()) { |
| 758 setSharedTimerFireInterval( | 765 setSharedTimerFireInterval( |
| 759 shared_timer_fire_time_ - monotonicallyIncreasingTime()); | 766 shared_timer_fire_time_ - monotonicallyIncreasingTime()); |
| 760 } | 767 } |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 773 worker_task_runner->OnWorkerRunLoopStarted(runLoop); | 780 worker_task_runner->OnWorkerRunLoopStarted(runLoop); |
| 774 } | 781 } |
| 775 | 782 |
| 776 void WebKitPlatformSupportImpl::didStopWorkerRunLoop( | 783 void WebKitPlatformSupportImpl::didStopWorkerRunLoop( |
| 777 const WebKit::WebWorkerRunLoop& runLoop) { | 784 const WebKit::WebWorkerRunLoop& runLoop) { |
| 778 WorkerTaskRunner* worker_task_runner = WorkerTaskRunner::Instance(); | 785 WorkerTaskRunner* worker_task_runner = WorkerTaskRunner::Instance(); |
| 779 worker_task_runner->OnWorkerRunLoopStopped(runLoop); | 786 worker_task_runner->OnWorkerRunLoopStopped(runLoop); |
| 780 } | 787 } |
| 781 | 788 |
| 782 } // namespace webkit_glue | 789 } // namespace webkit_glue |
| OLD | NEW |