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

Side by Side Diff: runtime/vm/dart_api_impl.cc

Issue 2949323002: Load vmservice from a .dill file when generating AOT snapshots. (Closed)
Patch Set: Use Dart_LoadLibrary instead of adding a new API function Created 3 years, 5 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/vmservice_impl.cc ('k') | no next file » | 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 #include "include/dart_api.h" 5 #include "include/dart_api.h"
6 #include "include/dart_mirrors_api.h" 6 #include "include/dart_mirrors_api.h"
7 #include "include/dart_native_api.h" 7 #include "include/dart_native_api.h"
8 8
9 #include "lib/stacktrace.h" 9 #include "lib/stacktrace.h"
10 #include "platform/assert.h" 10 #include "platform/assert.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 #include "vm/uri.h" 53 #include "vm/uri.h"
54 #include "vm/verifier.h" 54 #include "vm/verifier.h"
55 #include "vm/version.h" 55 #include "vm/version.h"
56 56
57 namespace dart { 57 namespace dart {
58 58
59 // Facilitate quick access to the current zone once we have the current thread. 59 // Facilitate quick access to the current zone once we have the current thread.
60 #define Z (T->zone()) 60 #define Z (T->zone())
61 61
62 62
63 DECLARE_FLAG(bool, use_dart_frontend);
63 DECLARE_FLAG(bool, print_class_table); 64 DECLARE_FLAG(bool, print_class_table);
64 DECLARE_FLAG(bool, verify_handles); 65 DECLARE_FLAG(bool, verify_handles);
65 #if defined(DART_NO_SNAPSHOT) 66 #if defined(DART_NO_SNAPSHOT)
66 DEFINE_FLAG(bool, 67 DEFINE_FLAG(bool,
67 check_function_fingerprints, 68 check_function_fingerprints,
68 true, 69 true,
69 "Check function fingerprints"); 70 "Check function fingerprints");
70 #endif // defined(DART_NO_SNAPSHOT). 71 #endif // defined(DART_NO_SNAPSHOT).
71 DEFINE_FLAG(bool, 72 DEFINE_FLAG(bool,
72 verify_acquired_data, 73 verify_acquired_data,
(...skipping 5562 matching lines...) Expand 10 before | Expand all | Expand 10 after
5635 for (intptr_t i = 0; i < pending_deferred_loads.Length(); i++) { 5636 for (intptr_t i = 0; i < pending_deferred_loads.Length(); i++) {
5636 if (pending_deferred_loads.At(i) == lib.raw()) { 5637 if (pending_deferred_loads.At(i) == lib.raw()) {
5637 lib.SetLoadError(err); 5638 lib.SetLoadError(err);
5638 return Api::Null(); 5639 return Api::Null();
5639 } 5640 }
5640 } 5641 }
5641 return error_in; 5642 return error_in;
5642 } 5643 }
5643 5644
5644 5645
5646 #if !defined(DART_PRECOMPILED_RUNTIME)
5647 static Dart_Handle LoadLibraryFromKernel(Thread* T, void* kernel_program) {
siva 2017/06/22 23:51:37 Is it LoadLibraryFromKernel or LoadKernelProgram a
sivachandra 2017/06/23 01:14:57 Done.
5648 kernel::KernelReader reader(
5649 reinterpret_cast<kernel::Program*>(kernel_program));
5650 const Object& tmp = reader.ReadProgram();
5651 if (tmp.IsError()) {
5652 return Api::NewHandle(T, tmp.raw());
5653 }
5654
5655 Library& library = Library::Handle(T->zone());
5656 library ^= tmp.raw();
5657 return Api::NewHandle(T, library.raw());
siva 2017/06/22 23:51:37 I think currently reader.ReadProgram returns the l
sivachandra 2017/06/23 01:14:57 Done.
5658 }
5659 #endif
5660
5661
5645 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, 5662 DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
5646 Dart_Handle resolved_url, 5663 Dart_Handle resolved_url,
5647 Dart_Handle source, 5664 Dart_Handle source,
5648 intptr_t line_offset, 5665 intptr_t line_offset,
5649 intptr_t column_offset) { 5666 intptr_t column_offset) {
5650 API_TIMELINE_DURATION; 5667 API_TIMELINE_DURATION;
5651 DARTSCOPE(Thread::Current()); 5668 DARTSCOPE(Thread::Current());
5652 Isolate* I = T->isolate(); 5669 Isolate* I = T->isolate();
5670
5671 #if !defined(DART_PRECOMPILED_RUNTIME)
5672 // Kernel isolate is loaded from script in case of dart_bootstrap
5673 // even when FLAG_use_dart_frontend is true. Hence, do not interpret
5674 // |source| as a kernel if the current isolate is the kernel isolate.
5675 if (FLAG_use_dart_frontend && !KernelIsolate::IsKernelIsolate(I)) {
5676 return LoadLibraryFromKernel(T, reinterpret_cast<void*>(source));
5677 }
5678 #endif
5679
5653 const String& url_str = Api::UnwrapStringHandle(Z, url); 5680 const String& url_str = Api::UnwrapStringHandle(Z, url);
5654 if (url_str.IsNull()) { 5681 if (url_str.IsNull()) {
5655 RETURN_TYPE_ERROR(Z, url, String); 5682 RETURN_TYPE_ERROR(Z, url, String);
5656 } 5683 }
5657 if (::Dart_IsNull(resolved_url)) { 5684 if (::Dart_IsNull(resolved_url)) {
5658 resolved_url = url; 5685 resolved_url = url;
5659 } 5686 }
5660 const String& resolved_url_str = Api::UnwrapStringHandle(Z, resolved_url); 5687 const String& resolved_url_str = Api::UnwrapStringHandle(Z, resolved_url);
5661 if (resolved_url_str.IsNull()) { 5688 if (resolved_url_str.IsNull()) {
5662 RETURN_TYPE_ERROR(Z, resolved_url, String); 5689 RETURN_TYPE_ERROR(Z, resolved_url, String);
(...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after
6964 } 6991 }
6965 6992
6966 6993
6967 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) { 6994 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) {
6968 #ifndef PRODUCT 6995 #ifndef PRODUCT
6969 Profiler::DumpStackTrace(context); 6996 Profiler::DumpStackTrace(context);
6970 #endif 6997 #endif
6971 } 6998 }
6972 6999
6973 } // namespace dart 7000 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/bin/vmservice_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698