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

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

Issue 1412733008: Switch profiler from isolates to threads (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 unified diff | Download patch
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 #ifndef VM_ISOLATE_H_ 5 #ifndef VM_ISOLATE_H_
6 #define VM_ISOLATE_H_ 6 #define VM_ISOLATE_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "vm/atomic.h" 10 #include "vm/atomic.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 // Limited public access to BaseIsolate::mutator_thread_ for code that 148 // Limited public access to BaseIsolate::mutator_thread_ for code that
149 // must treat the mutator as the default or a special case. Prefer code 149 // must treat the mutator as the default or a special case. Prefer code
150 // that works uniformly across all threads. 150 // that works uniformly across all threads.
151 bool HasMutatorThread() { 151 bool HasMutatorThread() {
152 return mutator_thread_ != NULL; 152 return mutator_thread_ != NULL;
153 } 153 }
154 bool MutatorThreadIsCurrentThread() { 154 bool MutatorThreadIsCurrentThread() {
155 return mutator_thread_ == Thread::Current(); 155 return mutator_thread_ == Thread::Current();
156 } 156 }
157 bool IsMutatorThread(Thread* thread) {
158 ASSERT(thread != NULL);
159 return mutator_thread_ == thread;
160 }
siva 2015/10/26 23:45:26 Both these functions MutatorThreadIsCurrentThrea
Cutch 2015/10/27 22:36:24 I've switched to using thread->IsMutatorThread() a
157 161
158 const char* name() const { return name_; } 162 const char* name() const { return name_; }
159 const char* debugger_name() const { return debugger_name_; } 163 const char* debugger_name() const { return debugger_name_; }
160 void set_debugger_name(const char* name); 164 void set_debugger_name(const char* name);
161 165
162 int64_t start_time() const { return start_time_; } 166 int64_t start_time() const { return start_time_; }
163 167
164 Dart_Port main_port() const { return main_port_; } 168 Dart_Port main_port() const { return main_port_; }
165 void set_main_port(Dart_Port port) { 169 void set_main_port(Dart_Port port) {
166 ASSERT(main_port_ == 0); // Only set main port once. 170 ASSERT(main_port_ == 0); // Only set main port once.
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 void set_message_handler(MessageHandler* value) { message_handler_ = value; } 324 void set_message_handler(MessageHandler* value) { message_handler_ = value; }
321 325
322 bool is_runnable() const { return is_runnable_; } 326 bool is_runnable() const { return is_runnable_; }
323 void set_is_runnable(bool value) { is_runnable_ = value; } 327 void set_is_runnable(bool value) { is_runnable_ = value; }
324 328
325 IsolateSpawnState* spawn_state() const { return spawn_state_; } 329 IsolateSpawnState* spawn_state() const { return spawn_state_; }
326 void set_spawn_state(IsolateSpawnState* value) { spawn_state_ = value; } 330 void set_spawn_state(IsolateSpawnState* value) { spawn_state_ = value; }
327 331
328 Mutex* mutex() const { return mutex_; } 332 Mutex* mutex() const { return mutex_; }
329 333
334 bool HasDebugger() const {
335 return debugger_ != NULL;
336 }
337
330 Debugger* debugger() const { 338 Debugger* debugger() const {
331 ASSERT(debugger_ != NULL); 339 ASSERT(debugger_ != NULL);
332 return debugger_; 340 return debugger_;
333 } 341 }
334 342
335 void set_single_step(bool value) { single_step_ = value; } 343 void set_single_step(bool value) { single_step_ = value; }
336 bool single_step() const { return single_step_; } 344 bool single_step() const { return single_step_; }
337 static intptr_t single_step_offset() { 345 static intptr_t single_step_offset() {
338 return OFFSET_OF(Isolate, single_step_); 346 return OFFSET_OF(Isolate, single_step_);
339 } 347 }
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 intptr_t UnblockClassFinalization() { 571 intptr_t UnblockClassFinalization() {
564 ASSERT(defer_finalization_count_ > 0); 572 ASSERT(defer_finalization_count_ > 0);
565 return defer_finalization_count_--; 573 return defer_finalization_count_--;
566 } 574 }
567 575
568 bool AllowClassFinalization() { 576 bool AllowClassFinalization() {
569 ASSERT(defer_finalization_count_ >= 0); 577 ASSERT(defer_finalization_count_ >= 0);
570 return defer_finalization_count_ == 0; 578 return defer_finalization_count_ == 0;
571 } 579 }
572 580
573 Mutex* profiler_data_mutex() {
574 return &profiler_data_mutex_;
575 }
576
577 void set_profiler_data(IsolateProfilerData* profiler_data) {
578 profiler_data_ = profiler_data;
579 }
580
581 IsolateProfilerData* profiler_data() const {
582 return profiler_data_;
583 }
584
585 void PrintJSON(JSONStream* stream, bool ref = true); 581 void PrintJSON(JSONStream* stream, bool ref = true);
586 582
587 CompilerStats* compiler_stats() { 583 CompilerStats* compiler_stats() {
588 return compiler_stats_; 584 return compiler_stats_;
589 } 585 }
590 586
591 // Returns the number of sampled threads.
592 intptr_t ProfileInterrupt();
593
594 VMTagCounters* vm_tag_counters() { 587 VMTagCounters* vm_tag_counters() {
595 return &vm_tag_counters_; 588 return &vm_tag_counters_;
596 } 589 }
597 590
598 uword user_tag() const { 591 uword user_tag() const {
599 return user_tag_; 592 return user_tag_;
600 } 593 }
601 static intptr_t user_tag_offset() { 594 static intptr_t user_tag_offset() {
602 return OFFSET_OF(Isolate, user_tag_); 595 return OFFSET_OF(Isolate, user_tag_);
603 } 596 }
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 // Timestamps of last operation via service. 799 // Timestamps of last operation via service.
807 int64_t last_allocationprofile_accumulator_reset_timestamp_; 800 int64_t last_allocationprofile_accumulator_reset_timestamp_;
808 int64_t last_allocationprofile_gc_timestamp_; 801 int64_t last_allocationprofile_gc_timestamp_;
809 802
810 // Ring buffer of objects assigned an id. 803 // Ring buffer of objects assigned an id.
811 ObjectIdRing* object_id_ring_; 804 ObjectIdRing* object_id_ring_;
812 805
813 // Trace buffer support. 806 // Trace buffer support.
814 TraceBuffer* trace_buffer_; 807 TraceBuffer* trace_buffer_;
815 808
816 IsolateProfilerData* profiler_data_;
817 Mutex profiler_data_mutex_;
818
819 VMTagCounters vm_tag_counters_; 809 VMTagCounters vm_tag_counters_;
820 RawGrowableObjectArray* tag_table_; 810 RawGrowableObjectArray* tag_table_;
821 811
822 RawGrowableObjectArray* deoptimized_code_array_; 812 RawGrowableObjectArray* deoptimized_code_array_;
823 813
824 // Background compilation. 814 // Background compilation.
825 BackgroundCompiler* background_compiler_; 815 BackgroundCompiler* background_compiler_;
826 RawGrowableObjectArray* background_compilation_queue_; 816 RawGrowableObjectArray* background_compilation_queue_;
827 817
828 // We use 6 list entries for each pending service extension calls. 818 // We use 6 list entries for each pending service extension calls.
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 uint8_t* serialized_message_; 1035 uint8_t* serialized_message_;
1046 intptr_t serialized_message_len_; 1036 intptr_t serialized_message_len_;
1047 Isolate::Flags isolate_flags_; 1037 Isolate::Flags isolate_flags_;
1048 bool paused_; 1038 bool paused_;
1049 bool errors_are_fatal_; 1039 bool errors_are_fatal_;
1050 }; 1040 };
1051 1041
1052 } // namespace dart 1042 } // namespace dart
1053 1043
1054 #endif // VM_ISOLATE_H_ 1044 #endif // VM_ISOLATE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698