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

Unified Diff: runtime/vm/timeline.cc

Issue 2977663003: [vm] Support flow events in Dart_TimelineEvent. (Closed)
Patch Set: Created 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/timeline.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/timeline.cc
diff --git a/runtime/vm/timeline.cc b/runtime/vm/timeline.cc
index 3317acc868c4c27b9eeaac544fc3d0260f706b93..fd2c43927ca6393467e4c2f319351d1671e591f9 100644
--- a/runtime/vm/timeline.cc
+++ b/runtime/vm/timeline.cc
@@ -459,6 +459,36 @@ void TimelineEvent::Counter(const char* label, int64_t micros) {
}
+void TimelineEvent::FlowBegin(const char* label,
+ int64_t async_id,
+ int64_t micros) {
+ Init(kFlowBegin, label);
+ set_timestamp0(micros);
+ // Overload timestamp1_ with the async_id.
+ set_timestamp1(async_id);
+}
+
+
+void TimelineEvent::FlowStep(const char* label,
+ int64_t async_id,
+ int64_t micros) {
+ Init(kFlowStep, label);
+ set_timestamp0(micros);
+ // Overload timestamp1_ with the async_id.
+ set_timestamp1(async_id);
+}
+
+
+void TimelineEvent::FlowEnd(const char* label,
+ int64_t async_id,
+ int64_t micros) {
+ Init(kFlowEnd, label);
+ set_timestamp0(micros);
+ // Overload timestamp1_ with the async_id.
+ set_timestamp1(async_id);
+}
+
+
void TimelineEvent::Metadata(const char* label, int64_t micros) {
Init(kMetadata, label);
set_timestamp0(micros);
@@ -562,7 +592,10 @@ FUCHSIA_EVENT_ARGS_LIST(EMIT_FUCHSIA_EVENT)
V(Instant, TRACE_INSTANT, ::tracing::EventScope) \
V(AsyncBegin, TRACE_ASYNC_BEGIN, int64_t) \
V(AsyncEnd, TRACE_ASYNC_END, int64_t) \
- V(AsyncInstant, TRACE_ASYNC_INSTANT, int64_t)
+ V(AsyncInstant, TRACE_ASYNC_INSTANT, int64_t) \
+ V(FlowBegin, TRACE_FLOW_BEGIN, int64_t) \
+ V(FlowStep, TRACE_FLOW_STEP, int64_t) \
+ V(FlowEnd, TRACE_FLOW_END, int64_t)
#define EMIT_FUCHSIA_EVENT(__name, __macro, __id_typ) \
static void EmitFuchsia##__name##Event(const char* label, __id_typ id, \
@@ -608,6 +641,17 @@ void TimelineEvent::EmitFuchsiaEvent() {
EmitFuchsiaAsyncInstantEvent(label_, AsyncId(), arguments_,
arguments_length_);
break;
+ case kFlowBegin:
+ EmitFuchsiaFlowBeginEvent(label_, AsyncId(), arguments_,
+ arguments_length_);
+ break;
+ case kFlowStep:
+ EmitFuchsiaFlowStepEvent(label_, AsyncId(), arguments_,
+ arguments_length_);
+ break;
+ case kFlowEnd:
+ EmitFuchsiaFlowEndEvent(label_, AsyncId(), arguments_, arguments_length_);
+ break;
default:
// TODO(zra): Figure out what to do with kDuration, kCounter, and
// kMetadata.
@@ -780,12 +824,25 @@ void TimelineEvent::PrintJSON(JSONStream* stream) const {
obj.AddProperty("ph", "e");
obj.AddPropertyF("id", "%" Px64 "", AsyncId());
} break;
- case kMetadata: {
- obj.AddProperty("ph", "M");
- } break;
case kCounter: {
obj.AddProperty("ph", "C");
} break;
+ case kFlowBegin: {
+ obj.AddProperty("ph", "s");
+ obj.AddPropertyF("id", "%" Px64 "", AsyncId());
+ } break;
+ case kFlowStep: {
+ obj.AddProperty("ph", "t");
+ obj.AddPropertyF("id", "%" Px64 "", AsyncId());
+ } break;
+ case kFlowEnd: {
+ obj.AddProperty("ph", "f");
+ obj.AddProperty("bp", "e");
+ obj.AddPropertyF("id", "%" Px64 "", AsyncId());
+ } break;
+ case kMetadata: {
+ obj.AddProperty("ph", "M");
+ } break;
default:
UNIMPLEMENTED();
}
@@ -1328,6 +1385,7 @@ void TimelineEventRecorder::WriteTo(const char* directory) {
int64_t TimelineEventRecorder::GetNextAsyncId() {
// TODO(johnmccutchan): Gracefully handle wrap around.
+ // TODO(rmacnak): Use TRACE_NONCE() on Fuchsia?
uint32_t next =
static_cast<uint32_t>(AtomicOperations::FetchAndIncrement(&async_id_));
return static_cast<int64_t>(next);
« no previous file with comments | « runtime/vm/timeline.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698