Chromium Code Reviews| Index: runtime/bin/main.cc |
| =================================================================== |
| --- runtime/bin/main.cc (revision 3366) |
| +++ runtime/bin/main.cc (working copy) |
| @@ -260,8 +260,10 @@ |
| } |
| -static bool CreateIsolateAndSetup(void* data, char** error) { |
| - Dart_Isolate isolate = Dart_CreateIsolate(snapshot_buffer, data, error); |
| +static bool CreateIsolateAndSetup(const char* name_prefix, |
| + void* data, char** error) { |
| + Dart_Isolate isolate = |
| + Dart_CreateIsolate(name_prefix, snapshot_buffer, data, error); |
| if (isolate == NULL) { |
| return false; |
| } |
| @@ -308,7 +310,7 @@ |
| Dart_Handle result; |
| // First create an isolate and load up the specified script in it. |
| - if (!CreateIsolateAndSetup(NULL, &error)) { |
| + if (!CreateIsolateAndSetup(NULL, NULL, &error)) { |
| fprintf(stderr, "%s\n", error); |
| free(canonical_script_name); |
| free(error); |
| @@ -359,6 +361,22 @@ |
| } |
| +char* BuildIsolateName(const char* script_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
Would skipping past slashes cause the name to be n
turnidge
2012/01/18 21:29:21
Yes and no. If there are two dart scripts with th
|
| + |
| + const char* kFormat = "%s/%s"; |
| + intptr_t len = strlen(script_name) + strlen(func_name) + 2; |
| + char* buffer = new char[len]; |
|
siva
2012/01/18 06:26:03
ASSERT(buffer != NULL);
turnidge
2012/01/18 21:29:21
Done.
|
| + snprintf(buffer, len, kFormat, script_name, func_name); |
| + return buffer; |
| +} |
| + |
| + |
| int main(int argc, char** argv) { |
| char* script_name; |
| CommandLineOptions vm_options(argc); |
| @@ -405,15 +423,18 @@ |
| // Call CreateIsolateAndSetup which creates an isolate and loads up |
| // the specified application script. |
| char* error = NULL; |
| - if (!CreateIsolateAndSetup(NULL, &error)) { |
| + char* isolate_name = BuildIsolateName(canonical_script_name, "main"); |
| + if (!CreateIsolateAndSetup(isolate_name, NULL, &error)) { |
| fprintf(stderr, "%s\n", error); |
| free(canonical_script_name); |
| free(error); |
| free(script_snapshot_buffer); |
| + delete [] isolate_name; |
| return 255; // Indicates we encountered an error. |
| } |
| + free(script_snapshot_buffer); // Don't need it anymore. |
| + delete [] isolate_name; |
| - free(script_snapshot_buffer); // Don't need it anymore. |
| Dart_Isolate isolate = Dart_CurrentIsolate(); |
| ASSERT(isolate != NULL); |
| Dart_Handle result; |
| @@ -440,7 +461,6 @@ |
| free(canonical_script_name); |
| return 255; // Indicates we encountered an error. |
| } |
| - |
| // Lookup the library of the main script. |
| Dart_Handle script_url = Dart_NewString(canonical_script_name); |
| Dart_Handle library = Dart_LookupLibrary(script_url); |