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

Side by Side Diff: runtime/vm/timeline.cc

Issue 1660063002: Remove many features when building product mode (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « runtime/vm/tags.cc ('k') | runtime/vm/timeline_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include <cstdlib> 5 #include <cstdlib>
6 6
7 #include "vm/atomic.h" 7 #include "vm/atomic.h"
8 #include "vm/isolate.h" 8 #include "vm/isolate.h"
9 #include "vm/json_stream.h" 9 #include "vm/json_stream.h"
10 #include "vm/lockers.h" 10 #include "vm/lockers.h"
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 413
414 const char* TimelineEvent::GetSerializedJSON() const { 414 const char* TimelineEvent::GetSerializedJSON() const {
415 ASSERT(pre_serialized_json()); 415 ASSERT(pre_serialized_json());
416 ASSERT(arguments_length_ == 1); 416 ASSERT(arguments_length_ == 1);
417 ASSERT(arguments_ != NULL); 417 ASSERT(arguments_ != NULL);
418 return arguments_[0].value; 418 return arguments_[0].value;
419 } 419 }
420 420
421 421
422 void TimelineEvent::PrintJSON(JSONStream* stream) const { 422 void TimelineEvent::PrintJSON(JSONStream* stream) const {
423 if (!FLAG_support_service) {
424 return;
425 }
423 if (pre_serialized_json()) { 426 if (pre_serialized_json()) {
424 // Event has already been serialized into JSON- just append the 427 // Event has already been serialized into JSON- just append the
425 // raw data. 428 // raw data.
426 stream->AppendSerializedObject(GetSerializedJSON()); 429 stream->AppendSerializedObject(GetSerializedJSON());
427 return; 430 return;
428 } 431 }
429 JSONObject obj(stream); 432 JSONObject obj(stream);
430 int64_t pid = OS::ProcessId(); 433 int64_t pid = OS::ProcessId();
431 int64_t tid = OSThread::ThreadIdToIntPtr(thread_); 434 int64_t tid = OSThread::ThreadIdToIntPtr(thread_);
432 obj.AddProperty("name", label_); 435 obj.AddProperty("name", label_);
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 isolate_id_(isolate_id) { 774 isolate_id_(isolate_id) {
772 } 775 }
773 776
774 777
775 TimelineEventRecorder::TimelineEventRecorder() 778 TimelineEventRecorder::TimelineEventRecorder()
776 : async_id_(0) { 779 : async_id_(0) {
777 } 780 }
778 781
779 782
780 void TimelineEventRecorder::PrintJSONMeta(JSONArray* events) const { 783 void TimelineEventRecorder::PrintJSONMeta(JSONArray* events) const {
784 if (!FLAG_support_service) {
785 return;
786 }
781 OSThreadIterator it; 787 OSThreadIterator it;
782 while (it.HasNext()) { 788 while (it.HasNext()) {
783 OSThread* thread = it.Next(); 789 OSThread* thread = it.Next();
784 const char* thread_name = thread->name(); 790 const char* thread_name = thread->name();
785 if (thread_name == NULL) { 791 if (thread_name == NULL) {
786 // Only emit a thread name if one was set. 792 // Only emit a thread name if one was set.
787 continue; 793 continue;
788 } 794 }
789 JSONObject obj(events); 795 JSONObject obj(events);
790 int64_t pid = OS::ProcessId(); 796 int64_t pid = OS::ProcessId();
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 Thread* T = Thread::Current(); 870 Thread* T = Thread::Current();
865 if (T != NULL) { 871 if (T != NULL) {
866 T->DecrementNoSafepointScopeDepth(); 872 T->DecrementNoSafepointScopeDepth();
867 } 873 }
868 #endif // defined(DEBUG) 874 #endif // defined(DEBUG)
869 thread_block_lock->Unlock(); 875 thread_block_lock->Unlock();
870 } 876 }
871 877
872 878
873 void TimelineEventRecorder::WriteTo(const char* directory) { 879 void TimelineEventRecorder::WriteTo(const char* directory) {
880 if (!FLAG_support_service) {
881 return;
882 }
874 Dart_FileOpenCallback file_open = Isolate::file_open_callback(); 883 Dart_FileOpenCallback file_open = Isolate::file_open_callback();
875 Dart_FileWriteCallback file_write = Isolate::file_write_callback(); 884 Dart_FileWriteCallback file_write = Isolate::file_write_callback();
876 Dart_FileCloseCallback file_close = Isolate::file_close_callback(); 885 Dart_FileCloseCallback file_close = Isolate::file_close_callback();
877 if ((file_open == NULL) || (file_write == NULL) || (file_close == NULL)) { 886 if ((file_open == NULL) || (file_write == NULL) || (file_close == NULL)) {
878 return; 887 return;
879 } 888 }
880 Thread* T = Thread::Current(); 889 Thread* T = Thread::Current();
881 StackZone zone(T); 890 StackZone zone(T);
882 891
883 Timeline::ReclaimCachedBlocksFromThreads(); 892 Timeline::ReclaimCachedBlocksFromThreads();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
961 TimelineEventBlock* block = blocks_[i]; 970 TimelineEventBlock* block = blocks_[i];
962 delete block; 971 delete block;
963 } 972 }
964 free(blocks_); 973 free(blocks_);
965 } 974 }
966 975
967 976
968 void TimelineEventRingRecorder::PrintJSONEvents( 977 void TimelineEventRingRecorder::PrintJSONEvents(
969 JSONArray* events, 978 JSONArray* events,
970 TimelineEventFilter* filter) { 979 TimelineEventFilter* filter) {
980 if (!FLAG_support_service) {
981 return;
982 }
971 MutexLocker ml(&lock_); 983 MutexLocker ml(&lock_);
972 intptr_t block_offset = FindOldestBlockIndex(); 984 intptr_t block_offset = FindOldestBlockIndex();
973 if (block_offset == -1) { 985 if (block_offset == -1) {
974 // All blocks are empty. 986 // All blocks are empty.
975 return; 987 return;
976 } 988 }
977 for (intptr_t block_idx = 0; block_idx < num_blocks_; block_idx++) { 989 for (intptr_t block_idx = 0; block_idx < num_blocks_; block_idx++) {
978 TimelineEventBlock* block = 990 TimelineEventBlock* block =
979 blocks_[(block_idx + block_offset) % num_blocks_]; 991 blocks_[(block_idx + block_offset) % num_blocks_];
980 if (!filter->IncludeBlock(block)) { 992 if (!filter->IncludeBlock(block)) {
981 continue; 993 continue;
982 } 994 }
983 for (intptr_t event_idx = 0; event_idx < block->length(); event_idx++) { 995 for (intptr_t event_idx = 0; event_idx < block->length(); event_idx++) {
984 TimelineEvent* event = block->At(event_idx); 996 TimelineEvent* event = block->At(event_idx);
985 if (filter->IncludeEvent(event) && 997 if (filter->IncludeEvent(event) &&
986 event->Within(filter->time_origin_micros(), 998 event->Within(filter->time_origin_micros(),
987 filter->time_extent_micros())) { 999 filter->time_extent_micros())) {
988 events->AddValue(event); 1000 events->AddValue(event);
989 } 1001 }
990 } 1002 }
991 } 1003 }
992 } 1004 }
993 1005
994 1006
995 void TimelineEventRingRecorder::PrintJSON(JSONStream* js, 1007 void TimelineEventRingRecorder::PrintJSON(JSONStream* js,
996 TimelineEventFilter* filter) { 1008 TimelineEventFilter* filter) {
1009 if (!FLAG_support_service) {
1010 return;
1011 }
997 JSONObject topLevel(js); 1012 JSONObject topLevel(js);
998 topLevel.AddProperty("type", "_Timeline"); 1013 topLevel.AddProperty("type", "_Timeline");
999 { 1014 {
1000 JSONArray events(&topLevel, "traceEvents"); 1015 JSONArray events(&topLevel, "traceEvents");
1001 PrintJSONMeta(&events); 1016 PrintJSONMeta(&events);
1002 PrintJSONEvents(&events, filter); 1017 PrintJSONEvents(&events, filter);
1003 } 1018 }
1004 } 1019 }
1005 1020
1006 1021
1007 void TimelineEventRingRecorder::PrintTraceEvent(JSONStream* js, 1022 void TimelineEventRingRecorder::PrintTraceEvent(JSONStream* js,
1008 TimelineEventFilter* filter) { 1023 TimelineEventFilter* filter) {
1024 if (!FLAG_support_service) {
1025 return;
1026 }
1009 JSONArray events(js); 1027 JSONArray events(js);
1010 PrintJSONEvents(&events, filter); 1028 PrintJSONEvents(&events, filter);
1011 } 1029 }
1012 1030
1013 1031
1014 TimelineEventBlock* TimelineEventRingRecorder::GetHeadBlockLocked() { 1032 TimelineEventBlock* TimelineEventRingRecorder::GetHeadBlockLocked() {
1015 return blocks_[0]; 1033 return blocks_[0];
1016 } 1034 }
1017 1035
1018 1036
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 TimelineEventStreamingRecorder::TimelineEventStreamingRecorder() { 1090 TimelineEventStreamingRecorder::TimelineEventStreamingRecorder() {
1073 } 1091 }
1074 1092
1075 1093
1076 TimelineEventStreamingRecorder::~TimelineEventStreamingRecorder() { 1094 TimelineEventStreamingRecorder::~TimelineEventStreamingRecorder() {
1077 } 1095 }
1078 1096
1079 1097
1080 void TimelineEventStreamingRecorder::PrintJSON(JSONStream* js, 1098 void TimelineEventStreamingRecorder::PrintJSON(JSONStream* js,
1081 TimelineEventFilter* filter) { 1099 TimelineEventFilter* filter) {
1100 if (!FLAG_support_service) {
1101 return;
1102 }
1082 JSONObject topLevel(js); 1103 JSONObject topLevel(js);
1083 topLevel.AddProperty("type", "_Timeline"); 1104 topLevel.AddProperty("type", "_Timeline");
1084 { 1105 {
1085 JSONArray events(&topLevel, "traceEvents"); 1106 JSONArray events(&topLevel, "traceEvents");
1086 PrintJSONMeta(&events); 1107 PrintJSONMeta(&events);
1087 } 1108 }
1088 } 1109 }
1089 1110
1090 1111
1091 void TimelineEventStreamingRecorder::PrintTraceEvent( 1112 void TimelineEventStreamingRecorder::PrintTraceEvent(
1092 JSONStream* js, 1113 JSONStream* js,
1093 TimelineEventFilter* filter) { 1114 TimelineEventFilter* filter) {
1115 if (!FLAG_support_service) {
1116 return;
1117 }
1094 JSONArray events(js); 1118 JSONArray events(js);
1095 } 1119 }
1096 1120
1097 1121
1098 TimelineEvent* TimelineEventStreamingRecorder::StartEvent() { 1122 TimelineEvent* TimelineEventStreamingRecorder::StartEvent() {
1099 TimelineEvent* event = new TimelineEvent(); 1123 TimelineEvent* event = new TimelineEvent();
1100 return event; 1124 return event;
1101 } 1125 }
1102 1126
1103 1127
1104 void TimelineEventStreamingRecorder::CompleteEvent(TimelineEvent* event) { 1128 void TimelineEventStreamingRecorder::CompleteEvent(TimelineEvent* event) {
1105 StreamEvent(event); 1129 StreamEvent(event);
1106 delete event; 1130 delete event;
1107 } 1131 }
1108 1132
1109 1133
1110 TimelineEventEndlessRecorder::TimelineEventEndlessRecorder() 1134 TimelineEventEndlessRecorder::TimelineEventEndlessRecorder()
1111 : head_(NULL), 1135 : head_(NULL),
1112 block_index_(0) { 1136 block_index_(0) {
1113 } 1137 }
1114 1138
1115 1139
1116 void TimelineEventEndlessRecorder::PrintJSON(JSONStream* js, 1140 void TimelineEventEndlessRecorder::PrintJSON(JSONStream* js,
1117 TimelineEventFilter* filter) { 1141 TimelineEventFilter* filter) {
1142 if (!FLAG_support_service) {
1143 return;
1144 }
1118 JSONObject topLevel(js); 1145 JSONObject topLevel(js);
1119 topLevel.AddProperty("type", "_Timeline"); 1146 topLevel.AddProperty("type", "_Timeline");
1120 { 1147 {
1121 JSONArray events(&topLevel, "traceEvents"); 1148 JSONArray events(&topLevel, "traceEvents");
1122 PrintJSONMeta(&events); 1149 PrintJSONMeta(&events);
1123 PrintJSONEvents(&events, filter); 1150 PrintJSONEvents(&events, filter);
1124 } 1151 }
1125 } 1152 }
1126 1153
1127 1154
1128 void TimelineEventEndlessRecorder::PrintTraceEvent( 1155 void TimelineEventEndlessRecorder::PrintTraceEvent(
1129 JSONStream* js, 1156 JSONStream* js,
1130 TimelineEventFilter* filter) { 1157 TimelineEventFilter* filter) {
1158 if (!FLAG_support_service) {
1159 return;
1160 }
1131 JSONArray events(js); 1161 JSONArray events(js);
1132 PrintJSONEvents(&events, filter); 1162 PrintJSONEvents(&events, filter);
1133 } 1163 }
1134 1164
1135 1165
1136 TimelineEventBlock* TimelineEventEndlessRecorder::GetHeadBlockLocked() { 1166 TimelineEventBlock* TimelineEventEndlessRecorder::GetHeadBlockLocked() {
1137 return head_; 1167 return head_;
1138 } 1168 }
1139 1169
1140 1170
(...skipping 23 matching lines...) Expand all
1164 1194
1165 static int TimelineEventBlockCompare(TimelineEventBlock* const* a, 1195 static int TimelineEventBlockCompare(TimelineEventBlock* const* a,
1166 TimelineEventBlock* const* b) { 1196 TimelineEventBlock* const* b) {
1167 return (*a)->LowerTimeBound() - (*b)->LowerTimeBound(); 1197 return (*a)->LowerTimeBound() - (*b)->LowerTimeBound();
1168 } 1198 }
1169 1199
1170 1200
1171 void TimelineEventEndlessRecorder::PrintJSONEvents( 1201 void TimelineEventEndlessRecorder::PrintJSONEvents(
1172 JSONArray* events, 1202 JSONArray* events,
1173 TimelineEventFilter* filter) { 1203 TimelineEventFilter* filter) {
1204 if (!FLAG_support_service) {
1205 return;
1206 }
1174 MutexLocker ml(&lock_); 1207 MutexLocker ml(&lock_);
1175 // Collect all interesting blocks. 1208 // Collect all interesting blocks.
1176 MallocGrowableArray<TimelineEventBlock*> blocks(8); 1209 MallocGrowableArray<TimelineEventBlock*> blocks(8);
1177 TimelineEventBlock* current = head_; 1210 TimelineEventBlock* current = head_;
1178 while (current != NULL) { 1211 while (current != NULL) {
1179 if (filter->IncludeBlock(current)) { 1212 if (filter->IncludeBlock(current)) {
1180 blocks.Add(current); 1213 blocks.Add(current);
1181 } 1214 }
1182 current = current->next(); 1215 current = current->next();
1183 } 1216 }
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 1374
1342 1375
1343 TimelineEventBlock* TimelineEventBlockIterator::Next() { 1376 TimelineEventBlock* TimelineEventBlockIterator::Next() {
1344 ASSERT(current_ != NULL); 1377 ASSERT(current_ != NULL);
1345 TimelineEventBlock* r = current_; 1378 TimelineEventBlock* r = current_;
1346 current_ = current_->next(); 1379 current_ = current_->next();
1347 return r; 1380 return r;
1348 } 1381 }
1349 1382
1350 } // namespace dart 1383 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/tags.cc ('k') | runtime/vm/timeline_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698