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

Side by Side Diff: runtime/bin/main.cc

Issue 2624393002: Remove dart_noopt and related parts from the VM. (Closed)
Patch Set: Merge branch 'master' of github.com:dart-lang/sdk into remove-noopt Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « runtime/bin/gen_snapshot.cc ('k') | runtime/bin/vmservice/vmservice_io.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 // dart functions and not run anything. 90 // dart functions and not run anything.
91 static bool compile_all = false; 91 static bool compile_all = false;
92 static bool parse_all = false; 92 static bool parse_all = false;
93 93
94 94
95 // Global flag that is used to indicate that we want to use blobs/mmap instead 95 // Global flag that is used to indicate that we want to use blobs/mmap instead
96 // of assembly/shared libraries for precompilation. 96 // of assembly/shared libraries for precompilation.
97 static bool use_blobs = false; 97 static bool use_blobs = false;
98 98
99 99
100 // Global flag that is used to indicate that we want to compile everything in
101 // the same way as precompilation before main, then continue running in the
102 // same process.
103 // Always set this with dart_noopt.
104 #if defined(DART_PRECOMPILER) && !defined(DART_NO_SNAPSHOT)
105 static const bool is_noopt = true;
106 #else
107 static const bool is_noopt = false;
108 #endif
109
110
111 extern const char* kPrecompiledVMIsolateSymbolName; 100 extern const char* kPrecompiledVMIsolateSymbolName;
112 extern const char* kPrecompiledIsolateSymbolName; 101 extern const char* kPrecompiledIsolateSymbolName;
113 extern const char* kPrecompiledInstructionsSymbolName; 102 extern const char* kPrecompiledInstructionsSymbolName;
114 extern const char* kPrecompiledDataSymbolName; 103 extern const char* kPrecompiledDataSymbolName;
115 104
116 105
117 // Global flag that is used to indicate that we want to trace resolution of 106 // Global flag that is used to indicate that we want to trace resolution of
118 // URIs and the loading of libraries, parts and scripts. 107 // URIs and the loading of libraries, parts and scripts.
119 static bool trace_loading = false; 108 static bool trace_loading = false;
120 109
(...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 if ((commandline_package_root != NULL) && 712 if ((commandline_package_root != NULL) &&
724 (strlen(commandline_package_root) == 0)) { 713 (strlen(commandline_package_root) == 0)) {
725 Log::PrintErr("Empty package root specified.\n"); 714 Log::PrintErr("Empty package root specified.\n");
726 return -1; 715 return -1;
727 } 716 }
728 if ((commandline_packages_file != NULL) && 717 if ((commandline_packages_file != NULL) &&
729 (strlen(commandline_packages_file) == 0)) { 718 (strlen(commandline_packages_file) == 0)) {
730 Log::PrintErr("Empty package file name specified.\n"); 719 Log::PrintErr("Empty package file name specified.\n");
731 return -1; 720 return -1;
732 } 721 }
733 if (is_noopt && gen_snapshot_kind != kNone) {
734 Log::PrintErr("Generating a snapshot with dart_noopt is invalid.\n");
735 return -1;
736 }
737 if ((gen_snapshot_kind != kNone) && (snapshot_filename == NULL)) { 722 if ((gen_snapshot_kind != kNone) && (snapshot_filename == NULL)) {
738 Log::PrintErr("Generating a snapshot requires a filename (--snapshot).\n"); 723 Log::PrintErr("Generating a snapshot requires a filename (--snapshot).\n");
739 return -1; 724 return -1;
740 } 725 }
741 if ((gen_snapshot_kind != kNone) && run_app_snapshot) { 726 if ((gen_snapshot_kind != kNone) && run_app_snapshot) {
742 Log::PrintErr( 727 Log::PrintErr(
743 "Specifying an option to generate a snapshot and" 728 "Specifying an option to generate a snapshot and"
744 " run using a snapshot is invalid.\n"); 729 " run using a snapshot is invalid.\n");
745 return -1; 730 return -1;
746 } 731 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 808
824 // Returns true on success, false on failure. 809 // Returns true on success, false on failure.
825 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri, 810 static Dart_Isolate CreateIsolateAndSetupHelper(const char* script_uri,
826 const char* main, 811 const char* main,
827 const char* package_root, 812 const char* package_root,
828 const char* packages_config, 813 const char* packages_config,
829 Dart_IsolateFlags* flags, 814 Dart_IsolateFlags* flags,
830 char** error, 815 char** error,
831 int* exit_code) { 816 int* exit_code) {
832 ASSERT(script_uri != NULL); 817 ASSERT(script_uri != NULL);
833
834 const bool needs_load_port = true;
835 #if defined(PRODUCT)
836 const bool run_service_isolate = needs_load_port;
837 #else
838 // Always create the service isolate in DEBUG and RELEASE modes for profiling,
839 // even if we don't need it for loading.
840 const bool run_service_isolate = true;
841 #endif // PRODUCT
842 if (!run_service_isolate &&
843 (strcmp(script_uri, DART_VM_SERVICE_ISOLATE_NAME) == 0)) {
844 return NULL;
845 }
846 if (strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0) { 818 if (strcmp(script_uri, DART_KERNEL_ISOLATE_NAME) == 0) {
847 if (!use_dart_frontend) { 819 if (!use_dart_frontend) {
848 *error = strdup("Kernel isolate not supported."); 820 *error = strdup("Kernel isolate not supported.");
849 return NULL; 821 return NULL;
850 } else { 822 } else {
851 if (packages_config == NULL) { 823 if (packages_config == NULL) {
852 packages_config = commandline_packages_file; 824 packages_config = commandline_packages_file;
853 } 825 }
854 } 826 }
855 } 827 }
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 Dart_ExitIsolate(); 890 Dart_ExitIsolate();
919 return isolate; 891 return isolate;
920 } 892 }
921 893
922 // Prepare builtin and other core libraries for use to resolve URIs. 894 // Prepare builtin and other core libraries for use to resolve URIs.
923 // Set up various closures, e.g: printing, timers etc. 895 // Set up various closures, e.g: printing, timers etc.
924 // Set up 'package root' for URI resolution. 896 // Set up 'package root' for URI resolution.
925 result = DartUtils::PrepareForScriptLoading(false, trace_loading); 897 result = DartUtils::PrepareForScriptLoading(false, trace_loading);
926 CHECK_RESULT(result); 898 CHECK_RESULT(result);
927 899
928 if (needs_load_port) { 900 // Set up the load port provided by the service isolate so that we can
929 // Set up the load port provided by the service isolate so that we can 901 // load scripts.
930 // load scripts. 902 result = DartUtils::SetupServiceLoadPort();
931 result = DartUtils::SetupServiceLoadPort(); 903 CHECK_RESULT(result);
932 CHECK_RESULT(result);
933 }
934 904
935 if (Dart_IsKernelIsolate(isolate)) { 905 if (Dart_IsKernelIsolate(isolate)) {
936 script_uri = frontend_filename; 906 script_uri = frontend_filename;
937 } 907 }
938 908
939 // Setup package root if specified. 909 // Setup package root if specified.
940 result = DartUtils::SetupPackageRoot(package_root, packages_config); 910 result = DartUtils::SetupPackageRoot(package_root, packages_config);
941 CHECK_RESULT(result); 911 CHECK_RESULT(result);
942 912
943 result = Dart_SetEnvironmentCallback(EnvironmentCallback); 913 result = Dart_SetEnvironmentCallback(EnvironmentCallback);
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 GenerateScriptSnapshot(); 1622 GenerateScriptSnapshot();
1653 } else { 1623 } else {
1654 // Lookup the library of the root script. 1624 // Lookup the library of the root script.
1655 Dart_Handle root_lib = Dart_RootLibrary(); 1625 Dart_Handle root_lib = Dart_RootLibrary();
1656 // Import the root library into the builtin library so that we can easily 1626 // Import the root library into the builtin library so that we can easily
1657 // lookup the main entry point exported from the root library. 1627 // lookup the main entry point exported from the root library.
1658 IsolateData* isolate_data = 1628 IsolateData* isolate_data =
1659 reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate)); 1629 reinterpret_cast<IsolateData*>(Dart_IsolateData(isolate));
1660 result = Dart_LibraryImportLibrary(isolate_data->builtin_lib(), root_lib, 1630 result = Dart_LibraryImportLibrary(isolate_data->builtin_lib(), root_lib,
1661 Dart_Null()); 1631 Dart_Null());
1662 if (is_noopt || (gen_snapshot_kind == kAppAOT) || 1632 if ((gen_snapshot_kind == kAppAOT) || (gen_snapshot_kind == kAppJIT)) {
1663 (gen_snapshot_kind == kAppJIT)) {
1664 // Load the embedder's portion of the VM service's Dart code so it will 1633 // Load the embedder's portion of the VM service's Dart code so it will
1665 // be included in the app snapshot. 1634 // be included in the app snapshot.
1666 if (!VmService::LoadForGenPrecompiled()) { 1635 if (!VmService::LoadForGenPrecompiled()) {
1667 Log::PrintErr("VM service loading failed: %s\n", 1636 Log::PrintErr("VM service loading failed: %s\n",
1668 VmService::GetErrorMessage()); 1637 VmService::GetErrorMessage());
1669 exit(kErrorExitCode); 1638 exit(kErrorExitCode);
1670 } 1639 }
1671 } 1640 }
1672 1641
1673 if (compile_all) { 1642 if (compile_all) {
1674 result = Dart_CompileAll(); 1643 result = Dart_CompileAll();
1675 CHECK_RESULT(result); 1644 CHECK_RESULT(result);
1676 } 1645 }
1677 1646
1678 if (parse_all) { 1647 if (parse_all) {
1679 result = Dart_ParseAll(); 1648 result = Dart_ParseAll();
1680 CHECK_RESULT(result); 1649 CHECK_RESULT(result);
1681 Dart_ExitScope(); 1650 Dart_ExitScope();
1682 // Shutdown the isolate. 1651 // Shutdown the isolate.
1683 Dart_ShutdownIsolate(); 1652 Dart_ShutdownIsolate();
1684 return false; 1653 return false;
1685 } 1654 }
1686 1655
1687 if (is_noopt || (gen_snapshot_kind == kAppAOT)) { 1656 if (gen_snapshot_kind == kAppAOT) {
1688 Dart_QualifiedFunctionName standalone_entry_points[] = { 1657 Dart_QualifiedFunctionName standalone_entry_points[] = {
1689 {"dart:_builtin", "::", "_getMainClosure"}, 1658 {"dart:_builtin", "::", "_getMainClosure"},
1690 {"dart:_builtin", "::", "_getPrintClosure"}, 1659 {"dart:_builtin", "::", "_getPrintClosure"},
1691 {"dart:_builtin", "::", "_getUriBaseClosure"}, 1660 {"dart:_builtin", "::", "_getUriBaseClosure"},
1692 {"dart:_builtin", "::", "_resolveInWorkingDirectory"}, 1661 {"dart:_builtin", "::", "_resolveInWorkingDirectory"},
1693 {"dart:_builtin", "::", "_setWorkingDirectory"}, 1662 {"dart:_builtin", "::", "_setWorkingDirectory"},
1694 {"dart:_builtin", "::", "_setPackageRoot"}, 1663 {"dart:_builtin", "::", "_setPackageRoot"},
1695 {"dart:_builtin", "::", "_setPackagesMap"}, 1664 {"dart:_builtin", "::", "_setPackagesMap"},
1696 {"dart:_builtin", "::", "_libraryFilePath"}, 1665 {"dart:_builtin", "::", "_libraryFilePath"},
1697 {"dart:io", "::", "_makeUint8ListView"}, 1666 {"dart:io", "::", "_makeUint8ListView"},
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1730 ErrorExit(kErrorExitCode, "Failed to read JIT feedback.\n"); 1699 ErrorExit(kErrorExitCode, "Failed to read JIT feedback.\n");
1731 } 1700 }
1732 feedback_length = file->Length(); 1701 feedback_length = file->Length();
1733 feedback_buffer = reinterpret_cast<uint8_t*>(malloc(feedback_length)); 1702 feedback_buffer = reinterpret_cast<uint8_t*>(malloc(feedback_length));
1734 if (!file->ReadFully(feedback_buffer, feedback_length)) { 1703 if (!file->ReadFully(feedback_buffer, feedback_length)) {
1735 ErrorExit(kErrorExitCode, "Failed to read JIT feedback.\n"); 1704 ErrorExit(kErrorExitCode, "Failed to read JIT feedback.\n");
1736 } 1705 }
1737 file->Release(); 1706 file->Release();
1738 } 1707 }
1739 1708
1740 const bool reset_fields = gen_snapshot_kind == kAppAOT; 1709 result = Dart_Precompile(standalone_entry_points, feedback_buffer,
1741 result = Dart_Precompile(standalone_entry_points, reset_fields, 1710 feedback_length);
1742 feedback_buffer, feedback_length);
1743 if (feedback_buffer != NULL) { 1711 if (feedback_buffer != NULL) {
1744 free(feedback_buffer); 1712 free(feedback_buffer);
1745 } 1713 }
1746 CHECK_RESULT(result); 1714 CHECK_RESULT(result);
1747 } 1715 }
1748 1716
1749 if (gen_snapshot_kind == kAppAOT) { 1717 if (gen_snapshot_kind == kAppAOT) {
1750 GeneratePrecompiledSnapshot(); 1718 GeneratePrecompiledSnapshot();
1751 } else { 1719 } else {
1752 if (Dart_IsNull(root_lib)) { 1720 if (Dart_IsNull(root_lib)) {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
1960 vm_options.AddArgument("--load_deferred_eagerly"); 1928 vm_options.AddArgument("--load_deferred_eagerly");
1961 } 1929 }
1962 #endif 1930 #endif
1963 1931
1964 if (gen_snapshot_kind == kAppJIT) { 1932 if (gen_snapshot_kind == kAppJIT) {
1965 vm_options.AddArgument("--fields_may_be_reset"); 1933 vm_options.AddArgument("--fields_may_be_reset");
1966 #if !defined(PRODUCT) 1934 #if !defined(PRODUCT)
1967 vm_options.AddArgument("--collect_code=false"); 1935 vm_options.AddArgument("--collect_code=false");
1968 #endif 1936 #endif
1969 } 1937 }
1970 if ((gen_snapshot_kind == kAppAOT) || is_noopt) { 1938 if (gen_snapshot_kind == kAppAOT) {
1971 vm_options.AddArgument("--precompilation"); 1939 vm_options.AddArgument("--precompilation");
1972 } 1940 }
1973 #if defined(DART_PRECOMPILED_RUNTIME) 1941 #if defined(DART_PRECOMPILED_RUNTIME)
1974 vm_options.AddArgument("--precompilation"); 1942 vm_options.AddArgument("--precompilation");
1975 #endif 1943 #endif
1976 if (gen_snapshot_kind == kAppJIT) { 1944 if (gen_snapshot_kind == kAppJIT) {
1977 Process::SetExitHook(SnapshotOnExitHook); 1945 Process::SetExitHook(SnapshotOnExitHook);
1978 } 1946 }
1979 1947
1980 Dart_SetVMFlags(vm_options.count(), vm_options.arguments()); 1948 Dart_SetVMFlags(vm_options.count(), vm_options.arguments());
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2048 Platform::Exit(Process::GlobalExitCode()); 2016 Platform::Exit(Process::GlobalExitCode());
2049 } 2017 }
2050 2018
2051 } // namespace bin 2019 } // namespace bin
2052 } // namespace dart 2020 } // namespace dart
2053 2021
2054 int main(int argc, char** argv) { 2022 int main(int argc, char** argv) {
2055 dart::bin::main(argc, argv); 2023 dart::bin::main(argc, argv);
2056 UNREACHABLE(); 2024 UNREACHABLE();
2057 } 2025 }
OLDNEW
« no previous file with comments | « runtime/bin/gen_snapshot.cc ('k') | runtime/bin/vmservice/vmservice_io.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698