| Index: runtime/vm/service.cc
|
| diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
|
| index 5cb1721fe4c6f39d172614bfc4d55750c3bf79df..0a59f071f5621def10d86eba7b4f3cd03d58e13a 100644
|
| --- a/runtime/vm/service.cc
|
| +++ b/runtime/vm/service.cc
|
| @@ -529,6 +529,7 @@ void Service::SetEventMask(uint32_t mask) {
|
| void Service::SendEvent(intptr_t eventFamilyId,
|
| intptr_t eventType,
|
| const Object& eventMessage) {
|
| + ASSERT(!ServiceIsolate::IsServiceIsolate(Isolate::Current()));
|
| if (!ServiceIsolate::IsRunning()) {
|
| return;
|
| }
|
| @@ -591,6 +592,9 @@ void Service::SendEvent(intptr_t eventFamilyId,
|
|
|
|
|
| void Service::HandleGCEvent(GCEvent* event) {
|
| + if (ServiceIsolate::IsServiceIsolate(Isolate::Current())) {
|
| + return;
|
| + }
|
| JSONStream js;
|
| event->PrintJSON(&js);
|
| const String& message = String::Handle(String::New(js.ToCString()));
|
| @@ -2438,7 +2442,6 @@ static bool GetVM(Isolate* isolate, JSONStream* js) {
|
| jsobj.AddProperty("architectureBits", static_cast<intptr_t>(kBitsPerWord));
|
| jsobj.AddProperty("targetCPU", CPU::Id());
|
| jsobj.AddProperty("hostCPU", HostCPUFeatures::hardware());
|
| - jsobj.AddPropertyF("date", "%" Pd64 "", OS::GetCurrentTimeMillis());
|
| jsobj.AddProperty("version", Version::String());
|
| // Send pid as a string because it allows us to avoid any issues with
|
| // pids > 53-bits (when consumed by JavaScript).
|
| @@ -2446,12 +2449,10 @@ static bool GetVM(Isolate* isolate, JSONStream* js) {
|
| jsobj.AddPropertyF("pid", "%" Pd "", OS::ProcessId());
|
| jsobj.AddProperty("assertsEnabled", isolate->AssertsEnabled());
|
| jsobj.AddProperty("typeChecksEnabled", isolate->TypeChecksEnabled());
|
| - int64_t start_time_micros = Dart::vm_isolate()->start_time();
|
| - int64_t uptime_micros = (OS::GetCurrentTimeMicros() - start_time_micros);
|
| - double seconds = (static_cast<double>(uptime_micros) /
|
| - static_cast<double>(kMicrosecondsPerSecond));
|
| - jsobj.AddProperty("uptime", seconds);
|
| -
|
| + int64_t start_time_millis = (Dart::vm_isolate()->start_time() /
|
| + kMicrosecondsPerMillisecond);
|
| + jsobj.AddProperty64("refreshTime", OS::GetCurrentTimeMillis());
|
| + jsobj.AddProperty64("startTime", start_time_millis);
|
| // Construct the isolate list.
|
| {
|
| JSONArray jsarr(&jsobj, "isolates");
|
| @@ -2506,6 +2507,25 @@ static bool SetFlag(Isolate* isolate, JSONStream* js) {
|
| }
|
|
|
|
|
| +static const MethodParameter* set_name_params[] = {
|
| + ISOLATE_PARAMETER,
|
| + new MethodParameter("name", true),
|
| + NULL,
|
| +};
|
| +
|
| +
|
| +static bool SetName(Isolate* isolate, JSONStream* js) {
|
| + isolate->set_debugger_name(js->LookupParam("name"));
|
| + {
|
| + ServiceEvent event(isolate, ServiceEvent::kIsolateUpdate);
|
| + Service::HandleEvent(&event);
|
| + }
|
| + JSONObject jsobj(js);
|
| + jsobj.AddProperty("type", "Success");
|
| + return true;
|
| +}
|
| +
|
| +
|
| static ServiceMethodDescriptor service_methods_[] = {
|
| { "_echo", _Echo,
|
| NULL },
|
| @@ -2577,8 +2597,10 @@ static ServiceMethodDescriptor service_methods_[] = {
|
| resume_params },
|
| { "requestHeapSnapshot", RequestHeapSnapshot,
|
| request_heap_snapshot_params },
|
| - { "setFlag", SetFlag ,
|
| + { "setFlag", SetFlag,
|
| set_flags_params },
|
| + { "setName", SetName,
|
| + set_name_params },
|
| };
|
|
|
|
|
|
|