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

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

Issue 2927493002: Restructure code to enable reloading when a kernel dill file is specified on the command line inste… (Closed)
Patch Set: fix format error. Created 3 years, 6 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/dfe.cc ('k') | runtime/bin/isolate_data.h » ('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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 // Generate a snapshot file after loading all the scripts specified on the 5 // Generate a snapshot file after loading all the scripts specified on the
6 // command line. 6 // command line.
7 7
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 #include <string.h> 10 #include <string.h>
(...skipping 1640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1651 CHECK_RESULT(result); 1651 CHECK_RESULT(result);
1652 1652
1653 UriResolverIsolateScope::isolate = isolate; 1653 UriResolverIsolateScope::isolate = isolate;
1654 Dart_ExitScope(); 1654 Dart_ExitScope();
1655 Dart_ExitIsolate(); 1655 Dart_ExitIsolate();
1656 1656
1657 // Now we create an isolate into which we load all the code that needs to 1657 // Now we create an isolate into which we load all the code that needs to
1658 // be in the snapshot. 1658 // be in the snapshot.
1659 isolate_data = new IsolateData(app_script_name, commandline_package_root, 1659 isolate_data = new IsolateData(app_script_name, commandline_package_root,
1660 commandline_packages_file, NULL); 1660 commandline_packages_file, NULL);
1661 const uint8_t* kernel = NULL;
1662 intptr_t kernel_length = 0;
1663 const bool is_kernel_file =
1664 dfe.TryReadKernelFile(app_script_name, &kernel, &kernel_length);
1665
1666 if ((dependencies_filename != NULL) || print_dependencies) { 1661 if ((dependencies_filename != NULL) || print_dependencies) {
1667 isolate_data->set_dependencies(new MallocGrowableArray<char*>()); 1662 isolate_data->set_dependencies(new MallocGrowableArray<char*>());
1668 } 1663 }
1669 1664
1670 void* kernel_program = NULL; 1665 Dart_Isolate isolate = NULL;
1671 if (is_kernel_file) { 1666 void* kernel_program = dfe.ReadScript(app_script_name);
1672 kernel_program = Dart_ReadKernelBinary(kernel, kernel_length); 1667 if (kernel_program != NULL) {
1673 free(const_cast<uint8_t*>(kernel)); 1668 isolate = Dart_CreateIsolateFromKernel(NULL, NULL, kernel_program, NULL,
1669 isolate_data, &error);
1670 } else {
1671 isolate = Dart_CreateIsolate(NULL, NULL, isolate_snapshot_data,
1672 isolate_snapshot_instructions, NULL,
1673 isolate_data, &error);
1674 } 1674 }
1675
1676 Dart_Isolate isolate =
1677 is_kernel_file
1678 ? Dart_CreateIsolateFromKernel(NULL, NULL, kernel_program, NULL,
1679 isolate_data, &error)
1680 : Dart_CreateIsolate(NULL, NULL, isolate_snapshot_data,
1681 isolate_snapshot_instructions, NULL,
1682 isolate_data, &error);
1683 if (isolate == NULL) { 1675 if (isolate == NULL) {
1684 Log::PrintErr("%s\n", error); 1676 Log::PrintErr("%s\n", error);
1685 free(error); 1677 free(error);
1686 exit(kErrorExitCode); 1678 exit(kErrorExitCode);
1687 } 1679 }
1688 Dart_EnterScope(); 1680 Dart_EnterScope();
1689 result = Dart_SetEnvironmentCallback(EnvironmentCallback); 1681 result = Dart_SetEnvironmentCallback(EnvironmentCallback);
1690 CHECK_RESULT(result); 1682 CHECK_RESULT(result);
1691 1683
1692 // Set up the library tag handler in such a manner that it will use the 1684 // Set up the library tag handler in such a manner that it will use the
1693 // URL mapping specified on the command line to load the libraries. 1685 // URL mapping specified on the command line to load the libraries.
1694 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler); 1686 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler);
1695 CHECK_RESULT(result); 1687 CHECK_RESULT(result);
1696 1688
1697 if (commandline_packages_file != NULL) { 1689 if (commandline_packages_file != NULL) {
1698 AddDependency(commandline_packages_file); 1690 AddDependency(commandline_packages_file);
1699 } 1691 }
1700 1692
1701 Dart_QualifiedFunctionName* entry_points = 1693 Dart_QualifiedFunctionName* entry_points =
1702 ParseEntryPointsManifestIfPresent(); 1694 ParseEntryPointsManifestIfPresent();
1703 1695
1704 if (is_kernel_file) { 1696 if (kernel_program != NULL) {
1705 Dart_Handle library = Dart_LoadKernel(kernel_program); 1697 Dart_Handle library = Dart_LoadKernel(kernel_program);
1706 if (Dart_IsError(library)) FATAL("Failed to load app from Kernel IR"); 1698 if (Dart_IsError(library)) FATAL("Failed to load app from Kernel IR");
1707 } else { 1699 } else {
1708 // Set up the library tag handler in such a manner that it will use the 1700 // Set up the library tag handler in such a manner that it will use the
1709 // URL mapping specified on the command line to load the libraries. 1701 // URL mapping specified on the command line to load the libraries.
1710 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler); 1702 result = Dart_SetLibraryTagHandler(CreateSnapshotLibraryTagHandler);
1711 CHECK_RESULT(result); 1703 CHECK_RESULT(result);
1712 } 1704 }
1713 1705
1714 SetupStubNativeResolversForPrecompilation(entry_points); 1706 SetupStubNativeResolversForPrecompilation(entry_points);
1715 1707
1716 SetupStubNativeResolvers(); 1708 SetupStubNativeResolvers();
1717 1709
1718 if (!is_kernel_file) { 1710 if (kernel_program == NULL) {
1719 // Load the specified script. 1711 // Load the specified script.
1720 library = LoadSnapshotCreationScript(app_script_name); 1712 library = LoadSnapshotCreationScript(app_script_name);
1721 CHECK_RESULT(library); 1713 CHECK_RESULT(library);
1722 1714
1723 ImportNativeEntryPointLibrariesIntoRoot(entry_points); 1715 ImportNativeEntryPointLibrariesIntoRoot(entry_points);
1724 } 1716 }
1725 1717
1726 // Ensure that we mark all libraries as loaded. 1718 // Ensure that we mark all libraries as loaded.
1727 result = Dart_FinalizeLoading(false); 1719 result = Dart_FinalizeLoading(false);
1728 CHECK_RESULT(result); 1720 CHECK_RESULT(result);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1783 delete mapped_isolate_snapshot_data; 1775 delete mapped_isolate_snapshot_data;
1784 return 0; 1776 return 0;
1785 } 1777 }
1786 1778
1787 } // namespace bin 1779 } // namespace bin
1788 } // namespace dart 1780 } // namespace dart
1789 1781
1790 int main(int argc, char** argv) { 1782 int main(int argc, char** argv) {
1791 return dart::bin::main(argc, argv); 1783 return dart::bin::main(argc, argv);
1792 } 1784 }
OLDNEW
« no previous file with comments | « runtime/bin/dfe.cc ('k') | runtime/bin/isolate_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698