Skip to content

Commit 61c4898

Browse files
authored
Add support for flow traces in fml/trace_event. (flutter#3903)
1 parent 106118a commit 61c4898

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

fml/trace_event.cc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,5 +136,42 @@ void TraceEventInstant0(TraceArg category_group, TraceArg name) {
136136
);
137137
}
138138

139+
void TraceEventFlowBegin0(TraceArg category_group,
140+
TraceArg name,
141+
TraceIDArg id) {
142+
Dart_TimelineEvent(name, // label
143+
Dart_TimelineGetMicros(), // timestamp0
144+
id, // timestamp1_or_async_id
145+
Dart_Timeline_Event_Flow_Begin, // event type
146+
0, // argument_count
147+
nullptr, // argument_names
148+
nullptr // argument_values
149+
);
150+
}
151+
152+
void TraceEventFlowStep0(TraceArg category_group,
153+
TraceArg name,
154+
TraceIDArg id) {
155+
Dart_TimelineEvent(name, // label
156+
Dart_TimelineGetMicros(), // timestamp0
157+
id, // timestamp1_or_async_id
158+
Dart_Timeline_Event_Flow_Step, // event type
159+
0, // argument_count
160+
nullptr, // argument_names
161+
nullptr // argument_values
162+
);
163+
}
164+
165+
void TraceEventFlowEnd0(TraceArg category_group, TraceArg name, TraceIDArg id) {
166+
Dart_TimelineEvent(name, // label
167+
Dart_TimelineGetMicros(), // timestamp0
168+
id, // timestamp1_or_async_id
169+
Dart_Timeline_Event_Flow_End, // event type
170+
0, // argument_count
171+
nullptr, // argument_names
172+
nullptr // argument_values
173+
);
174+
}
175+
139176
} // namespace tracing
140177
} // namespace fml

fml/trace_event.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,15 @@
4545
#define TRACE_EVENT_INSTANT0(category_group, name) \
4646
::fml::tracing::TraceEventInstant0(category_group, name);
4747

48+
#define TRACE_FLOW_BEGIN(category, name, id, args...) \
49+
::fml::tracing::TraceEventFlowBegin0(category, name, id);
50+
51+
#define TRACE_FLOW_STEP(category, name, id, args...) \
52+
::fml::tracing::TraceEventFlowStep0(category, name, id);
53+
54+
#define TRACE_FLOW_END(category, name, id, args...) \
55+
::fml::tracing::TraceEventFlowEnd0(category, name, id);
56+
4857
#endif // TRACE_EVENT_HIDE_MACROS
4958

5059
namespace fml {
@@ -89,6 +98,14 @@ void TraceEventAsyncEnd1(TraceArg category_group,
8998

9099
void TraceEventInstant0(TraceArg category_group, TraceArg name);
91100

101+
void TraceEventFlowBegin0(TraceArg category_group,
102+
TraceArg name,
103+
TraceIDArg id);
104+
105+
void TraceEventFlowStep0(TraceArg category_group, TraceArg name, TraceIDArg id);
106+
107+
void TraceEventFlowEnd0(TraceArg category_group, TraceArg name, TraceIDArg id);
108+
92109
class ScopedInstantEnd {
93110
public:
94111
ScopedInstantEnd(std::string str) : label_(std::move(str)) {}

0 commit comments

Comments
 (0)