OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/common/host_discardable_shared_memory_manager.h" | 5 #include "content/common/host_discardable_shared_memory_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
173 for (const auto& process_entry : processes_) { | 173 for (const auto& process_entry : processes_) { |
174 const int child_process_id = process_entry.first; | 174 const int child_process_id = process_entry.first; |
175 const MemorySegmentMap& process_segments = process_entry.second; | 175 const MemorySegmentMap& process_segments = process_entry.second; |
176 for (const auto& segment_entry : process_segments) { | 176 for (const auto& segment_entry : process_segments) { |
177 const int segment_id = segment_entry.first; | 177 const int segment_id = segment_entry.first; |
178 const MemorySegment* segment = segment_entry.second.get(); | 178 const MemorySegment* segment = segment_entry.second.get(); |
179 std::string dump_name = base::StringPrintf( | 179 std::string dump_name = base::StringPrintf( |
180 "discardable/process_%x/segment_%d", child_process_id, segment_id); | 180 "discardable/process_%x/segment_%d", child_process_id, segment_id); |
181 base::trace_event::MemoryAllocatorDump* dump = | 181 base::trace_event::MemoryAllocatorDump* dump = |
182 pmd->CreateAllocatorDump(dump_name); | 182 pmd->CreateAllocatorDump(dump_name); |
183 | |
184 const size_t mapped_size = segment->memory()->mapped_size(); | |
reveman
2015/10/01 10:34:40
fyi: mapped_size() being lower case means it's a c
ssid
2015/10/01 14:08:46
Added only because of the line sizes. don't really
| |
183 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, | 185 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
184 base::trace_event::MemoryAllocatorDump::kUnitsBytes, | 186 base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
185 segment->memory()->mapped_size()); | 187 mapped_size); |
188 | |
189 // Host can only tell if whole segment is locked or not. | |
190 dump->AddScalar("locked_size", | |
191 base::trace_event::MemoryAllocatorDump::kUnitsBytes, | |
192 segment->memory()->IsMemoryLocked() ? mapped_size : 0u); | |
186 | 193 |
187 // Create the cross-process ownership edge. If the child creates a | 194 // Create the cross-process ownership edge. If the child creates a |
188 // corresponding dump for the same segment, this will avoid to | 195 // corresponding dump for the same segment, this will avoid to |
189 // double-count them in tracing. If, instead, no other process will emit a | 196 // double-count them in tracing. If, instead, no other process will emit a |
190 // dump with the same guid, the segment will be accounted to the browser. | 197 // dump with the same guid, the segment will be accounted to the browser. |
191 const uint64 child_tracing_process_id = | 198 const uint64 child_tracing_process_id = |
192 ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId( | 199 ChildProcessHostImpl::ChildProcessUniqueIdToTracingProcessId( |
193 child_process_id); | 200 child_process_id); |
194 base::trace_event::MemoryAllocatorDumpGuid shared_segment_guid = | 201 base::trace_event::MemoryAllocatorDumpGuid shared_segment_guid = |
195 DiscardableSharedMemoryHeap::GetSegmentGUIDForTracing( | 202 DiscardableSharedMemoryHeap::GetSegmentGUIDForTracing( |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
466 | 473 |
467 enforce_memory_policy_pending_ = true; | 474 enforce_memory_policy_pending_ = true; |
468 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 475 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
469 FROM_HERE, | 476 FROM_HERE, |
470 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, | 477 base::Bind(&HostDiscardableSharedMemoryManager::EnforceMemoryPolicy, |
471 weak_ptr_factory_.GetWeakPtr()), | 478 weak_ptr_factory_.GetWeakPtr()), |
472 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); | 479 base::TimeDelta::FromMilliseconds(kEnforceMemoryPolicyDelayMs)); |
473 } | 480 } |
474 | 481 |
475 } // namespace content | 482 } // namespace content |
OLD | NEW |