| Index: runtime/vm/isolate.cc
|
| ===================================================================
|
| --- runtime/vm/isolate.cc (revision 3366)
|
| +++ runtime/vm/isolate.cc (working copy)
|
| @@ -28,7 +28,9 @@
|
| namespace dart {
|
|
|
| DEFINE_FLAG(bool, report_invocation_count, false,
|
| - "Count function invocations and report.");
|
| + "Count function invocations and report.");
|
| +DEFINE_FLAG(bool, trace_isolates, false,
|
| + "Trace isolate creation and shut down.");
|
| DECLARE_FLAG(bool, generate_gdb_symbols);
|
|
|
|
|
| @@ -37,6 +39,7 @@
|
| message_queue_(NULL),
|
| post_message_callback_(NULL),
|
| close_port_callback_(NULL),
|
| + name_(NULL),
|
| num_ports_(0),
|
| live_ports_(0),
|
| main_port_(0),
|
| @@ -69,6 +72,7 @@
|
|
|
|
|
| Isolate::~Isolate() {
|
| + delete [] name_;
|
| delete message_queue_;
|
| delete heap_;
|
| delete object_store_;
|
| @@ -107,7 +111,7 @@
|
| }
|
|
|
|
|
| -Isolate* Isolate::Init() {
|
| +Isolate* Isolate::Init(const char* name_prefix) {
|
| Isolate* result = new Isolate();
|
| ASSERT(result != NULL);
|
|
|
| @@ -133,14 +137,32 @@
|
| // main thread.
|
| result->SetStackLimitFromCurrentTOS(reinterpret_cast<uword>(&result));
|
| result->set_main_port(PortMap::CreatePort());
|
| + result->BuildName(name_prefix);
|
|
|
| result->debugger_ = new Debugger();
|
| result->debugger_->Initialize(result);
|
| -
|
| + if (FLAG_trace_isolates) {
|
| + if (strcmp(name_prefix, "vm-isolate") != 0) {
|
| + OS::Print("[+] Starting isolate:\n"
|
| + "\tisolate: %s\n", result->name());
|
| + }
|
| + }
|
| return result;
|
| }
|
|
|
|
|
| +void Isolate::BuildName(const char* name_prefix) {
|
| + ASSERT(name_ == NULL);
|
| + if (name_prefix == NULL) {
|
| + name_prefix = "isolate";
|
| + }
|
| + const char* kFormat = "%s-%lld";
|
| + intptr_t len = OS::SNPrint(NULL, 0, kFormat, name_prefix, main_port()) + 1;
|
| + name_ = new char[len];
|
| + OS::SNPrint(name_, len, kFormat, name_prefix, main_port());
|
| +}
|
| +
|
| +
|
| // TODO(5411455): Use flag to override default value and Validate the
|
| // stack size by querying OS.
|
| uword Isolate::GetSpecifiedStackSize() {
|
| @@ -256,7 +278,10 @@
|
| if (FLAG_generate_gdb_symbols) {
|
| DebugInfo::UnregisterAllSections();
|
| }
|
| -
|
| + if (FLAG_trace_isolates) {
|
| + OS::Print("[-] Stopping isolate:\n"
|
| + "\tisolate: %s\n", name());
|
| + }
|
| // TODO(5411455): For now just make sure there are no current isolates
|
| // as we are shutting down the isolate.
|
| SetCurrent(NULL);
|
|
|