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()) { |