| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdlib.h> | 5 #include <stdlib.h> |
| 6 #include <string.h> | 6 #include <string.h> |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 | 8 |
| 9 #include "include/dart_api.h" | 9 #include "include/dart_api.h" |
| 10 #include "include/dart_tools_api.h" | 10 #include "include/dart_tools_api.h" |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 } | 754 } |
| 755 | 755 |
| 756 | 756 |
| 757 #define CHECK_RESULT(result) \ | 757 #define CHECK_RESULT(result) \ |
| 758 if (Dart_IsError(result)) { \ | 758 if (Dart_IsError(result)) { \ |
| 759 *error = strdup(Dart_GetError(result)); \ | 759 *error = strdup(Dart_GetError(result)); \ |
| 760 if (Dart_IsCompilationError(result)) { \ | 760 if (Dart_IsCompilationError(result)) { \ |
| 761 *exit_code = kCompilationErrorExitCode; \ | 761 *exit_code = kCompilationErrorExitCode; \ |
| 762 } else if (Dart_IsApiError(result)) { \ | 762 } else if (Dart_IsApiError(result)) { \ |
| 763 *exit_code = kApiErrorExitCode; \ | 763 *exit_code = kApiErrorExitCode; \ |
| 764 } else if (Dart_IsVMRestartRequest(result)) { \ | |
| 765 *exit_code = kRestartRequestExitCode; \ | |
| 766 } else { \ | 764 } else { \ |
| 767 *exit_code = kErrorExitCode; \ | 765 *exit_code = kErrorExitCode; \ |
| 768 } \ | 766 } \ |
| 769 Dart_ExitScope(); \ | 767 Dart_ExitScope(); \ |
| 770 Dart_ShutdownIsolate(); \ | 768 Dart_ShutdownIsolate(); \ |
| 771 return NULL; \ | 769 return NULL; \ |
| 772 } | 770 } |
| 773 | 771 |
| 774 | 772 |
| 775 static void SnapshotOnExitHook(int64_t exit_code) { | 773 static void SnapshotOnExitHook(int64_t exit_code) { |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1208 if (use_blobs) { | 1206 if (use_blobs) { |
| 1209 Snapshot::GenerateAppAOTAsBlobs(snapshot_filename); | 1207 Snapshot::GenerateAppAOTAsBlobs(snapshot_filename); |
| 1210 } else { | 1208 } else { |
| 1211 Snapshot::GenerateAppAOTAsAssembly(snapshot_filename); | 1209 Snapshot::GenerateAppAOTAsAssembly(snapshot_filename); |
| 1212 } | 1210 } |
| 1213 } | 1211 } |
| 1214 | 1212 |
| 1215 | 1213 |
| 1216 #define CHECK_RESULT(result) \ | 1214 #define CHECK_RESULT(result) \ |
| 1217 if (Dart_IsError(result)) { \ | 1215 if (Dart_IsError(result)) { \ |
| 1218 if (Dart_IsVMRestartRequest(result)) { \ | |
| 1219 Dart_ExitScope(); \ | |
| 1220 Dart_ShutdownIsolate(); \ | |
| 1221 return true; \ | |
| 1222 } \ | |
| 1223 const int exit_code = Dart_IsCompilationError(result) \ | 1216 const int exit_code = Dart_IsCompilationError(result) \ |
| 1224 ? kCompilationErrorExitCode \ | 1217 ? kCompilationErrorExitCode \ |
| 1225 : kErrorExitCode; \ | 1218 : kErrorExitCode; \ |
| 1226 ErrorExit(exit_code, "%s\n", Dart_GetError(result)); \ | 1219 ErrorExit(exit_code, "%s\n", Dart_GetError(result)); \ |
| 1227 } | 1220 } |
| 1228 | 1221 |
| 1229 | 1222 |
| 1230 static void WriteFile(const char* filename, | 1223 static void WriteFile(const char* filename, |
| 1231 const uint8_t* buffer, | 1224 const uint8_t* buffer, |
| 1232 const intptr_t size) { | 1225 const intptr_t size) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1246 // the specified application script. | 1239 // the specified application script. |
| 1247 char* error = NULL; | 1240 char* error = NULL; |
| 1248 bool is_main_isolate = true; | 1241 bool is_main_isolate = true; |
| 1249 int exit_code = 0; | 1242 int exit_code = 0; |
| 1250 char* isolate_name = BuildIsolateName(script_name, "main"); | 1243 char* isolate_name = BuildIsolateName(script_name, "main"); |
| 1251 Dart_Isolate isolate = CreateIsolateAndSetupHelper( | 1244 Dart_Isolate isolate = CreateIsolateAndSetupHelper( |
| 1252 is_main_isolate, script_name, "main", commandline_package_root, | 1245 is_main_isolate, script_name, "main", commandline_package_root, |
| 1253 commandline_packages_file, NULL, &error, &exit_code); | 1246 commandline_packages_file, NULL, &error, &exit_code); |
| 1254 if (isolate == NULL) { | 1247 if (isolate == NULL) { |
| 1255 delete[] isolate_name; | 1248 delete[] isolate_name; |
| 1256 if (exit_code == kRestartRequestExitCode) { | |
| 1257 free(error); | |
| 1258 return true; | |
| 1259 } | |
| 1260 Log::PrintErr("%s\n", error); | 1249 Log::PrintErr("%s\n", error); |
| 1261 free(error); | 1250 free(error); |
| 1262 error = NULL; | 1251 error = NULL; |
| 1263 Process::TerminateExitCodeHandler(); | 1252 Process::TerminateExitCodeHandler(); |
| 1264 error = Dart_Cleanup(); | 1253 error = Dart_Cleanup(); |
| 1265 if (error != NULL) { | 1254 if (error != NULL) { |
| 1266 Log::PrintErr("VM cleanup failed: %s\n", error); | 1255 Log::PrintErr("VM cleanup failed: %s\n", error); |
| 1267 free(error); | 1256 free(error); |
| 1268 } | 1257 } |
| 1269 EventHandler::Stop(); | 1258 EventHandler::Stop(); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1404 Dart_LookupLibrary(Dart_NewStringFromCString("dart:isolate")); | 1393 Dart_LookupLibrary(Dart_NewStringFromCString("dart:isolate")); |
| 1405 result = Dart_Invoke(isolate_lib, | 1394 result = Dart_Invoke(isolate_lib, |
| 1406 Dart_NewStringFromCString("_startMainIsolate"), | 1395 Dart_NewStringFromCString("_startMainIsolate"), |
| 1407 kNumIsolateArgs, isolate_args); | 1396 kNumIsolateArgs, isolate_args); |
| 1408 CHECK_RESULT(result); | 1397 CHECK_RESULT(result); |
| 1409 | 1398 |
| 1410 // Keep handling messages until the last active receive port is closed. | 1399 // Keep handling messages until the last active receive port is closed. |
| 1411 result = Dart_RunLoop(); | 1400 result = Dart_RunLoop(); |
| 1412 // Generate an app snapshot after execution if specified. | 1401 // Generate an app snapshot after execution if specified. |
| 1413 if (gen_snapshot_kind == kAppJIT) { | 1402 if (gen_snapshot_kind == kAppJIT) { |
| 1414 if (!Dart_IsCompilationError(result) && | 1403 if (!Dart_IsCompilationError(result)) { |
| 1415 !Dart_IsVMRestartRequest(result)) { | |
| 1416 Snapshot::GenerateAppJIT(snapshot_filename); | 1404 Snapshot::GenerateAppJIT(snapshot_filename); |
| 1417 } | 1405 } |
| 1418 } | 1406 } |
| 1419 CHECK_RESULT(result); | 1407 CHECK_RESULT(result); |
| 1420 | 1408 |
| 1421 if (save_feedback_filename != NULL) { | 1409 if (save_feedback_filename != NULL) { |
| 1422 uint8_t* buffer = NULL; | 1410 uint8_t* buffer = NULL; |
| 1423 intptr_t size = 0; | 1411 intptr_t size = 0; |
| 1424 result = Dart_SaveJITFeedback(&buffer, &size); | 1412 result = Dart_SaveJITFeedback(&buffer, &size); |
| 1425 if (Dart_IsError(result)) { | 1413 if (Dart_IsError(result)) { |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1679 Platform::Exit(Process::GlobalExitCode()); | 1667 Platform::Exit(Process::GlobalExitCode()); |
| 1680 } | 1668 } |
| 1681 | 1669 |
| 1682 } // namespace bin | 1670 } // namespace bin |
| 1683 } // namespace dart | 1671 } // namespace dart |
| 1684 | 1672 |
| 1685 int main(int argc, char** argv) { | 1673 int main(int argc, char** argv) { |
| 1686 dart::bin::main(argc, argv); | 1674 dart::bin::main(argc, argv); |
| 1687 UNREACHABLE(); | 1675 UNREACHABLE(); |
| 1688 } | 1676 } |
| OLD | NEW |