| OLD | NEW |
| 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 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 // Clear any extra data. | 707 // Clear any extra data. |
| 708 events_[i].Reset(); | 708 events_[i].Reset(); |
| 709 } | 709 } |
| 710 length_ = 0; | 710 length_ = 0; |
| 711 } | 711 } |
| 712 | 712 |
| 713 | 713 |
| 714 TimelineEventBlockIterator::TimelineEventBlockIterator( | 714 TimelineEventBlockIterator::TimelineEventBlockIterator( |
| 715 TimelineEventRecorder* recorder) | 715 TimelineEventRecorder* recorder) |
| 716 : current_(NULL), | 716 : current_(NULL), |
| 717 recorder_(recorder) { | 717 recorder_(NULL) { |
| 718 if (recorder_ == NULL) { | 718 Reset(recorder); |
| 719 return; | |
| 720 } | |
| 721 recorder->lock_.Lock(); | |
| 722 } | 719 } |
| 723 | 720 |
| 724 | 721 |
| 725 TimelineEventBlockIterator::~TimelineEventBlockIterator() { | 722 TimelineEventBlockIterator::~TimelineEventBlockIterator() { |
| 723 Reset(NULL); |
| 724 } |
| 725 |
| 726 |
| 727 void TimelineEventBlockIterator::Reset(TimelineEventRecorder* recorder) { |
| 728 // Clear current. |
| 729 current_ = NULL; |
| 730 if (recorder_ != NULL) { |
| 731 // Unlock old recorder. |
| 732 recorder_->lock_.Unlock(); |
| 733 } |
| 734 recorder_ = recorder; |
| 726 if (recorder_ == NULL) { | 735 if (recorder_ == NULL) { |
| 727 return; | 736 return; |
| 728 } | 737 } |
| 729 recorder_->lock_.Unlock(); | 738 // Lock new recorder. |
| 739 recorder_->lock_.Lock(); |
| 740 // Queue up first block. |
| 741 current_ = recorder_->GetHeadBlock(); |
| 730 } | 742 } |
| 731 | 743 |
| 732 | 744 |
| 733 void TimelineEventBlockIterator::Reset() { | 745 bool TimelineEventBlockIterator::HasNext() const { |
| 734 current_ = NULL; | 746 return current_ != NULL; |
| 735 } | 747 } |
| 736 | 748 |
| 737 | 749 |
| 738 bool TimelineEventBlockIterator::Next() { | 750 TimelineEventBlock* TimelineEventBlockIterator::Next() { |
| 739 if (recorder_ == NULL) { | 751 ASSERT(current_ != NULL); |
| 740 return false; | 752 TimelineEventBlock* r = current_; |
| 741 } | 753 current_ = current_->next(); |
| 742 if (current_ == NULL) { | 754 return r; |
| 743 current_ = recorder_->GetHeadBlock(); | |
| 744 } else { | |
| 745 current_ = current_->next(); | |
| 746 } | |
| 747 return current_ != NULL; | |
| 748 } | 755 } |
| 749 | 756 |
| 750 } // namespace dart | 757 } // namespace dart |
| OLD | NEW |