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

Unified Diff: runtime/bin/main.cc

Issue 9242035: Give isolates names to be used during debugging. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 11 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/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,23 @@
}
+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;
+ }
+
+ const char* kFormat = "%s/%s";
+ intptr_t len = strlen(script_name) + strlen(func_name) + 2;
+ char* buffer = new char[len];
+ ASSERT(buffer != NULL);
+ 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 +424,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 +462,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);

Powered by Google App Engine
This is Rietveld 408576698