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

Unified Diff: runtime/vm/timeline.h

Issue 1411783004: More timeline cleanups (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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/json_stream.cc ('k') | runtime/vm/timeline.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/timeline.h
diff --git a/runtime/vm/timeline.h b/runtime/vm/timeline.h
index 6a9019dbd3dd8c729763bf50520750627e593deb..9372c04220e5b73d78d2b29cc07ca98ad29e9bc0 100644
--- a/runtime/vm/timeline.h
+++ b/runtime/vm/timeline.h
@@ -88,6 +88,7 @@ class TimelineEvent {
// Keep in sync with StateBits below.
enum EventType {
kNone,
+ kSerializedJSON, // Events from Dart code.
kBegin,
kEnd,
kDuration,
@@ -130,9 +131,11 @@ class TimelineEvent {
void End(const char* label,
int64_t micros = OS::GetCurrentTraceMicros());
+ void SerializedJSON(const char* json);
+
// Set the number of arguments in the event.
void SetNumArguments(intptr_t length);
- // |name| must be a compile time constant. Takes ownership of |argumentp|.
+ // |name| must be a compile time constant. Takes ownership of |argument|.
void SetArgument(intptr_t i, const char* name, char* argument);
// |name| must be a compile time constant. Copies |argument|.
void CopyArgument(intptr_t i, const char* name, const char* argument);
@@ -168,6 +171,10 @@ class TimelineEvent {
return thread_;
}
+ Dart_Port isolate_id() const {
+ return isolate_id_;
+ }
+
const char* label() const {
return label_;
}
@@ -223,6 +230,8 @@ class TimelineEvent {
}
}
+ const char* GetSerializedJSON() const;
+
private:
int64_t timestamp0_;
int64_t timestamp1_;
@@ -232,7 +241,7 @@ class TimelineEvent {
const char* label_;
const char* category_;
ThreadId thread_;
- Isolate* isolate_;
+ Dart_Port isolate_id_;
void FreeArguments();
@@ -396,9 +405,6 @@ class TimelineEventBlock {
return &events_[index];
}
- // Attempt to sniff a thread id from the first event.
- ThreadId thread() const;
-
// Attempt to sniff the timestamp from the first event.
int64_t LowerTimeBound() const;
@@ -416,8 +422,8 @@ class TimelineEventBlock {
}
// Only safe to access under the recorder's lock.
- Isolate* isolate() const {
- return isolate_;
+ ThreadId thread_id() const {
+ return thread_id_;
}
protected:
@@ -429,10 +435,10 @@ class TimelineEventBlock {
intptr_t block_index_;
// Only accessed under the recorder's lock.
- Isolate* isolate_;
+ ThreadId thread_id_;
bool in_use_;
- void Open(Isolate* isolate);
+ void Open();
void Finish();
friend class Thread;
@@ -473,52 +479,23 @@ class TimelineEventFilter : public ValueObject {
class IsolateTimelineEventFilter : public TimelineEventFilter {
public:
- explicit IsolateTimelineEventFilter(Isolate* isolate);
+ explicit IsolateTimelineEventFilter(Dart_Port isolate_id);
bool IncludeBlock(TimelineEventBlock* block) {
if (block == NULL) {
return false;
}
// Not empty, not in use, and isolate match.
- return !block->IsEmpty() && !block->in_use() &&
- (block->isolate() == isolate_);
- }
-
- private:
- Isolate* isolate_;
-};
-
-
-// Timeline events from Dart code are eagerly converted to JSON and stored
-// as a C string.
-class DartTimelineEvent {
- public:
- DartTimelineEvent();
- ~DartTimelineEvent();
-
- void Clear();
-
- // This function makes a copy of |event|.
- void Init(Isolate* isolate, const char* event);
-
- bool IsValid() const {
- return (isolate_ != NULL) &&
- (event_as_json_ != NULL);
- }
-
- Isolate* isolate() const {
- return isolate_;
+ return !block->IsEmpty() && !block->in_use();
}
- char* event_as_json() const {
- return event_as_json_;
+ bool IncludeEvent(TimelineEvent* event) {
+ return event->IsValid() &&
+ (event->isolate_id() == isolate_id_);
}
private:
- Isolate* isolate_;
- char* event_as_json_;
-
- DISALLOW_COPY_AND_ASSIGN(DartTimelineEvent);
+ Dart_Port isolate_id_;
};
@@ -538,9 +515,6 @@ class TimelineEventRecorder {
void FinishBlock(TimelineEventBlock* block);
- // Interface method(s) which must be implemented.
- virtual void AppendDartEvent(Isolate* isolate, const char* event) = 0;
-
protected:
void WriteTo(const char* directory);
@@ -548,9 +522,7 @@ class TimelineEventRecorder {
virtual TimelineEvent* StartEvent() = 0;
virtual void CompleteEvent(TimelineEvent* event) = 0;
virtual TimelineEventBlock* GetHeadBlockLocked() = 0;
- virtual TimelineEventBlock* GetNewBlockLocked(Isolate* isolate) = 0;
- virtual intptr_t NumDartEventsLocked() = 0;
- virtual DartTimelineEvent* DartEventAtLocked(intptr_t i) = 0;
+ virtual TimelineEventBlock* GetNewBlockLocked() = 0;
// Utility method(s).
void PrintJSONMeta(JSONArray* array) const;
@@ -560,7 +532,6 @@ class TimelineEventRecorder {
Mutex lock_;
uintptr_t async_id_;
- friend class DartTimelineEventIterator;
friend class TimelineEvent;
friend class TimelineEventBlockIterator;
friend class TimelineStream;
@@ -583,16 +554,12 @@ class TimelineEventRingRecorder : public TimelineEventRecorder {
void PrintJSON(JSONStream* js, TimelineEventFilter* filter);
void PrintTraceEvent(JSONStream* js, TimelineEventFilter* filter);
- void AppendDartEvent(Isolate* isolate, const char* event);
-
protected:
TimelineEvent* StartEvent();
void CompleteEvent(TimelineEvent* event);
TimelineEventBlock* GetHeadBlockLocked();
intptr_t FindOldestBlockIndex() const;
- TimelineEventBlock* GetNewBlockLocked(Isolate* isolate);
- intptr_t NumDartEventsLocked();
- DartTimelineEvent* DartEventAtLocked(intptr_t i);
+ TimelineEventBlock* GetNewBlockLocked();
void PrintJSONEvents(JSONArray* array, TimelineEventFilter* filter) const;
@@ -600,10 +567,6 @@ class TimelineEventRingRecorder : public TimelineEventRecorder {
intptr_t capacity_;
intptr_t num_blocks_;
intptr_t block_cursor_;
-
- DartTimelineEvent** dart_events_;
- intptr_t dart_events_capacity_;
- intptr_t dart_events_cursor_;
};
@@ -616,22 +579,17 @@ class TimelineEventStreamingRecorder : public TimelineEventRecorder {
void PrintJSON(JSONStream* js, TimelineEventFilter* filter);
void PrintTraceEvent(JSONStream* js, TimelineEventFilter* filter);
- void AppendDartEvent(Isolate* isolate, const char* event);
-
// Called when |event| is ready to be streamed. It is unsafe to keep a
// reference to |event| as it may be freed as soon as this function returns.
virtual void StreamEvent(TimelineEvent* event) = 0;
- virtual void StreamDartEvent(const char* event) = 0;
protected:
- TimelineEventBlock* GetNewBlockLocked(Isolate* isolate) {
+ TimelineEventBlock* GetNewBlockLocked() {
return NULL;
}
TimelineEventBlock* GetHeadBlockLocked() {
return NULL;
}
- intptr_t NumDartEventsLocked();
- DartTimelineEvent* DartEventAtLocked(intptr_t i);
TimelineEvent* StartEvent();
void CompleteEvent(TimelineEvent* event);
};
@@ -647,15 +605,11 @@ class TimelineEventEndlessRecorder : public TimelineEventRecorder {
void PrintJSON(JSONStream* js, TimelineEventFilter* filter);
void PrintTraceEvent(JSONStream* js, TimelineEventFilter* filter);
- void AppendDartEvent(Isolate* isolate, const char* event);
-
protected:
TimelineEvent* StartEvent();
void CompleteEvent(TimelineEvent* event);
- TimelineEventBlock* GetNewBlockLocked(Isolate* isolate);
+ TimelineEventBlock* GetNewBlockLocked();
TimelineEventBlock* GetHeadBlockLocked();
- intptr_t NumDartEventsLocked();
- DartTimelineEvent* DartEventAtLocked(intptr_t i);
void PrintJSONEvents(JSONArray* array, TimelineEventFilter* filter) const;
@@ -665,10 +619,6 @@ class TimelineEventEndlessRecorder : public TimelineEventRecorder {
TimelineEventBlock* head_;
intptr_t block_index_;
- DartTimelineEvent** dart_events_;
- intptr_t dart_events_capacity_;
- intptr_t dart_events_cursor_;
-
friend class TimelineTestHelper;
};
@@ -693,32 +643,6 @@ class TimelineEventBlockIterator {
};
-// An iterator for timeline events.
-class DartTimelineEventIterator {
- public:
- explicit DartTimelineEventIterator(TimelineEventRecorder* recorder);
- ~DartTimelineEventIterator();
-
- void Reset(TimelineEventRecorder* recorder);
-
- // Returns true if there is another event.
- bool HasNext() const;
-
- // Returns the next event and moves forward.
- DartTimelineEvent* Next();
-
- // Returns a zone allocated string of all trace events for isolate.
- // If isolate is NULL, all isolates' events will be included.
- static const char* PrintTraceEvents(TimelineEventRecorder* recorder,
- Zone* zone,
- Isolate* isolate);
-
- private:
- intptr_t cursor_;
- intptr_t num_events_;
- TimelineEventRecorder* recorder_;
-};
-
} // namespace dart
#endif // VM_TIMELINE_H_
« no previous file with comments | « runtime/vm/json_stream.cc ('k') | runtime/vm/timeline.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698