Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: base/debug/trace_event_impl.cc

Issue 15418002: Record Chrome trace events in tcmalloc heap profiles (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review comments 3 Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "base/debug/trace_event_impl.h" 5 #include "base/debug/trace_event_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/leak_annotations.h" 10 #include "base/debug/leak_annotations.h"
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 1044
1045 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) { 1045 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) {
1046 std::vector<EnabledStateObserver*>::iterator it = 1046 std::vector<EnabledStateObserver*>::iterator it =
1047 std::find(enabled_state_observer_list_.begin(), 1047 std::find(enabled_state_observer_list_.begin(),
1048 enabled_state_observer_list_.end(), 1048 enabled_state_observer_list_.end(),
1049 listener); 1049 listener);
1050 if (it != enabled_state_observer_list_.end()) 1050 if (it != enabled_state_observer_list_.end())
1051 enabled_state_observer_list_.erase(it); 1051 enabled_state_observer_list_.erase(it);
1052 } 1052 }
1053 1053
1054 bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const {
1055 std::vector<EnabledStateObserver*>::const_iterator it =
1056 std::find(enabled_state_observer_list_.begin(),
1057 enabled_state_observer_list_.end(),
1058 listener);
1059 return it != enabled_state_observer_list_.end();
1060 }
1061
1054 float TraceLog::GetBufferPercentFull() const { 1062 float TraceLog::GetBufferPercentFull() const {
1055 return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize); 1063 return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize);
1056 } 1064 }
1057 1065
1058 void TraceLog::SetNotificationCallback( 1066 void TraceLog::SetNotificationCallback(
1059 const TraceLog::NotificationCallback& cb) { 1067 const TraceLog::NotificationCallback& cb) {
1060 AutoLock lock(lock_); 1068 AutoLock lock(lock_);
1061 notification_callback_ = cb; 1069 notification_callback_ = cb;
1062 } 1070 }
1063 1071
1064 TraceBuffer* TraceLog::GetTraceBuffer() { 1072 TraceBuffer* TraceLog::GetTraceBuffer() {
1065 if (trace_options_ & RECORD_CONTINUOUSLY) 1073 if (trace_options_ & RECORD_CONTINUOUSLY)
1066 return new TraceBufferRingBuffer(); 1074 return new TraceBufferRingBuffer();
1067 else if (trace_options_ & ECHO_TO_VLOG) 1075 else if (trace_options_ & ECHO_TO_VLOG)
1068 return new TraceBufferDiscardsEvents(); 1076 return new TraceBufferDiscardsEvents();
1069 return new TraceBufferVector(); 1077 return new TraceBufferVector();
1070 } 1078 }
1071 1079
1072 void TraceLog::SetEventCallback(EventCallback cb) { 1080 void TraceLog::SetEventCallback(EventCallback cb) {
1073 AutoLock lock(lock_); 1081 AutoLock lock(lock_);
1074 event_callback_ = cb; 1082 event_callback_ = cb;
1075 }; 1083 };
1076 1084
1077 void TraceLog::Flush(const TraceLog::OutputCallback& cb) { 1085 void TraceLog::Flush(const TraceLog::OutputCallback& cb) {
1086 // Ignore memory allocations from here down.
1087 INTERNAL_TRACE_MEMORY(TRACE_DISABLED_BY_DEFAULT("memory"),
1088 TRACE_MEMORY_IGNORE);
1078 scoped_ptr<TraceBuffer> previous_logged_events; 1089 scoped_ptr<TraceBuffer> previous_logged_events;
1079 { 1090 {
1080 AutoLock lock(lock_); 1091 AutoLock lock(lock_);
1081 previous_logged_events.swap(logged_events_); 1092 previous_logged_events.swap(logged_events_);
1082 logged_events_.reset(GetTraceBuffer()); 1093 logged_events_.reset(GetTraceBuffer());
1083 } // release lock 1094 } // release lock
1084 1095
1085 while (previous_logged_events->HasMoreEvents()) { 1096 while (previous_logged_events->HasMoreEvents()) {
1086 scoped_refptr<RefCountedString> json_events_str_ptr = 1097 scoped_refptr<RefCountedString> json_events_str_ptr =
1087 new RefCountedString(); 1098 new RefCountedString();
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 0, // num_args 1560 0, // num_args
1550 NULL, // arg_names 1561 NULL, // arg_names
1551 NULL, // arg_types 1562 NULL, // arg_types
1552 NULL, // arg_values 1563 NULL, // arg_values
1553 NULL, // convertable values 1564 NULL, // convertable values
1554 TRACE_EVENT_FLAG_NONE); // flags 1565 TRACE_EVENT_FLAG_NONE); // flags
1555 } 1566 }
1556 } 1567 }
1557 1568
1558 } // namespace trace_event_internal 1569 } // namespace trace_event_internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698