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

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

Issue 1765563002: Stream blocks of timeline events over the service protocol (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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
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 "vm/service_event.h" 5 #include "vm/service_event.h"
6 6
7 #include "vm/message_handler.h" 7 #include "vm/message_handler.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
(...skipping 24 matching lines...) Expand all
35 } 35 }
36 36
37 37
38 ServiceEvent::ServiceEvent(Isolate* isolate, EventKind event_kind) 38 ServiceEvent::ServiceEvent(Isolate* isolate, EventKind event_kind)
39 : isolate_(isolate), 39 : isolate_(isolate),
40 kind_(event_kind), 40 kind_(event_kind),
41 embedder_kind_(NULL), 41 embedder_kind_(NULL),
42 embedder_stream_id_(NULL), 42 embedder_stream_id_(NULL),
43 breakpoint_(NULL), 43 breakpoint_(NULL),
44 top_frame_(NULL), 44 top_frame_(NULL),
45 timeline_event_block_(NULL),
45 extension_rpc_(NULL), 46 extension_rpc_(NULL),
46 exception_(NULL), 47 exception_(NULL),
47 at_async_jump_(false), 48 at_async_jump_(false),
48 inspectee_(NULL), 49 inspectee_(NULL),
49 gc_stats_(NULL), 50 gc_stats_(NULL),
50 bytes_(NULL), 51 bytes_(NULL),
51 bytes_length_(0), 52 bytes_length_(0),
52 timestamp_(OS::GetCurrentTimeMillis()) { 53 timestamp_(OS::GetCurrentTimeMillis()) {
53 if ((event_kind == ServiceEvent::kPauseStart) || 54 if ((event_kind == ServiceEvent::kPauseStart) ||
54 (event_kind == ServiceEvent::kPauseExit)) { 55 (event_kind == ServiceEvent::kPauseExit)) {
55 timestamp_ = isolate->message_handler()->paused_timestamp(); 56 timestamp_ = isolate->message_handler()->paused_timestamp();
56 } else if (event_kind == ServiceEvent::kResume) { 57 } else if (event_kind == ServiceEvent::kResume) {
57 timestamp_ = isolate->last_resume_timestamp(); 58 timestamp_ = isolate->last_resume_timestamp();
58 } 59 }
59 } 60 }
60 61
61 62
62 ServiceEvent::ServiceEvent(const DebuggerEvent* debugger_event) 63 ServiceEvent::ServiceEvent(const DebuggerEvent* debugger_event)
63 : isolate_(debugger_event->isolate()), 64 : isolate_(debugger_event->isolate()),
64 kind_(TranslateEventKind(debugger_event->type())), 65 kind_(TranslateEventKind(debugger_event->type())),
65 breakpoint_(NULL), 66 breakpoint_(NULL),
66 top_frame_(NULL), 67 top_frame_(NULL),
68 timeline_event_block_(NULL),
67 extension_rpc_(NULL), 69 extension_rpc_(NULL),
68 exception_(NULL), 70 exception_(NULL),
69 at_async_jump_(false), 71 at_async_jump_(false),
70 inspectee_(NULL), 72 inspectee_(NULL),
71 gc_stats_(NULL), 73 gc_stats_(NULL),
72 bytes_(NULL), 74 bytes_(NULL),
73 bytes_length_(0), 75 bytes_length_(0),
74 timestamp_(OS::GetCurrentTimeMillis()) { 76 timestamp_(OS::GetCurrentTimeMillis()) {
75 DebuggerEvent::EventType type = debugger_event->type(); 77 DebuggerEvent::EventType type = debugger_event->type();
76 if (type == DebuggerEvent::kBreakpointReached) { 78 if (type == DebuggerEvent::kBreakpointReached) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 case kEmbedder: 132 case kEmbedder:
131 return embedder_kind(); 133 return embedder_kind();
132 case kLogging: 134 case kLogging:
133 return "_Logging"; 135 return "_Logging";
134 case kDebuggerSettingsUpdate: 136 case kDebuggerSettingsUpdate:
135 return "_DebuggerSettingsUpdate"; 137 return "_DebuggerSettingsUpdate";
136 case kIllegal: 138 case kIllegal:
137 return "Illegal"; 139 return "Illegal";
138 case kExtension: 140 case kExtension:
139 return "Extension"; 141 return "Extension";
142 case kTimelineEvents:
143 return "TimelineEvents";
140 default: 144 default:
141 UNREACHABLE(); 145 UNREACHABLE();
142 return "Unknown"; 146 return "Unknown";
143 } 147 }
144 } 148 }
145 149
146 150
147 const char* ServiceEvent::stream_id() const { 151 const char* ServiceEvent::stream_id() const {
148 switch (kind()) { 152 switch (kind()) {
149 case kVMUpdate: 153 case kVMUpdate:
(...skipping 24 matching lines...) Expand all
174 178
175 case kEmbedder: 179 case kEmbedder:
176 return embedder_stream_id_; 180 return embedder_stream_id_;
177 181
178 case kLogging: 182 case kLogging:
179 return Service::logging_stream.id(); 183 return Service::logging_stream.id();
180 184
181 case kExtension: 185 case kExtension:
182 return Service::extension_stream.id(); 186 return Service::extension_stream.id();
183 187
188 case kTimelineEvents:
189 return Service::timeline_stream.id();
190
184 default: 191 default:
185 UNREACHABLE(); 192 UNREACHABLE();
186 return NULL; 193 return NULL;
187 } 194 }
188 } 195 }
189 196
190 197
191 void ServiceEvent::PrintJSON(JSONStream* js) const { 198 void ServiceEvent::PrintJSON(JSONStream* js) const {
192 JSONObject jsobj(js); 199 JSONObject jsobj(js);
193 PrintJSONHeader(&jsobj); 200 PrintJSONHeader(&jsobj);
194 if (kind() == kServiceExtensionAdded) { 201 if (kind() == kServiceExtensionAdded) {
195 ASSERT(extension_rpc_ != NULL); 202 ASSERT(extension_rpc_ != NULL);
196 jsobj.AddProperty("extensionRPC", extension_rpc_->ToCString()); 203 jsobj.AddProperty("extensionRPC", extension_rpc_->ToCString());
197 } 204 }
198 if (kind() == kPauseBreakpoint) { 205 if (kind() == kPauseBreakpoint) {
199 JSONArray jsarr(&jsobj, "pauseBreakpoints"); 206 JSONArray jsarr(&jsobj, "pauseBreakpoints");
200 // TODO(rmacnak): If we are paused at more than one breakpoint, 207 // TODO(rmacnak): If we are paused at more than one breakpoint,
201 // provide it here. 208 // provide it here.
202 if (breakpoint() != NULL) { 209 if (breakpoint() != NULL) {
203 jsarr.AddValue(breakpoint()); 210 jsarr.AddValue(breakpoint());
204 } 211 }
205 } else { 212 } else {
206 if (breakpoint() != NULL) { 213 if (breakpoint() != NULL) {
207 jsobj.AddProperty("breakpoint", breakpoint()); 214 jsobj.AddProperty("breakpoint", breakpoint());
208 } 215 }
209 } 216 }
217 if (kind() == kTimelineEvents) {
218 jsobj.AddProperty("timelineEvents", timeline_event_block_);
219 }
210 if (kind() == kDebuggerSettingsUpdate) { 220 if (kind() == kDebuggerSettingsUpdate) {
211 JSONObject jssettings(&jsobj, "_debuggerSettings"); 221 JSONObject jssettings(&jsobj, "_debuggerSettings");
212 isolate()->debugger()->PrintSettingsToJSONObject(&jssettings); 222 isolate()->debugger()->PrintSettingsToJSONObject(&jssettings);
213 } 223 }
214 if ((top_frame() != NULL) && Isolate::Current()->compilation_allowed()) { 224 if ((top_frame() != NULL) && Isolate::Current()->compilation_allowed()) {
215 JSONObject jsFrame(&jsobj, "topFrame"); 225 JSONObject jsFrame(&jsobj, "topFrame");
216 top_frame()->PrintToJSONObject(&jsFrame); 226 top_frame()->PrintToJSONObject(&jsFrame);
217 intptr_t index = 0; // Avoid ambiguity in call to AddProperty. 227 intptr_t index = 0; // Avoid ambiguity in call to AddProperty.
218 jsFrame.AddProperty("index", index); 228 jsFrame.AddProperty("index", index);
219 } 229 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 264
255 void ServiceEvent::PrintJSONHeader(JSONObject* jsobj) const { 265 void ServiceEvent::PrintJSONHeader(JSONObject* jsobj) const {
256 ASSERT(jsobj != NULL); 266 ASSERT(jsobj != NULL);
257 jsobj->AddProperty("type", "Event"); 267 jsobj->AddProperty("type", "Event");
258 jsobj->AddProperty("kind", KindAsCString()); 268 jsobj->AddProperty("kind", KindAsCString());
259 if (kind() == kExtension) { 269 if (kind() == kExtension) {
260 ASSERT(extension_event_.event_kind != NULL); 270 ASSERT(extension_event_.event_kind != NULL);
261 jsobj->AddProperty("extensionKind", 271 jsobj->AddProperty("extensionKind",
262 extension_event_.event_kind->ToCString()); 272 extension_event_.event_kind->ToCString());
263 } 273 }
264 if (kind() == kVMUpdate) { 274 if (isolate() == NULL) {
265 jsobj->AddPropertyVM("vm"); 275 jsobj->AddPropertyVM("vm");
266 } else { 276 } else {
267 jsobj->AddProperty("isolate", isolate()); 277 jsobj->AddProperty("isolate", isolate());
268 } 278 }
269 ASSERT(timestamp_ != -1); 279 ASSERT(timestamp_ != -1);
270 jsobj->AddPropertyTimeMillis("timestamp", timestamp_); 280 jsobj->AddPropertyTimeMillis("timestamp", timestamp_);
271 } 281 }
272 282
273 #endif // !PRODUCT 283 #endif // !PRODUCT
274 284
275 } // namespace dart 285 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698