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

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

Issue 1173333007: Refactor some Timeline interfaces to be simpler and support streaming (Closed) Base URL: git@github.com:dart-lang/sdk.git@timeline2
Patch Set: Created 5 years, 6 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/isolate.h ('k') | runtime/vm/service_isolate.cc » ('j') | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 "vm/isolate.h" 5 #include "vm/isolate.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "platform/json.h" 9 #include "platform/json.h"
10 #include "vm/code_observers.h" 10 #include "vm/code_observers.h"
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 edge_counter_increment_size_(-1), 662 edge_counter_increment_size_(-1),
663 compiler_stats_(NULL), 663 compiler_stats_(NULL),
664 is_service_isolate_(false), 664 is_service_isolate_(false),
665 log_(new class Log()), 665 log_(new class Log()),
666 stacktrace_(NULL), 666 stacktrace_(NULL),
667 stack_frame_index_(-1), 667 stack_frame_index_(-1),
668 last_allocationprofile_accumulator_reset_timestamp_(0), 668 last_allocationprofile_accumulator_reset_timestamp_(0),
669 last_allocationprofile_gc_timestamp_(0), 669 last_allocationprofile_gc_timestamp_(0),
670 object_id_ring_(NULL), 670 object_id_ring_(NULL),
671 trace_buffer_(NULL), 671 trace_buffer_(NULL),
672 timeline_event_buffer_(NULL), 672 timeline_event_recorder_(NULL),
673 profiler_data_(NULL), 673 profiler_data_(NULL),
674 thread_state_(NULL), 674 thread_state_(NULL),
675 tag_table_(GrowableObjectArray::null()), 675 tag_table_(GrowableObjectArray::null()),
676 current_tag_(UserTag::null()), 676 current_tag_(UserTag::null()),
677 default_tag_(UserTag::null()), 677 default_tag_(UserTag::null()),
678 deoptimized_code_array_(GrowableObjectArray::null()), 678 deoptimized_code_array_(GrowableObjectArray::null()),
679 metrics_list_head_(NULL), 679 metrics_list_head_(NULL),
680 cha_(NULL), 680 cha_(NULL),
681 next_(NULL), 681 next_(NULL),
682 pause_loop_monitor_(NULL), 682 pause_loop_monitor_(NULL),
(...skipping 28 matching lines...) Expand all
711 delete log_; 711 delete log_;
712 log_ = NULL; 712 log_ = NULL;
713 delete object_id_ring_; 713 delete object_id_ring_;
714 object_id_ring_ = NULL; 714 object_id_ring_ = NULL;
715 delete pause_loop_monitor_; 715 delete pause_loop_monitor_;
716 pause_loop_monitor_ = NULL; 716 pause_loop_monitor_ = NULL;
717 if (compiler_stats_ != NULL) { 717 if (compiler_stats_ != NULL) {
718 delete compiler_stats_; 718 delete compiler_stats_;
719 compiler_stats_ = NULL; 719 compiler_stats_ = NULL;
720 } 720 }
721 RemoveTimelineEventBuffer(); 721 RemoveTimelineEventRecorder();
722 } 722 }
723 723
724 724
725 #if defined(DEBUG) 725 #if defined(DEBUG)
726 bool Isolate::IsIsolateOf(Thread* thread) { 726 bool Isolate::IsIsolateOf(Thread* thread) {
727 return this == thread->isolate(); 727 return this == thread->isolate();
728 } 728 }
729 #endif // DEBUG 729 #endif // DEBUG
730 730
731 731
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 message_handler()->set_pause_on_start(FLAG_pause_isolates_on_start); 976 message_handler()->set_pause_on_start(FLAG_pause_isolates_on_start);
977 message_handler()->set_pause_on_exit(FLAG_pause_isolates_on_exit); 977 message_handler()->set_pause_on_exit(FLAG_pause_isolates_on_exit);
978 } 978 }
979 IsolateSpawnState* state = spawn_state(); 979 IsolateSpawnState* state = spawn_state();
980 if (state != NULL) { 980 if (state != NULL) {
981 ASSERT(this == state->isolate()); 981 ASSERT(this == state->isolate());
982 Run(); 982 Run();
983 } 983 }
984 TimelineStream* stream = GetIsolateStream(); 984 TimelineStream* stream = GetIsolateStream();
985 ASSERT(stream != NULL); 985 ASSERT(stream != NULL);
986 TimelineEvent* event = stream->RecordEvent(); 986 TimelineEvent* event = stream->StartEvent();
987 if (event != NULL) { 987 if (event != NULL) {
988 event->Instant(stream, "Runnable"); 988 event->Instant("Runnable");
989 event->Complete();
989 } 990 }
990 return true; 991 return true;
991 } 992 }
992 993
993 994
994 bool Isolate::VerifyPauseCapability(const Object& capability) const { 995 bool Isolate::VerifyPauseCapability(const Object& capability) const {
995 return !capability.IsNull() && 996 return !capability.IsNull() &&
996 capability.IsCapability() && 997 capability.IsCapability() &&
997 (pause_capability() == Capability::Cast(capability).Id()); 998 (pause_capability() == Capability::Cast(capability).Id());
998 } 999 }
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
1470 api_state()->prologue_weak_persistent_handles().VisitHandles(&visitor); 1471 api_state()->prologue_weak_persistent_handles().VisitHandles(&visitor);
1471 1472
1472 if (FLAG_trace_isolates) { 1473 if (FLAG_trace_isolates) {
1473 heap()->PrintSizes(); 1474 heap()->PrintSizes();
1474 megamorphic_cache_table()->PrintSizes(); 1475 megamorphic_cache_table()->PrintSizes();
1475 Symbols::DumpStats(); 1476 Symbols::DumpStats();
1476 OS::Print("[-] Stopping isolate:\n" 1477 OS::Print("[-] Stopping isolate:\n"
1477 "\tisolate: %s\n", name()); 1478 "\tisolate: %s\n", name());
1478 } 1479 }
1479 1480
1480 if ((timeline_event_buffer_ != NULL) && (FLAG_timeline_trace_dir != NULL)) { 1481 if ((timeline_event_recorder_ != NULL) &&
1481 timeline_event_buffer_->WriteTo(FLAG_timeline_trace_dir); 1482 (FLAG_timeline_trace_dir != NULL)) {
1483 timeline_event_recorder_->WriteTo(FLAG_timeline_trace_dir);
1482 } 1484 }
1483 } 1485 }
1484 1486
1485 // TODO(5411455): For now just make sure there are no current isolates 1487 // TODO(5411455): For now just make sure there are no current isolates
1486 // as we are shutting down the isolate. 1488 // as we are shutting down the isolate.
1487 Thread::ExitIsolate(); 1489 Thread::ExitIsolate();
1488 Profiler::ShutdownProfilingForIsolate(this); 1490 Profiler::ShutdownProfilingForIsolate(this);
1489 } 1491 }
1490 1492
1491 1493
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1571 } 1573 }
1572 1574
1573 1575
1574 void Isolate::VisitPrologueWeakPersistentHandles(HandleVisitor* visitor) { 1576 void Isolate::VisitPrologueWeakPersistentHandles(HandleVisitor* visitor) {
1575 if (api_state() != NULL) { 1577 if (api_state() != NULL) {
1576 api_state()->VisitPrologueWeakHandles(visitor); 1578 api_state()->VisitPrologueWeakHandles(visitor);
1577 } 1579 }
1578 } 1580 }
1579 1581
1580 1582
1581 void Isolate::SetTimelineEventBuffer( 1583 void Isolate::SetTimelineEventRecorder(
1582 TimelineEventBuffer* timeline_event_buffer) { 1584 TimelineEventRecorder* timeline_event_recorder) {
1583 #define ISOLATE_TIMELINE_STREAM_SET_BUFFER(name, enabled_by_default) \ 1585 #define ISOLATE_TIMELINE_STREAM_SET_BUFFER(name, enabled_by_default) \
1584 stream_##name##_.set_buffer(timeline_event_buffer); 1586 stream_##name##_.set_recorder(timeline_event_recorder);
1585 ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_SET_BUFFER) 1587 ISOLATE_TIMELINE_STREAM_LIST(ISOLATE_TIMELINE_STREAM_SET_BUFFER)
1586 #undef ISOLATE_TIMELINE_STREAM_SET_BUFFER 1588 #undef ISOLATE_TIMELINE_STREAM_SET_BUFFER
1587 timeline_event_buffer_ = timeline_event_buffer; 1589 timeline_event_recorder_ = timeline_event_recorder;
1588 } 1590 }
1589 1591
1590 void Isolate::RemoveTimelineEventBuffer() { 1592 void Isolate::RemoveTimelineEventRecorder() {
1591 SetTimelineEventBuffer(NULL); 1593 SetTimelineEventRecorder(NULL);
1592 delete timeline_event_buffer_; 1594 delete timeline_event_recorder_;
1593 } 1595 }
1594 1596
1595 1597
1596 void Isolate::PrintJSON(JSONStream* stream, bool ref) { 1598 void Isolate::PrintJSON(JSONStream* stream, bool ref) {
1597 JSONObject jsobj(stream); 1599 JSONObject jsobj(stream);
1598 jsobj.AddProperty("type", (ref ? "@Isolate" : "Isolate")); 1600 jsobj.AddProperty("type", (ref ? "@Isolate" : "Isolate"));
1599 jsobj.AddFixedServiceId("isolates/%" Pd "", 1601 jsobj.AddFixedServiceId("isolates/%" Pd "",
1600 static_cast<intptr_t>(main_port())); 1602 static_cast<intptr_t>(main_port()));
1601 1603
1602 jsobj.AddProperty("name", debugger_name()); 1604 jsobj.AddProperty("name", debugger_name());
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 serialized_message_, serialized_message_len_); 2076 serialized_message_, serialized_message_len_);
2075 } 2077 }
2076 2078
2077 2079
2078 void IsolateSpawnState::Cleanup() { 2080 void IsolateSpawnState::Cleanup() {
2079 SwitchIsolateScope switch_scope(I); 2081 SwitchIsolateScope switch_scope(I);
2080 Dart::ShutdownIsolate(); 2082 Dart::ShutdownIsolate();
2081 } 2083 }
2082 2084
2083 } // namespace dart 2085 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/service_isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698