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

Unified Diff: runtime/vm/isolate.cc

Issue 1007863003: Allow Observatory debugger to switch isolates. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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()) {

Powered by Google App Engine
This is Rietveld 408576698