Index: runtime/bin/dartutils.cc |
diff --git a/runtime/bin/dartutils.cc b/runtime/bin/dartutils.cc |
index fc9046942654246cd33e0bd4816867ac5d229c4c..41fbb0add6cd4e369aad85acfa3f97eddce16113 100644 |
--- a/runtime/bin/dartutils.cc |
+++ b/runtime/bin/dartutils.cc |
@@ -383,13 +383,17 @@ Dart_Handle DartUtils::ReadStringFromFile(const char* filename) { |
} |
+Dart_Handle DartUtils::SetWorkingDirectory(Dart_Handle builtin_lib) { |
+ Dart_Handle directory = NewString(original_working_directory); |
+ return SingleArgDart_Invoke(directory, builtin_lib, "_setWorkingDirectory"); |
+} |
+ |
+ |
Dart_Handle DartUtils::ResolveScriptUri(Dart_Handle script_uri, |
Dart_Handle builtin_lib) { |
- const int kNumArgs = 3; |
+ const int kNumArgs = 1; |
Dart_Handle dart_args[kNumArgs]; |
- dart_args[0] = NewString(original_working_directory); |
- dart_args[1] = script_uri; |
- dart_args[2] = (IsWindowsHost() ? Dart_True() : Dart_False()); |
+ dart_args[0] = script_uri; |
return Dart_Invoke(builtin_lib, |
NewString("_resolveScriptUri"), |
kNumArgs, |
@@ -399,10 +403,9 @@ Dart_Handle DartUtils::ResolveScriptUri(Dart_Handle script_uri, |
Dart_Handle DartUtils::FilePathFromUri(Dart_Handle script_uri, |
Dart_Handle builtin_lib) { |
- const int kNumArgs = 2; |
+ const int kNumArgs = 1; |
Dart_Handle dart_args[kNumArgs]; |
dart_args[0] = script_uri; |
- dart_args[1] = (IsWindowsHost() ? Dart_True() : Dart_False()); |
return Dart_Invoke(builtin_lib, |
NewString("_filePathFromUri"), |
kNumArgs, |
@@ -563,9 +566,6 @@ Dart_Handle DartUtils::LoadScriptHttp(Dart_Handle uri, |
Dart_Handle DartUtils::LoadScript(const char* script_uri, |
Dart_Handle builtin_lib) { |
- // Always call ResolveScriptUri because as a side effect it sets |
- // the script entry path which is used when automatically resolving |
- // package root. |
Dart_Handle resolved_script_uri = |
ResolveScriptUri(NewString(script_uri), builtin_lib); |
if (Dart_IsError(resolved_script_uri)) { |
@@ -665,6 +665,19 @@ Dart_Handle DartUtils::PrepareForScriptLoading(const char* package_root, |
DART_CHECK_VALID(Dart_Invoke( |
async_lib, NewString("_setTimerFactoryClosure"), 1, args)); |
+ |
+ // Set running on Windows flag. |
+ result = Dart_SetField(builtin_lib, NewString("_isWindows"), |
+ (IsWindowsHost() ? Dart_True() : Dart_False())); |
+ if (Dart_IsError(result)) { |
+ return result; |
+ } |
+ // Set current working directory. |
+ result = SetWorkingDirectory(builtin_lib); |
+ if (Dart_IsError(result)) { |
+ return result; |
+ } |
+ |
// Set up package root if specified. |
if (package_root != NULL) { |
result = NewString(package_root); |