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

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: . 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 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 1042
1043 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) { 1043 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) {
1044 std::vector<EnabledStateObserver*>::iterator it = 1044 std::vector<EnabledStateObserver*>::iterator it =
1045 std::find(enabled_state_observer_list_.begin(), 1045 std::find(enabled_state_observer_list_.begin(),
1046 enabled_state_observer_list_.end(), 1046 enabled_state_observer_list_.end(),
1047 listener); 1047 listener);
1048 if (it != enabled_state_observer_list_.end()) 1048 if (it != enabled_state_observer_list_.end())
1049 enabled_state_observer_list_.erase(it); 1049 enabled_state_observer_list_.erase(it);
1050 } 1050 }
1051 1051
1052 bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const {
1053 std::vector<EnabledStateObserver*>::const_iterator it =
1054 std::find(enabled_state_observer_list_.begin(),
1055 enabled_state_observer_list_.end(),
1056 listener);
1057 return it != enabled_state_observer_list_.end();
1058 }
1059
1052 float TraceLog::GetBufferPercentFull() const { 1060 float TraceLog::GetBufferPercentFull() const {
1053 return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize); 1061 return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize);
1054 } 1062 }
1055 1063
1056 void TraceLog::SetNotificationCallback( 1064 void TraceLog::SetNotificationCallback(
1057 const TraceLog::NotificationCallback& cb) { 1065 const TraceLog::NotificationCallback& cb) {
1058 AutoLock lock(lock_); 1066 AutoLock lock(lock_);
1059 notification_callback_ = cb; 1067 notification_callback_ = cb;
1060 } 1068 }
1061 1069
1062 TraceBuffer* TraceLog::GetTraceBuffer() { 1070 TraceBuffer* TraceLog::GetTraceBuffer() {
1063 if (trace_options_ & RECORD_CONTINUOUSLY) 1071 if (trace_options_ & RECORD_CONTINUOUSLY)
1064 return new TraceBufferRingBuffer(); 1072 return new TraceBufferRingBuffer();
1065 else if (trace_options_ & ECHO_TO_VLOG) 1073 else if (trace_options_ & ECHO_TO_VLOG)
1066 return new TraceBufferDiscardsEvents(); 1074 return new TraceBufferDiscardsEvents();
1067 return new TraceBufferVector(); 1075 return new TraceBufferVector();
1068 } 1076 }
1069 1077
1070 void TraceLog::SetEventCallback(EventCallback cb) { 1078 void TraceLog::SetEventCallback(EventCallback cb) {
1071 AutoLock lock(lock_); 1079 AutoLock lock(lock_);
1072 event_callback_ = cb; 1080 event_callback_ = cb;
1073 }; 1081 };
1074 1082
1075 void TraceLog::Flush(const TraceLog::OutputCallback& cb) { 1083 void TraceLog::Flush(const TraceLog::OutputCallback& cb) {
1084 // Ignore memory allocations from here down.
1085 INTERNAL_TRACE_MEMORY(TRACE_DISABLED_BY_DEFAULT("memory"),
1086 TRACE_MEMORY_IGNORE);
1076 scoped_ptr<TraceBuffer> previous_logged_events; 1087 scoped_ptr<TraceBuffer> previous_logged_events;
1077 { 1088 {
1078 AutoLock lock(lock_); 1089 AutoLock lock(lock_);
1079 previous_logged_events.swap(logged_events_); 1090 previous_logged_events.swap(logged_events_);
1080 logged_events_.reset(GetTraceBuffer()); 1091 logged_events_.reset(GetTraceBuffer());
1081 } // release lock 1092 } // release lock
1082 1093
1083 while (previous_logged_events->HasMoreEvents()) { 1094 while (previous_logged_events->HasMoreEvents()) {
1084 scoped_refptr<RefCountedString> json_events_str_ptr = 1095 scoped_refptr<RefCountedString> json_events_str_ptr =
1085 new RefCountedString(); 1096 new RefCountedString();
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1547 0, // num_args 1558 0, // num_args
1548 NULL, // arg_names 1559 NULL, // arg_names
1549 NULL, // arg_types 1560 NULL, // arg_types
1550 NULL, // arg_values 1561 NULL, // arg_values
1551 NULL, // convertable values 1562 NULL, // convertable values
1552 TRACE_EVENT_FLAG_NONE); // flags 1563 TRACE_EVENT_FLAG_NONE); // flags
1553 } 1564 }
1554 } 1565 }
1555 1566
1556 } // namespace trace_event_internal 1567 } // namespace trace_event_internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698