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 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 " dart_no_snapshot\n"); | 400 " dart_no_snapshot\n"); |
401 return false; | 401 return false; |
402 } | 402 } |
403 return ProcessSnapshotOptionHelper(filename, | 403 return ProcessSnapshotOptionHelper(filename, |
404 &generate_full_snapshot_after_run); | 404 &generate_full_snapshot_after_run); |
405 } | 405 } |
406 | 406 |
407 | 407 |
408 static bool ProcessRunFullSnapshotOption( | 408 static bool ProcessRunFullSnapshotOption( |
409 const char* filename, CommandLineOptions* vm_options) { | 409 const char* filename, CommandLineOptions* vm_options) { |
410 // Ensure that we are not running 'dart_no_snapshot'. | 410 #ifndef DART_PRODUCT_BINARY |
411 if (isolate_snapshot_buffer == NULL) { | 411 Log::PrintErr("Full Application snapshots can only be be run with" |
412 Log::PrintErr("Full Application snapshots cannot be run with" | 412 " dart_product\n"); |
413 " dart_no_snapshot\n"); | 413 #endif |
414 return false; | |
415 } | |
416 return ProcessSnapshotOptionHelper(filename, &run_full_snapshot); | 414 return ProcessSnapshotOptionHelper(filename, &run_full_snapshot); |
417 } | 415 } |
418 | 416 |
419 | 417 |
420 static bool ProcessEnableVmServiceOption(const char* option_value, | 418 static bool ProcessEnableVmServiceOption(const char* option_value, |
421 CommandLineOptions* vm_options) { | 419 CommandLineOptions* vm_options) { |
422 ASSERT(option_value != NULL); | 420 ASSERT(option_value != NULL); |
423 | 421 |
424 if (!ExtractPortAndIP(option_value, | 422 if (!ExtractPortAndIP(option_value, |
425 &vm_service_server_port, | 423 &vm_service_server_port, |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 | 733 |
736 // Returns true on success, false on failure. | 734 // Returns true on success, false on failure. |
737 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri, | 735 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri, |
738 const char* main, | 736 const char* main, |
739 const char* package_root, | 737 const char* package_root, |
740 const char* packages_config, | 738 const char* packages_config, |
741 Dart_IsolateFlags* flags, | 739 Dart_IsolateFlags* flags, |
742 char** error, | 740 char** error, |
743 int* exit_code) { | 741 int* exit_code) { |
744 ASSERT(script_uri != NULL); | 742 ASSERT(script_uri != NULL); |
| 743 #if defined(DART_PRODUCT_BINARY) |
| 744 if (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0) { |
| 745 // No service isolate support. |
| 746 return NULL; |
| 747 } |
| 748 #endif // defined(DART_PRODUCT_BINARY) |
| 749 |
745 if (run_full_snapshot && | 750 if (run_full_snapshot && |
746 !strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME)) { | 751 (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0)) { |
747 // We do not create a service isolate when running a full application | 752 // We do not create a service isolate when running a full application |
748 // snapshot. | 753 // snapshot. |
749 return NULL; | 754 return NULL; |
750 } | 755 } |
751 IsolateData* isolate_data = new IsolateData(script_uri, | 756 IsolateData* isolate_data = new IsolateData(script_uri, |
752 package_root, | 757 package_root, |
753 packages_config); | 758 packages_config); |
754 Dart_Isolate isolate = NULL; | 759 Dart_Isolate isolate = NULL; |
755 | 760 |
756 isolate = Dart_CreateIsolate(script_uri, | 761 isolate = Dart_CreateIsolate(script_uri, |
(...skipping 13 matching lines...) Expand all Loading... |
770 if (isolate_snapshot_buffer != NULL) { | 775 if (isolate_snapshot_buffer != NULL) { |
771 // Setup the native resolver as the snapshot does not carry it. | 776 // Setup the native resolver as the snapshot does not carry it. |
772 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); | 777 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); |
773 Builtin::SetNativeResolver(Builtin::kIOLibrary); | 778 Builtin::SetNativeResolver(Builtin::kIOLibrary); |
774 } | 779 } |
775 | 780 |
776 // Set up the library tag handler for this isolate. | 781 // Set up the library tag handler for this isolate. |
777 Dart_Handle result = Dart_SetLibraryTagHandler(DartUtils::LibraryTagHandler); | 782 Dart_Handle result = Dart_SetLibraryTagHandler(DartUtils::LibraryTagHandler); |
778 CHECK_RESULT(result); | 783 CHECK_RESULT(result); |
779 | 784 |
| 785 #if defined(DART_PRODUCT_BINARY) |
| 786 ASSERT(!Dart_IsServiceIsolate(isolate)); |
| 787 #else |
780 if (Dart_IsServiceIsolate(isolate)) { | 788 if (Dart_IsServiceIsolate(isolate)) { |
781 // If this is the service isolate, load embedder specific bits and return. | 789 // If this is the service isolate, load embedder specific bits and return. |
782 if (!VmService::Setup(vm_service_server_ip, | 790 if (!VmService::Setup(vm_service_server_ip, |
783 vm_service_server_port, | 791 vm_service_server_port, |
784 run_precompiled_snapshot)) { | 792 run_precompiled_snapshot)) { |
785 *error = strdup(VmService::GetErrorMessage()); | 793 *error = strdup(VmService::GetErrorMessage()); |
786 return NULL; | 794 return NULL; |
787 } | 795 } |
788 if (compile_all) { | 796 if (compile_all) { |
789 result = Dart_CompileAll(); | 797 result = Dart_CompileAll(); |
790 CHECK_RESULT(result); | 798 CHECK_RESULT(result); |
791 } | 799 } |
792 Dart_ExitScope(); | 800 Dart_ExitScope(); |
793 Dart_ExitIsolate(); | 801 Dart_ExitIsolate(); |
794 return isolate; | 802 return isolate; |
795 } | 803 } |
| 804 #endif // defined(DART_PRODUCT_BINARY) |
796 | 805 |
797 // Prepare builtin and other core libraries for use to resolve URIs. | 806 // Prepare builtin and other core libraries for use to resolve URIs. |
798 // Set up various closures, e.g: printing, timers etc. | 807 // Set up various closures, e.g: printing, timers etc. |
799 // Set up 'package root' for URI resolution. | 808 // Set up 'package root' for URI resolution. |
800 result = DartUtils::PrepareForScriptLoading(false, trace_loading); | 809 result = DartUtils::PrepareForScriptLoading(false, trace_loading); |
801 CHECK_RESULT(result); | 810 CHECK_RESULT(result); |
802 | 811 |
803 if (!run_full_snapshot) { | 812 if (!run_full_snapshot) { |
804 // Set up the load port provided by the service isolate so that we can | 813 // Set up the load port provided by the service isolate so that we can |
805 // load scripts. | 814 // load scripts. |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 GenerateScriptSnapshot(); | 1270 GenerateScriptSnapshot(); |
1262 } else { | 1271 } else { |
1263 // Lookup the library of the root script. | 1272 // Lookup the library of the root script. |
1264 Dart_Handle root_lib = Dart_RootLibrary(); | 1273 Dart_Handle root_lib = Dart_RootLibrary(); |
1265 // Import the root library into the builtin library so that we can easily | 1274 // Import the root library into the builtin library so that we can easily |
1266 // lookup the main entry point exported from the root library. | 1275 // lookup the main entry point exported from the root library. |
1267 IsolateData* isolate_data = | 1276 IsolateData* isolate_data = |
1268 reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate)); | 1277 reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate)); |
1269 result = Dart_LibraryImportLibrary( | 1278 result = Dart_LibraryImportLibrary( |
1270 isolate_data->builtin_lib(), root_lib, Dart_Null()); | 1279 isolate_data->builtin_lib(), root_lib, Dart_Null()); |
| 1280 #ifndef DART_PRODUCT_BINARY |
1271 if (is_noopt || gen_precompiled_snapshot) { | 1281 if (is_noopt || gen_precompiled_snapshot) { |
1272 // Load the embedder's portion of the VM service's Dart code so it will | 1282 // Load the embedder's portion of the VM service's Dart code so it will |
1273 // be included in the precompiled snapshot. | 1283 // be included in the precompiled snapshot. |
1274 if (!VmService::LoadForGenPrecompiled()) { | 1284 if (!VmService::LoadForGenPrecompiled()) { |
1275 fprintf(stderr, | 1285 fprintf(stderr, |
1276 "VM service loading failed: %s\n", | 1286 "VM service loading failed: %s\n", |
1277 VmService::GetErrorMessage()); | 1287 VmService::GetErrorMessage()); |
1278 fflush(stderr); | 1288 fflush(stderr); |
1279 exit(kErrorExitCode); | 1289 exit(kErrorExitCode); |
1280 } | 1290 } |
1281 } | 1291 } |
| 1292 #endif // !DART_PRODUCT_BINARY |
1282 | 1293 |
1283 if (compile_all) { | 1294 if (compile_all) { |
1284 result = Dart_CompileAll(); | 1295 result = Dart_CompileAll(); |
1285 CHECK_RESULT(result); | 1296 CHECK_RESULT(result); |
1286 } | 1297 } |
1287 | 1298 |
1288 if (is_noopt || gen_precompiled_snapshot) { | 1299 if (is_noopt || gen_precompiled_snapshot) { |
1289 Dart_QualifiedFunctionName standalone_entry_points[] = { | 1300 Dart_QualifiedFunctionName standalone_entry_points[] = { |
1290 { "dart:_builtin", "::", "_getMainClosure" }, | 1301 { "dart:_builtin", "::", "_getMainClosure" }, |
1291 { "dart:_builtin", "::", "_getPrintClosure" }, | 1302 { "dart:_builtin", "::", "_getPrintClosure" }, |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1638 Platform::Exit(Process::GlobalExitCode()); | 1649 Platform::Exit(Process::GlobalExitCode()); |
1639 } | 1650 } |
1640 | 1651 |
1641 } // namespace bin | 1652 } // namespace bin |
1642 } // namespace dart | 1653 } // namespace dart |
1643 | 1654 |
1644 int main(int argc, char** argv) { | 1655 int main(int argc, char** argv) { |
1645 dart::bin::main(argc, argv); | 1656 dart::bin::main(argc, argv); |
1646 UNREACHABLE(); | 1657 UNREACHABLE(); |
1647 } | 1658 } |
OLD | NEW |