Chromium Code Reviews| Index: runtime/lib/isolate.cc |
| =================================================================== |
| --- runtime/lib/isolate.cc (revision 3367) |
| +++ runtime/lib/isolate.cc (working copy) |
| @@ -248,6 +248,25 @@ |
| } |
| +static char* BuildIsolateName(const char* script_name, |
| + const char* class_name, |
| + const char* func_name) { |
| + // Skip past any slashes in the script name. |
| + const char* last_slash = strrchr(script_name, '/'); |
| + if (last_slash != NULL) { |
| + script_name = last_slash + 1; |
| + } |
|
siva
2012/01/18 06:26:03
Ditto comment regarding stripping script name.
turnidge
2012/01/18 21:29:21
Yeah, ditto reply.
|
| + |
| + const char* kFormat = "%s/%s.%s"; |
| + intptr_t len = OS::SNPrint(NULL, 0, kFormat, script_name, class_name, |
| + func_name) + 1; |
| + char* chars = reinterpret_cast<char*>( |
| + Isolate::Current()->current_zone()->Allocate(len)); |
| + OS::SNPrint(chars, len, kFormat, script_name, class_name, func_name); |
| + return chars; |
| +} |
| + |
| + |
| DEFINE_NATIVE_ENTRY(IsolateNatives_start, 2) { |
| Isolate* preserved_isolate = Isolate::Current(); |
| const Instance& runnable = Instance::CheckedHandle(arguments->At(0)); |
| @@ -263,9 +282,10 @@ |
| void* callback_data = preserved_isolate->init_callback_data(); |
| char* error = NULL; |
| Dart_IsolateCreateCallback callback = Isolate::CreateCallback(); |
| + const char* isolate_name = BuildIsolateName(library_url, class_name, "main"); |
|
siva
2012/01/18 06:26:03
Is the default function "main" or "run" I forget.
turnidge
2012/01/18 21:29:21
Well, the vm invokes a hidden _run() function on t
|
| if (callback == NULL) { |
| error = strdup("Null callback specified for isolate creation\n"); |
| - } else if (callback(callback_data, &error)) { |
| + } else if (callback(isolate_name, callback_data, &error)) { |
| spawned_isolate = Isolate::Current(); |
| ASSERT(spawned_isolate != NULL); |
| // Check arguments to see if the specified library and classes are |