| Index: runtime/vm/timeline.h
|
| diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
|
| index 3cda6c92337ec8ffb7081a83bc74852a510ae0f1..273df848e7546e4f3a77a8835aabcc190874b051 100644
|
| --- a/runtime/vm/timeline.h
|
| +++ b/runtime/vm/timeline.h
|
| @@ -81,9 +81,17 @@ class TimelineEvent {
|
| return EventTypeField::decode(state_);
|
| }
|
|
|
| + bool IsFinishedDuration() const {
|
| + return (event_type() == kDuration) && (timestamp1_ > timestamp0_);
|
| + }
|
| +
|
| int64_t TimeOrigin() const;
|
| int64_t AsyncId() const;
|
| int64_t TimeDuration() const;
|
| + int64_t TimeEnd() const {
|
| + ASSERT(IsFinishedDuration());
|
| + return timestamp1_;
|
| + }
|
|
|
| void PrintJSON(JSONStream* stream) const;
|
|
|
| @@ -95,6 +103,30 @@ class TimelineEvent {
|
| return label_;
|
| }
|
|
|
| + // Does this duration end before |micros| ?
|
| + bool DurationFinishedBefore(int64_t micros) const {
|
| + return TimeEnd() <= micros;
|
| + }
|
| +
|
| + // Does this duration fully contain |other| ?
|
| + bool DurationContains(TimelineEvent* other) const {
|
| + ASSERT(IsFinishedDuration());
|
| + ASSERT(other->IsFinishedDuration());
|
| + if (other->TimeOrigin() < TimeOrigin()) {
|
| + return false;
|
| + }
|
| + if (other->TimeEnd() < TimeOrigin()) {
|
| + return false;
|
| + }
|
| + if (other->TimeOrigin() > TimeEnd()) {
|
| + return false;
|
| + }
|
| + if (other->TimeEnd() > TimeEnd()) {
|
| + return false;
|
| + }
|
| + return true;
|
| + }
|
| +
|
| private:
|
| struct TimelineEventArgument {
|
| const char* name;
|
| @@ -371,6 +403,7 @@ class TimelineEventRecorder {
|
|
|
| friend class TimelineEventBlockIterator;
|
| friend class TimelineStream;
|
| + friend class TimelineTestHelper;
|
| friend class Isolate;
|
|
|
| private:
|
| @@ -468,8 +501,13 @@ class TimelineEventEndlessRecorder : public TimelineEventRecorder {
|
| TimelineEventBlock* GetNewBlockLocked();
|
| void PrintJSONEvents(JSONArray* array) const;
|
|
|
| + // Useful only for testing. Only works for one thread.
|
| + void Clear();
|
| +
|
| TimelineEventBlock* head_;
|
| intptr_t block_index_;
|
| +
|
| + friend class TimelineTestHelper;
|
| };
|
|
|
|
|
|
|