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

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

Issue 3004563003: Refactor Isolate name format, storage and log (Closed)
Patch Set: Make Dart_DebugName unique again Created 3 years, 3 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/json_stream.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 "include/dart_native_api.h" 8 #include "include/dart_native_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/text_buffer.h" 10 #include "platform/text_buffer.h"
(...skipping 741 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 current_tag_(UserTag::null()), 752 current_tag_(UserTag::null()),
753 default_tag_(UserTag::null()), 753 default_tag_(UserTag::null()),
754 ic_miss_code_(Code::null()), 754 ic_miss_code_(Code::null()),
755 object_store_(NULL), 755 object_store_(NULL),
756 class_table_(), 756 class_table_(),
757 single_step_(false), 757 single_step_(false),
758 isolate_flags_(0), 758 isolate_flags_(0),
759 background_compiler_disabled_depth_(0), 759 background_compiler_disabled_depth_(0),
760 background_compiler_(NULL), 760 background_compiler_(NULL),
761 #if !defined(PRODUCT) 761 #if !defined(PRODUCT)
762 debugger_name_(NULL),
763 debugger_(NULL), 762 debugger_(NULL),
764 last_resume_timestamp_(OS::GetCurrentTimeMillis()), 763 last_resume_timestamp_(OS::GetCurrentTimeMillis()),
765 last_allocationprofile_accumulator_reset_timestamp_(0), 764 last_allocationprofile_accumulator_reset_timestamp_(0),
766 last_allocationprofile_gc_timestamp_(0), 765 last_allocationprofile_gc_timestamp_(0),
767 vm_tag_counters_(), 766 vm_tag_counters_(),
768 pending_service_extension_calls_(GrowableObjectArray::null()), 767 pending_service_extension_calls_(GrowableObjectArray::null()),
769 registered_service_extension_handlers_(GrowableObjectArray::null()), 768 registered_service_extension_handlers_(GrowableObjectArray::null()),
770 metrics_list_head_(NULL), 769 metrics_list_head_(NULL),
771 pause_loop_monitor_(NULL), 770 pause_loop_monitor_(NULL),
772 #define ISOLATE_METRIC_CONSTRUCTORS(type, variable, name, unit) \ 771 #define ISOLATE_METRIC_CONSTRUCTORS(type, variable, name, unit) \
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 // how the vm_tag (kEmbedderTagId) can be set, these tags need to 822 // how the vm_tag (kEmbedderTagId) can be set, these tags need to
824 // move to the OSThread structure. 823 // move to the OSThread structure.
825 set_user_tag(UserTags::kDefaultUserTag); 824 set_user_tag(UserTags::kDefaultUserTag);
826 } 825 }
827 826
828 #undef REUSABLE_HANDLE_SCOPE_INIT 827 #undef REUSABLE_HANDLE_SCOPE_INIT
829 #undef REUSABLE_HANDLE_INITIALIZERS 828 #undef REUSABLE_HANDLE_INITIALIZERS
830 829
831 Isolate::~Isolate() { 830 Isolate::~Isolate() {
832 #if !defined(PRODUCT) 831 #if !defined(PRODUCT)
833 free(debugger_name_);
834 delete debugger_; 832 delete debugger_;
835 if (FLAG_support_service) { 833 if (FLAG_support_service) {
836 delete object_id_ring_; 834 delete object_id_ring_;
837 } 835 }
838 object_id_ring_ = NULL; 836 object_id_ring_ = NULL;
839 delete pause_loop_monitor_; 837 delete pause_loop_monitor_;
840 pause_loop_monitor_ = NULL; 838 pause_loop_monitor_ = NULL;
841 #endif // !defined(PRODUCT) 839 #endif // !defined(PRODUCT)
842 840
843 free(name_); 841 free(name_);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
974 void Isolate::ScheduleMessageInterrupts() { 972 void Isolate::ScheduleMessageInterrupts() {
975 // We take the threads lock here to ensure that the mutator thread does not 973 // We take the threads lock here to ensure that the mutator thread does not
976 // exit the isolate while we are trying to schedule interrupts on it. 974 // exit the isolate while we are trying to schedule interrupts on it.
977 MonitorLocker ml(threads_lock()); 975 MonitorLocker ml(threads_lock());
978 Thread* mthread = mutator_thread(); 976 Thread* mthread = mutator_thread();
979 if (mthread != NULL) { 977 if (mthread != NULL) {
980 mthread->ScheduleInterrupts(Thread::kMessageInterrupt); 978 mthread->ScheduleInterrupts(Thread::kMessageInterrupt);
981 } 979 }
982 } 980 }
983 981
984 #if !defined(PRODUCT) 982 void Isolate::set_name(const char* name) {
985 void Isolate::set_debugger_name(const char* name) { 983 free(name_);
986 free(debugger_name_); 984 name_ = strdup(name);
987 debugger_name_ = strdup(name);
988 } 985 }
989 #endif // !defined(PRODUCT)
990 986
991 int64_t Isolate::UptimeMicros() const { 987 int64_t Isolate::UptimeMicros() const {
992 return OS::GetCurrentMonotonicMicros() - start_time_micros_; 988 return OS::GetCurrentMonotonicMicros() - start_time_micros_;
993 } 989 }
994 990
995 bool Isolate::IsPaused() const { 991 bool Isolate::IsPaused() const {
996 #if defined(PRODUCT) 992 #if defined(PRODUCT)
997 return false; 993 return false;
998 #else 994 #else
999 return (debugger_ != NULL) && (debugger_->PauseEvent() != NULL); 995 return (debugger_ != NULL) && (debugger_->PauseEvent() != NULL);
(...skipping 15 matching lines...) Expand all
1015 UNREACHABLE(); 1011 UNREACHABLE();
1016 } 1012 }
1017 } 1013 }
1018 #endif 1014 #endif
1019 return Error::null(); 1015 return Error::null();
1020 } 1016 }
1021 1017
1022 void Isolate::BuildName(const char* name_prefix) { 1018 void Isolate::BuildName(const char* name_prefix) {
1023 ASSERT(name_ == NULL); 1019 ASSERT(name_ == NULL);
1024 if (name_prefix == NULL) { 1020 if (name_prefix == NULL) {
1025 name_prefix = "isolate"; 1021 name_ = OS::SCreate(NULL, "isolate-%" Pd64 "", main_port());
1022 } else {
1023 name_ = strdup(name_prefix);
1026 } 1024 }
1027 NOT_IN_PRODUCT(set_debugger_name(name_prefix));
1028 if (ServiceIsolate::NameEquals(name_prefix)) {
1029 name_ = strdup(name_prefix);
1030 return;
1031 }
1032 name_ = OS::SCreate(NULL, "%s-%" Pd64 "", name_prefix, main_port());
1033 } 1025 }
1034 1026
1035 void Isolate::DoneLoading() { 1027 void Isolate::DoneLoading() {
1036 GrowableObjectArray& libs = 1028 GrowableObjectArray& libs =
1037 GrowableObjectArray::Handle(current_zone(), object_store()->libraries()); 1029 GrowableObjectArray::Handle(current_zone(), object_store()->libraries());
1038 Library& lib = Library::Handle(current_zone()); 1030 Library& lib = Library::Handle(current_zone());
1039 intptr_t num_libs = libs.Length(); 1031 intptr_t num_libs = libs.Length();
1040 for (intptr_t i = 0; i < num_libs; i++) { 1032 for (intptr_t i = 0; i < num_libs; i++) {
1041 lib ^= libs.At(i); 1033 lib ^= libs.At(i);
1042 // If this library was loaded with Dart_LoadLibrary, it was marked 1034 // If this library was loaded with Dart_LoadLibrary, it was marked
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1900 1892
1901 void Isolate::PrintJSON(JSONStream* stream, bool ref) { 1893 void Isolate::PrintJSON(JSONStream* stream, bool ref) {
1902 if (!FLAG_support_service) { 1894 if (!FLAG_support_service) {
1903 return; 1895 return;
1904 } 1896 }
1905 JSONObject jsobj(stream); 1897 JSONObject jsobj(stream);
1906 jsobj.AddProperty("type", (ref ? "@Isolate" : "Isolate")); 1898 jsobj.AddProperty("type", (ref ? "@Isolate" : "Isolate"));
1907 jsobj.AddFixedServiceId(ISOLATE_SERVICE_ID_FORMAT_STRING, 1899 jsobj.AddFixedServiceId(ISOLATE_SERVICE_ID_FORMAT_STRING,
1908 static_cast<int64_t>(main_port())); 1900 static_cast<int64_t>(main_port()));
1909 1901
1910 jsobj.AddProperty("name", debugger_name()); 1902 jsobj.AddProperty("name", name());
1911 jsobj.AddPropertyF("number", "%" Pd64 "", static_cast<int64_t>(main_port())); 1903 jsobj.AddPropertyF("number", "%" Pd64 "", static_cast<int64_t>(main_port()));
1912 if (ref) { 1904 if (ref) {
1913 return; 1905 return;
1914 } 1906 }
1915 jsobj.AddPropertyF("_originNumber", "%" Pd64 "", 1907 jsobj.AddPropertyF("_originNumber", "%" Pd64 "",
1916 static_cast<int64_t>(origin_id())); 1908 static_cast<int64_t>(origin_id()));
1917 int64_t uptime_millis = UptimeMicros() / kMicrosecondsPerMillisecond; 1909 int64_t uptime_millis = UptimeMicros() / kMicrosecondsPerMillisecond;
1918 int64_t start_time = OS::GetCurrentTimeMillis() - uptime_millis; 1910 int64_t start_time = OS::GetCurrentTimeMillis() - uptime_millis;
1919 jsobj.AddPropertyTimeMillis("startTime", start_time); 1911 jsobj.AddPropertyTimeMillis("startTime", start_time);
1920 { 1912 {
(...skipping 918 matching lines...) Expand 10 before | Expand all | Expand 10 after
2839 void IsolateSpawnState::DecrementSpawnCount() { 2831 void IsolateSpawnState::DecrementSpawnCount() {
2840 ASSERT(spawn_count_monitor_ != NULL); 2832 ASSERT(spawn_count_monitor_ != NULL);
2841 ASSERT(spawn_count_ != NULL); 2833 ASSERT(spawn_count_ != NULL);
2842 MonitorLocker ml(spawn_count_monitor_); 2834 MonitorLocker ml(spawn_count_monitor_);
2843 ASSERT(*spawn_count_ > 0); 2835 ASSERT(*spawn_count_ > 0);
2844 *spawn_count_ = *spawn_count_ - 1; 2836 *spawn_count_ = *spawn_count_ - 1;
2845 ml.Notify(); 2837 ml.Notify();
2846 } 2838 }
2847 2839
2848 } // namespace dart 2840 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/json_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698