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

Unified Diff: runtime/bin/main.cc

Issue 10332257: Revert my last change. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 7 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
« no previous file with comments | « runtime/bin/gen_snapshot.cc ('k') | runtime/include/dart_api.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/main.cc
===================================================================
--- runtime/bin/main.cc (revision 7756)
+++ runtime/bin/main.cc (working copy)
@@ -25,8 +25,10 @@
extern const uint8_t* snapshot_buffer;
-// Global state that stores the original working directory..
+// Global state that stores a pointer to the application script file.
+static const char* original_script_name = NULL;
static const char* original_working_directory = NULL;
+static const char* original_script_url = NULL;
// Global state that stores the import URL map specified on the
@@ -65,15 +67,6 @@
static bool has_compile_all = false;
-static bool IsWindowsHost() {
-#if defined(TARGET_OS_WINDOWS)
- return true;
-#else // defined(TARGET_OS_WINDOWS)
- return false;
-#endif // defined(TARGET_OS_WINDOWS)
-}
-
-
static bool IsValidFlag(const char* name,
const char* prefix,
intptr_t prefix_length) {
@@ -304,34 +297,10 @@
}
-
-static Dart_Handle ResolveScriptUri(Dart_Handle script_uri,
- Dart_Handle builtin_lib) {
- const int kNumArgs = 3;
- Dart_Handle dart_args[kNumArgs];
- dart_args[0] = Dart_NewString(original_working_directory);
- dart_args[1] = script_uri;
- dart_args[2] = (IsWindowsHost() ? Dart_True() : Dart_False());
- return Dart_Invoke(
- builtin_lib, Dart_NewString("_resolveScriptUri"), kNumArgs, dart_args);
-}
-
-
-static Dart_Handle FilePathFromUri(Dart_Handle script_uri,
- Dart_Handle builtin_lib) {
- const int kNumArgs = 2;
- Dart_Handle dart_args[kNumArgs];
- dart_args[0] = script_uri;
- dart_args[1] = (IsWindowsHost() ? Dart_True() : Dart_False());
- Dart_Handle script_path = Dart_Invoke(
- builtin_lib, Dart_NewString("_filePathFromUri"), kNumArgs, dart_args);
- return script_path;
-}
-
-
static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag,
Dart_Handle library,
- Dart_Handle url) {
+ Dart_Handle url,
+ Dart_Handle import_map) {
if (!Dart_IsLibrary(library)) {
return Dart_Error("not a library");
}
@@ -357,12 +326,11 @@
if (Dart_IsError(library_url)) {
return library_url;
}
- const int kNumArgs = 2;
- Dart_Handle dart_args[kNumArgs];
+ Dart_Handle dart_args[2];
dart_args[0] = library_url;
dart_args[1] = url;
return Dart_Invoke(
- builtin_lib, Dart_NewString("_resolveUri"), kNumArgs, dart_args);
+ builtin_lib, Dart_NewString("_resolveUri"), 2, dart_args);
}
if (is_dart_scheme_url) {
ASSERT(tag == kImportTag);
@@ -383,7 +351,10 @@
} else {
// Get the file path out of the url.
Dart_Handle builtin_lib = Builtin::LoadLibrary(Builtin::kBuiltinLibrary);
- Dart_Handle file_path = FilePathFromUri(url, builtin_lib);
+ Dart_Handle dart_args[1];
+ dart_args[0] = url;
+ Dart_Handle file_path = Dart_Invoke(
+ builtin_lib, Dart_NewString("_filePathFromUri"), 1, dart_args);
if (Dart_IsError(file_path)) {
return file_path;
}
@@ -399,7 +370,8 @@
library,
url,
tag,
- url_string);
+ url_string,
+ import_map);
if (!Dart_IsError(result) && (tag == kImportTag)) {
Builtin::ImportLibrary(result, Builtin::kBuiltinLibrary);
}
@@ -407,41 +379,39 @@
}
-static Dart_Handle ReadSource(Dart_Handle script_uri,
- Dart_Handle builtin_lib) {
- Dart_Handle script_path = FilePathFromUri(script_uri, builtin_lib);
+static Dart_Handle LoadScript(Dart_Handle builtin_lib,
+ CommandLineOptions* map) {
+ Dart_Handle dart_args[3];
+ dart_args[0] = Dart_NewString(original_working_directory);
+ dart_args[1] = Dart_NewString(original_script_name);
+#if !defined(TARGET_OS_WINDOWS)
+ dart_args[2] = Dart_False();
+#else // !defined(TARGET_OS_WINDOWS)
+ dart_args[2] = Dart_True();
+#endif // !defined(TARGET_OS_WINDOWS)
+ Dart_Handle script_url = Dart_Invoke(
+ builtin_lib, Dart_NewString("_resolveScriptUri"), 3, dart_args);
+ if (Dart_IsError(script_url)) {
+ fprintf(stderr, "%s", Dart_GetError(script_url));
+ return script_url;
+ }
+ if (original_script_url == NULL) {
+ const char* script_url_cstr;
+ Dart_StringToCString(script_url, &script_url_cstr);
+ original_script_url = strdup(script_url_cstr);
+ }
+ dart_args[0] = script_url;
+ Dart_Handle script_path = Dart_Invoke(
+ builtin_lib, Dart_NewString("_filePathFromUri"), 1, dart_args);
if (Dart_IsError(script_path)) {
return script_path;
}
const char* script_path_cstr;
Dart_StringToCString(script_path, &script_path_cstr);
Dart_Handle source = DartUtils::ReadStringFromFile(script_path_cstr);
- return source;
-}
-
-
-static Dart_Handle LoadScript(const char* script_uri,
- bool resolve_script,
- Dart_Handle builtin_lib) {
- Dart_Handle resolved_script_uri;
- if (resolve_script) {
- resolved_script_uri = ResolveScriptUri(Dart_NewString(script_uri),
- builtin_lib);
- if (Dart_IsError(resolved_script_uri)) {
- return resolved_script_uri;
- }
- } else {
- resolved_script_uri = Dart_NewString(script_uri);
- }
- Dart_Handle source = ReadSource(resolved_script_uri, builtin_lib);
if (Dart_IsError(source)) {
return source;
}
- return Dart_LoadScript(resolved_script_uri, source);
-}
-
-
-static Dart_Handle CreateImportMap(CommandLineOptions* map) {
intptr_t length = (map == NULL) ? 0 : map->count();
Dart_Handle import_map = Dart_NewList(length * 2);
for (intptr_t i = 0; i < length; i++) {
@@ -461,18 +431,15 @@
}
free(name);
}
- return import_map;
+ return Dart_LoadScript(script_url, source, import_map);
}
// Returns true on success, false on failure.
-static bool CreateIsolateAndSetupHelper(const char* script_uri,
- const char* main,
- bool resolve_script,
- void* data,
- char** error) {
+static bool CreateIsolateAndSetup(const char* name_prefix,
+ void* data, char** error) {
Dart_Isolate isolate =
- Dart_CreateIsolate(script_uri, main, snapshot_buffer, data, error);
+ Dart_CreateIsolate(name_prefix, snapshot_buffer, data, error);
if (isolate == NULL) {
return false;
}
@@ -489,61 +456,41 @@
Dart_Handle result = Dart_SetLibraryTagHandler(LibraryTagHandler);
if (Dart_IsError(result)) {
*error = strdup(Dart_GetError(result));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
return false;
}
- // Set up the import map for this isolate.
- result = Dart_SetImportMap(CreateImportMap(import_map_options));
- if (Dart_IsError(result)) {
- *error = strdup(Dart_GetError(result));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
- return false;
- }
-
// Prepare builtin and its dependent libraries for use to resolve URIs.
Dart_Handle uri_lib = Builtin::LoadLibrary(Builtin::kUriLibrary);
if (Dart_IsError(uri_lib)) {
*error = strdup(Dart_GetError(uri_lib));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
return false;
}
Dart_Handle builtin_lib = Builtin::LoadLibrary(Builtin::kBuiltinLibrary);
if (Dart_IsError(builtin_lib)) {
*error = strdup(Dart_GetError(builtin_lib));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
return false;
}
if (package_root != NULL) {
- const int kNumArgs = 1;
- Dart_Handle dart_args[kNumArgs];
+ Dart_Handle dart_args[1];
Dart_Handle handle = Dart_NewString(package_root);
if (Dart_IsError(handle)) {
*error = strdup(Dart_GetError(handle));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
return false;
}
dart_args[0] = handle;
Dart_Handle result = Dart_Invoke(builtin_lib,
- Dart_NewString("_setPackageRoot"), kNumArgs, dart_args);
+ Dart_NewString("_setPackageRoot"), 1, dart_args);
if (Dart_IsError(result)) {
*error = strdup(Dart_GetError(result));
- Dart_ExitScope();
- Dart_ShutdownIsolate();
return false;
}
}
// Load the specified application script into the newly created isolate.
- Dart_Handle library = LoadScript(script_uri, resolve_script, builtin_lib);
+ Dart_Handle library = LoadScript(builtin_lib, import_map_options);
if (Dart_IsError(library)) {
*error = strdup(Dart_GetError(library));
Dart_ExitScope();
@@ -554,7 +501,7 @@
char errbuf[256];
snprintf(errbuf, sizeof(errbuf),
"Expected a library when loading script: %s",
- script_uri);
+ original_script_name);
*error = strdup(errbuf);
Dart_ExitScope();
Dart_ShutdownIsolate();
@@ -567,17 +514,6 @@
}
-static bool CreateIsolateAndSetup(const char* script_uri,
- const char* main,
- void* data, char** error) {
- return CreateIsolateAndSetupHelper(script_uri,
- main,
- false, // script_uri already canonical.
- data,
- error);
-}
-
-
static void PrintUsage() {
fprintf(stderr,
"dart [<vm-flags>] <dart-script-file> [<dart-options>]\n");
@@ -647,7 +583,10 @@
Dart_ExitScope();
Dart_ShutdownIsolate();
+
+ free(const_cast<char*>(original_script_name));
free(const_cast<char*>(original_working_directory));
+ free(const_cast<char*>(original_script_url));
return kErrorExitCode;
}
@@ -682,18 +621,16 @@
// Initialize the Dart VM.
Dart_Initialize(CreateIsolateAndSetup, NULL);
+ original_script_name = strdup(script_name);
original_working_directory = Directory::Current();
// Call CreateIsolateAndSetup which creates an isolate and loads up
// the specified application script.
char* error = NULL;
- char* isolate_name = BuildIsolateName(script_name, "main");
- if (!CreateIsolateAndSetupHelper(script_name,
- "main",
- true, // Canonicalize the script name.
- NULL,
- &error)) {
+ char* isolate_name = BuildIsolateName(original_script_name, "main");
+ if (!CreateIsolateAndSetup(isolate_name, NULL, &error)) {
fprintf(stderr, "%s\n", error);
+ free(const_cast<char*>(original_script_name));
free(const_cast<char*>(original_working_directory));
free(error);
delete [] isolate_name;
@@ -716,15 +653,15 @@
// Create a dart options object that can be accessed from dart code.
Dart_Handle options_result =
- SetupRuntimeOptions(&dart_options, executable_name, script_name);
+ SetupRuntimeOptions(&dart_options, executable_name, original_script_name);
if (Dart_IsError(options_result)) {
return ErrorExit("%s\n", Dart_GetError(options_result));
}
- // Lookup the library of the root script.
- Dart_Handle library = Dart_RootLibrary();
- if (Dart_IsNull(library)) {
- return ErrorExit("Unable to find root library for '%s'\n",
- script_name);
+ // Lookup the library of the main script.
+ Dart_Handle script_url = Dart_NewString(original_script_url);
+ Dart_Handle library = Dart_LookupLibrary(script_url);
+ if (Dart_IsError(library)) {
+ return ErrorExit("%s\n", Dart_GetError(library));
}
// Set debug breakpoint if specified on the command line.
if (breakpoint_at != NULL) {
@@ -761,7 +698,9 @@
// Terminate process exit-code handler.
Process::TerminateExitCodeHandler();
+ free(const_cast<char*>(original_script_name));
free(const_cast<char*>(original_working_directory));
+ free(const_cast<char*>(original_script_url));
return 0;
}
« no previous file with comments | « runtime/bin/gen_snapshot.cc ('k') | runtime/include/dart_api.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698