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

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

Issue 1295223002: Drop support for recording Dart objects in a timeline trace (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « runtime/vm/timeline.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <cstdlib> 5 #include <cstdlib>
6 6
7 #include "vm/isolate.h" 7 #include "vm/isolate.h"
8 #include "vm/json_stream.h" 8 #include "vm/json_stream.h"
9 #include "vm/lockers.h" 9 #include "vm/lockers.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 seq_(0) { 252 seq_(0) {
253 } 253 }
254 254
255 255
256 void TimelineStream::Init(const char* name, bool enabled) { 256 void TimelineStream::Init(const char* name, bool enabled) {
257 name_ = name; 257 name_ = name;
258 enabled_ = enabled; 258 enabled_ = enabled;
259 } 259 }
260 260
261 261
262 TimelineEvent* TimelineStream::StartEvent(const Object& obj) {
263 if (!enabled_ || (recorder_ == NULL)) {
264 return NULL;
265 }
266 ASSERT(name_ != NULL);
267 ASSERT(recorder_ != NULL);
268 TimelineEvent* event = recorder_->StartEvent(obj);
269 if (event != NULL) {
270 event->StreamInit(this);
271 }
272 return event;
273 }
274
275
276 TimelineEvent* TimelineStream::StartEvent() { 262 TimelineEvent* TimelineStream::StartEvent() {
277 if (!enabled_ || (recorder_ == NULL)) { 263 if (!enabled_ || (recorder_ == NULL)) {
278 return NULL; 264 return NULL;
279 } 265 }
280 ASSERT(name_ != NULL); 266 ASSERT(name_ != NULL);
281 TimelineEvent* event = recorder_->StartEvent(); 267 TimelineEvent* event = recorder_->StartEvent();
282 if (event != NULL) { 268 if (event != NULL) {
283 event->StreamInit(this); 269 event->StreamInit(this);
284 } 270 }
285 return event; 271 return event;
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 } 472 }
487 if (block->LowerTimeBound() < earliest_time) { 473 if (block->LowerTimeBound() < earliest_time) {
488 earliest_time = block->LowerTimeBound(); 474 earliest_time = block->LowerTimeBound();
489 earliest_index = block_idx; 475 earliest_index = block_idx;
490 } 476 }
491 } 477 }
492 return earliest_index; 478 return earliest_index;
493 } 479 }
494 480
495 481
496 void TimelineEventRingRecorder::VisitObjectPointers(
497 ObjectPointerVisitor* visitor) {
498 visitor->VisitPointer(reinterpret_cast<RawObject**>(&event_objects_));
499 }
500
501
502 TimelineEvent* TimelineEventRingRecorder::StartEvent(const Object& obj) {
503 TimelineEvent* event = StartEvent();
504 if (event == NULL) {
505 return NULL;
506 }
507 // Grab the thread's timeline event block which contains |event|.
508 Thread* thread = Thread::Current();
509 TimelineEventBlock* thread_block = thread->timeline_block();
510 ASSERT(thread_block != NULL);
511 ASSERT(thread_block->length() > 0);
512 const intptr_t block_index = thread_block->block_index();
513 const intptr_t event_objects_index =
514 block_index * TimelineEventBlock::kBlockSize + thread_block->length() - 1;
515 const Array& event_objects = Array::Handle(event_objects_);
516 event_objects.SetAt(event_objects_index, obj);
517 return event;
518 }
519
520
521 TimelineEvent* TimelineEventRingRecorder::StartEvent() { 482 TimelineEvent* TimelineEventRingRecorder::StartEvent() {
522 return ThreadBlockStartEvent(); 483 return ThreadBlockStartEvent();
523 } 484 }
524 485
525 486
526 void TimelineEventRingRecorder::CompleteEvent(TimelineEvent* event) { 487 void TimelineEventRingRecorder::CompleteEvent(TimelineEvent* event) {
527 // no-op. 488 // no-op.
528 } 489 }
529 490
530 491
531 TimelineEventStreamingRecorder::TimelineEventStreamingRecorder() { 492 TimelineEventStreamingRecorder::TimelineEventStreamingRecorder() {
532 } 493 }
533 494
534 495
535 TimelineEventStreamingRecorder::~TimelineEventStreamingRecorder() { 496 TimelineEventStreamingRecorder::~TimelineEventStreamingRecorder() {
536 } 497 }
537 498
538 499
539 void TimelineEventStreamingRecorder::PrintJSON(JSONStream* js) { 500 void TimelineEventStreamingRecorder::PrintJSON(JSONStream* js) {
540 JSONObject topLevel(js); 501 JSONObject topLevel(js);
541 topLevel.AddProperty("type", "_Timeline"); 502 topLevel.AddProperty("type", "_Timeline");
542 { 503 {
543 JSONArray events(&topLevel, "traceEvents"); 504 JSONArray events(&topLevel, "traceEvents");
544 PrintJSONMeta(&events); 505 PrintJSONMeta(&events);
545 } 506 }
546 } 507 }
547 508
548 509
549 void TimelineEventStreamingRecorder::VisitObjectPointers(
550 ObjectPointerVisitor* visitor) {
551 // no-op.
552 }
553
554
555 TimelineEvent* TimelineEventStreamingRecorder::StartEvent(
556 const Object& object) {
557 // The streaming recorder does not track Dart objects.
558 return StartEvent();
559 }
560
561
562 TimelineEvent* TimelineEventStreamingRecorder::StartEvent() { 510 TimelineEvent* TimelineEventStreamingRecorder::StartEvent() {
563 TimelineEvent* event = new TimelineEvent(); 511 TimelineEvent* event = new TimelineEvent();
564 return event; 512 return event;
565 } 513 }
566 514
567 515
568 void TimelineEventStreamingRecorder::CompleteEvent(TimelineEvent* event) { 516 void TimelineEventStreamingRecorder::CompleteEvent(TimelineEvent* event) {
569 StreamEvent(event); 517 StreamEvent(event);
570 delete event; 518 delete event;
571 } 519 }
(...skipping 22 matching lines...) Expand all
594 MutexLocker ml(&lock_); 542 MutexLocker ml(&lock_);
595 return GetNewBlockLocked(); 543 return GetNewBlockLocked();
596 } 544 }
597 545
598 546
599 TimelineEventBlock* TimelineEventEndlessRecorder::GetHeadBlock() { 547 TimelineEventBlock* TimelineEventEndlessRecorder::GetHeadBlock() {
600 return head_; 548 return head_;
601 } 549 }
602 550
603 551
604 void TimelineEventEndlessRecorder::VisitObjectPointers(
605 ObjectPointerVisitor* visitor) {
606 // no-op.
607 }
608
609
610 TimelineEvent* TimelineEventEndlessRecorder::StartEvent(const Object& object) {
611 return StartEvent();
612 }
613
614
615 TimelineEvent* TimelineEventEndlessRecorder::StartEvent() { 552 TimelineEvent* TimelineEventEndlessRecorder::StartEvent() {
616 return ThreadBlockStartEvent(); 553 return ThreadBlockStartEvent();
617 } 554 }
618 555
619 556
620 void TimelineEventEndlessRecorder::CompleteEvent(TimelineEvent* event) { 557 void TimelineEventEndlessRecorder::CompleteEvent(TimelineEvent* event) {
621 // no-op. 558 // no-op.
622 } 559 }
623 560
624 561
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 699
763 700
764 TimelineEventBlock* TimelineEventBlockIterator::Next() { 701 TimelineEventBlock* TimelineEventBlockIterator::Next() {
765 ASSERT(current_ != NULL); 702 ASSERT(current_ != NULL);
766 TimelineEventBlock* r = current_; 703 TimelineEventBlock* r = current_;
767 current_ = current_->next(); 704 current_ = current_->next();
768 return r; 705 return r;
769 } 706 }
770 707
771 } // namespace dart 708 } // namespace dart
OLDNEW
« 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