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 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 } | 799 } |
800 | 800 |
801 // If the script is a Kernel binary, then we will try to bootstrap from the | 801 // If the script is a Kernel binary, then we will try to bootstrap from the |
802 // script. | 802 // script. |
803 const uint8_t* kernel_file = NULL; | 803 const uint8_t* kernel_file = NULL; |
804 intptr_t kernel_length = -1; | 804 intptr_t kernel_length = -1; |
805 const bool is_kernel = | 805 const bool is_kernel = |
806 !run_app_snapshot && | 806 !run_app_snapshot && |
807 TryReadKernel(script_uri, &kernel_file, &kernel_length); | 807 TryReadKernel(script_uri, &kernel_file, &kernel_length); |
808 | 808 |
| 809 void* kernel_program = NULL; |
| 810 if (is_kernel) { |
| 811 kernel_program = Dart_ReadKernelBinary(kernel_file, kernel_length); |
| 812 free(const_cast<uint8_t*>(kernel_file)); |
| 813 } |
| 814 |
809 IsolateData* isolate_data = | 815 IsolateData* isolate_data = |
810 new IsolateData(script_uri, package_root, packages_config); | 816 new IsolateData(script_uri, package_root, packages_config); |
811 Dart_Isolate isolate = | 817 Dart_Isolate isolate = |
812 is_kernel ? Dart_CreateIsolateFromKernel(script_uri, main, kernel_file, | 818 is_kernel ? Dart_CreateIsolateFromKernel(script_uri, main, kernel_program, |
813 kernel_length, flags, | 819 flags, isolate_data, error) |
814 isolate_data, error) | |
815 : Dart_CreateIsolate(script_uri, main, isolate_snapshot_buffer, | 820 : Dart_CreateIsolate(script_uri, main, isolate_snapshot_buffer, |
816 flags, isolate_data, error); | 821 flags, isolate_data, error); |
817 if (is_kernel) { | |
818 free(const_cast<uint8_t*>(kernel_file)); | |
819 } | |
820 | |
821 if (isolate == NULL) { | 822 if (isolate == NULL) { |
822 delete isolate_data; | 823 delete isolate_data; |
823 return NULL; | 824 return NULL; |
824 } | 825 } |
825 | 826 |
826 Dart_EnterScope(); | 827 Dart_EnterScope(); |
827 | 828 |
828 // Set up the library tag handler for this isolate. | 829 // Set up the library tag handler for this isolate. |
829 Dart_Handle result = Dart_SetLibraryTagHandler(Loader::LibraryTagHandler); | 830 Dart_Handle result = Dart_SetLibraryTagHandler(Loader::LibraryTagHandler); |
830 CHECK_RESULT(result); | 831 CHECK_RESULT(result); |
831 | 832 |
832 if (is_kernel) { | 833 if (is_kernel) { |
833 // TODO(27590): We should not read the kernel file again! | 834 Dart_Handle result = Dart_LoadKernel(kernel_program); |
834 if (!TryReadKernel(script_uri, &kernel_file, &kernel_length)) { | |
835 FATAL("Failed to read kernel second time"); | |
836 } | |
837 Dart_Handle result = Dart_LoadKernel(kernel_file, kernel_length); | |
838 free(const_cast<uint8_t*>(kernel_file)); | |
839 CHECK_RESULT(result); | 835 CHECK_RESULT(result); |
840 } | 836 } |
841 if (is_kernel || (isolate_snapshot_buffer != NULL)) { | 837 if (is_kernel || (isolate_snapshot_buffer != NULL)) { |
842 // Setup the native resolver as the snapshot does not carry it. | 838 // Setup the native resolver as the snapshot does not carry it. |
843 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); | 839 Builtin::SetNativeResolver(Builtin::kBuiltinLibrary); |
844 Builtin::SetNativeResolver(Builtin::kIOLibrary); | 840 Builtin::SetNativeResolver(Builtin::kIOLibrary); |
845 } | 841 } |
846 if (run_app_snapshot) { | 842 if (run_app_snapshot) { |
847 Dart_Handle result = Loader::ReloadNativeExtensions(); | 843 Dart_Handle result = Loader::ReloadNativeExtensions(); |
848 CHECK_RESULT(result); | 844 CHECK_RESULT(result); |
(...skipping 1104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 Platform::Exit(Process::GlobalExitCode()); | 1949 Platform::Exit(Process::GlobalExitCode()); |
1954 } | 1950 } |
1955 | 1951 |
1956 } // namespace bin | 1952 } // namespace bin |
1957 } // namespace dart | 1953 } // namespace dart |
1958 | 1954 |
1959 int main(int argc, char** argv) { | 1955 int main(int argc, char** argv) { |
1960 dart::bin::main(argc, argv); | 1956 dart::bin::main(argc, argv); |
1961 UNREACHABLE(); | 1957 UNREACHABLE(); |
1962 } | 1958 } |
OLD | NEW |