Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "base/debug/activity_tracker.h" | 5 #include "base/debug/activity_tracker.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/debug/stack_trace.h" | 9 #include "base/debug/stack_trace.h" |
| 10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
| (...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 851 } | 851 } |
| 852 | 852 |
| 853 void GlobalActivityTracker::ReleaseUserDataMemory( | 853 void GlobalActivityTracker::ReleaseUserDataMemory( |
| 854 PersistentMemoryAllocator::Reference* reference) { | 854 PersistentMemoryAllocator::Reference* reference) { |
| 855 DCHECK(*reference); | 855 DCHECK(*reference); |
| 856 base::AutoLock autolock(user_data_allocator_lock_); | 856 base::AutoLock autolock(user_data_allocator_lock_); |
| 857 user_data_allocator_.ReleaseObjectReference(*reference); | 857 user_data_allocator_.ReleaseObjectReference(*reference); |
| 858 *reference = PersistentMemoryAllocator::kReferenceNull; | 858 *reference = PersistentMemoryAllocator::kReferenceNull; |
| 859 } | 859 } |
| 860 | 860 |
| 861 void GlobalActivityTracker::RecordLogMessage(StringPiece message) { | |
| 862 PersistentMemoryAllocator::Reference ref = | |
|
manzagop (departed)
2016/12/02 19:10:41
Wdyt of setting a max size that we'll truncate to?
bcwhite
2016/12/02 19:28:07
If it's somehow too big, the allocation will fail
manzagop (departed)
2016/12/02 20:08:09
Yeah, the worry is if it's too big then you get no
bcwhite
2016/12/02 20:16:30
Somewhat related: You should report the IsFull()
manzagop (departed)
2016/12/02 20:50:09
Thanks for the heads up! Added to the list.
| |
| 863 allocator_->Allocate(message.size() + 1, kTypeIdGlobalLogMessage); | |
|
manzagop (departed)
2016/12/02 19:10:41
The extra character is to ensure null termination,
bcwhite
2016/12/02 19:28:07
Done.
| |
| 864 char* memory = allocator_->GetAsArray<char>(ref, kTypeIdGlobalLogMessage, | |
| 865 message.size() + 1); | |
| 866 if (memory) { | |
| 867 memcpy(memory, message.data(), message.size()); | |
| 868 allocator_->MakeIterable(ref); | |
| 869 } | |
| 870 } | |
| 871 | |
| 861 GlobalActivityTracker::GlobalActivityTracker( | 872 GlobalActivityTracker::GlobalActivityTracker( |
| 862 std::unique_ptr<PersistentMemoryAllocator> allocator, | 873 std::unique_ptr<PersistentMemoryAllocator> allocator, |
| 863 int stack_depth) | 874 int stack_depth) |
| 864 : allocator_(std::move(allocator)), | 875 : allocator_(std::move(allocator)), |
| 865 stack_memory_size_(ThreadActivityTracker::SizeForStackDepth(stack_depth)), | 876 stack_memory_size_(ThreadActivityTracker::SizeForStackDepth(stack_depth)), |
| 866 this_thread_tracker_(&OnTLSDestroy), | 877 this_thread_tracker_(&OnTLSDestroy), |
| 867 thread_tracker_count_(0), | 878 thread_tracker_count_(0), |
| 868 thread_tracker_allocator_(allocator_.get(), | 879 thread_tracker_allocator_(allocator_.get(), |
| 869 kTypeIdActivityTracker, | 880 kTypeIdActivityTracker, |
| 870 kTypeIdActivityTrackerFree, | 881 kTypeIdActivityTrackerFree, |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 997 : GlobalActivityTracker::ScopedThreadActivity( | 1008 : GlobalActivityTracker::ScopedThreadActivity( |
| 998 program_counter, | 1009 program_counter, |
| 999 nullptr, | 1010 nullptr, |
| 1000 Activity::ACT_PROCESS_WAIT, | 1011 Activity::ACT_PROCESS_WAIT, |
| 1001 ActivityData::ForProcess(process->Pid()), | 1012 ActivityData::ForProcess(process->Pid()), |
| 1002 /*lock_allowed=*/true) {} | 1013 /*lock_allowed=*/true) {} |
| 1003 #endif | 1014 #endif |
| 1004 | 1015 |
| 1005 } // namespace debug | 1016 } // namespace debug |
| 1006 } // namespace base | 1017 } // namespace base |
| OLD | NEW |