Chromium Code Reviews| Index: runtime/vm/isolate.cc |
| diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
| index fbd6938f59eaa171662e6feb6087989965f8ec78..0149a7e2f1a8d648d56d6ea0bb445bd124eb0aa6 100644 |
| --- a/runtime/vm/isolate.cc |
| +++ b/runtime/vm/isolate.cc |
| @@ -539,6 +539,7 @@ Isolate::Isolate() |
| store_buffer_(), |
| message_notify_callback_(NULL), |
| name_(NULL), |
| + debugger_name_(NULL), |
| start_time_(OS::GetCurrentTimeMicros()), |
| main_port_(0), |
| origin_id_(0), |
| @@ -606,6 +607,7 @@ Isolate::Isolate(Isolate* original) |
| class_table_(original->class_table()), |
| message_notify_callback_(NULL), |
| name_(NULL), |
| + debugger_name_(NULL), |
| start_time_(OS::GetCurrentTimeMicros()), |
| main_port_(0), |
| pause_capability_(0), |
| @@ -664,6 +666,7 @@ Isolate::Isolate(Isolate* original) |
| Isolate::~Isolate() { |
| free(name_); |
| + free(debugger_name_); |
| delete heap_; |
| delete object_store_; |
| delete api_state_; |
| @@ -769,7 +772,6 @@ Isolate* Isolate::Init(const char* name_prefix, bool is_vm_isolate) { |
| result->set_terminate_capability(result->random()->NextUInt64()); |
| result->BuildName(name_prefix); |
| - |
| result->debugger_ = new Debugger(); |
| result->debugger_->Initialize(result); |
| if (FLAG_trace_isolates) { |
| @@ -813,11 +815,18 @@ uword Isolate::GetCurrentStackPointer() { |
| } |
| +void Isolate::set_debugger_name(const char* name) { |
| + free(debugger_name_); |
| + debugger_name_ = strdup(name); |
| +} |
| + |
| + |
| void Isolate::BuildName(const char* name_prefix) { |
| ASSERT(name_ == NULL); |
| if (name_prefix == NULL) { |
| name_prefix = "isolate"; |
| } |
| + set_debugger_name(name_prefix); |
| if (ServiceIsolate::NameEquals(name_prefix)) { |
| name_ = strdup(name_prefix); |
| return; |
| @@ -929,6 +938,7 @@ void Isolate::DoneLoading() { |
| bool Isolate::MakeRunnable() { |
| ASSERT(Isolate::Current() == NULL); |
| + |
| MutexLocker ml(mutex_); |
| // Check if we are in a valid state to make the isolate runnable. |
| if (is_runnable_ == true) { |
| @@ -1535,18 +1545,14 @@ void Isolate::PrintJSON(JSONStream* stream, bool ref) { |
| // Assign an isolate name based on the entry function. |
| IsolateSpawnState* state = spawn_state(); |
| - if (state == NULL) { |
| - jsobj.AddPropertyF("name", "root"); |
| - } else if (state->class_name() != NULL) { |
| - jsobj.AddPropertyF("name", "%s.%s", |
| - state->class_name(), |
| - state->function_name()); |
| - } else { |
| - jsobj.AddPropertyF("name", "%s", state->function_name()); |
| - } |
| + jsobj.AddProperty("name", debugger_name()); |
| + jsobj.AddPropertyF("number", "%" Pd "", |
|
Cutch
2015/03/18 20:05:48
This is the same as "mainPort" above. Consider dro
turnidge
2015/03/26 17:46:58
Dropped mainPort. Leaving number as-is for now af
|
| + static_cast<intptr_t>(main_port())); |
| if (ref) { |
| return; |
| } |
| + int64_t start_time_millis = start_time() / kMicrosecondsPerMillisecond; |
| + jsobj.AddProperty64("startTime", start_time_millis); |
| if (state != NULL) { |
| const Object& entry = Object::Handle(this, state->ResolveFunction()); |
| if (!entry.IsNull() && entry.IsFunction()) { |