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