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

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

Issue 2995723002: - Convert all isolate flags to a bit field. (Closed)
Patch Set: Address build error. Created 3 years, 4 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/vm/dart.cc ('k') | runtime/vm/dart_api_impl_test.cc » ('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 #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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 #include "vm/unicode.h" 52 #include "vm/unicode.h"
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 DECLARE_FLAG(bool, use_dart_frontend);
63 DECLARE_FLAG(bool, print_class_table); 62 DECLARE_FLAG(bool, print_class_table);
64 DECLARE_FLAG(bool, verify_handles); 63 DECLARE_FLAG(bool, verify_handles);
65 DECLARE_FLAG(bool, use_dart_frontend);
66 #if defined(DART_NO_SNAPSHOT) 64 #if defined(DART_NO_SNAPSHOT)
67 DEFINE_FLAG(bool, 65 DEFINE_FLAG(bool,
68 check_function_fingerprints, 66 check_function_fingerprints,
69 true, 67 true,
70 "Check function fingerprints"); 68 "Check function fingerprints");
71 #endif // defined(DART_NO_SNAPSHOT). 69 #endif // defined(DART_NO_SNAPSHOT).
72 DEFINE_FLAG(bool, 70 DEFINE_FLAG(bool,
73 verify_acquired_data, 71 verify_acquired_data,
74 false, 72 false,
75 "Verify correct API acquire/release of typed data."); 73 "Verify correct API acquire/release of typed data.");
(...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after
1086 if (params->version != DART_INITIALIZE_PARAMS_CURRENT_VERSION) { 1084 if (params->version != DART_INITIALIZE_PARAMS_CURRENT_VERSION) {
1087 return strdup( 1085 return strdup(
1088 "Dart_Initialize: " 1086 "Dart_Initialize: "
1089 "Invalid Dart_InitializeParams version."); 1087 "Invalid Dart_InitializeParams version.");
1090 } 1088 }
1091 1089
1092 return Dart::InitOnce( 1090 return Dart::InitOnce(
1093 params->vm_snapshot_data, params->vm_snapshot_instructions, 1091 params->vm_snapshot_data, params->vm_snapshot_instructions,
1094 params->create, params->shutdown, params->cleanup, params->thread_exit, 1092 params->create, params->shutdown, params->cleanup, params->thread_exit,
1095 params->file_open, params->file_read, params->file_write, 1093 params->file_open, params->file_read, params->file_write,
1096 params->file_close, params->entropy_source, params->get_service_assets); 1094 params->file_close, params->entropy_source, params->get_service_assets,
1095 params->start_kernel_isolate);
1097 } 1096 }
1098 1097
1099 DART_EXPORT char* Dart_Cleanup() { 1098 DART_EXPORT char* Dart_Cleanup() {
1100 CHECK_NO_ISOLATE(Isolate::Current()); 1099 CHECK_NO_ISOLATE(Isolate::Current());
1101 const char* err_msg = Dart::Cleanup(); 1100 const char* err_msg = Dart::Cleanup();
1102 if (err_msg != NULL) { 1101 if (err_msg != NULL) {
1103 return strdup(err_msg); 1102 return strdup(err_msg);
1104 } 1103 }
1105 return NULL; 1104 return NULL;
1106 } 1105 }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 return CreateIsolate(script_uri, main, snapshot_data, snapshot_instructions, 1219 return CreateIsolate(script_uri, main, snapshot_data, snapshot_instructions,
1221 -1, NULL, flags, callback_data, error); 1220 -1, NULL, flags, callback_data, error);
1222 } 1221 }
1223 1222
1224 DART_EXPORT Dart_Isolate Dart_CreateIsolateFromKernel(const char* script_uri, 1223 DART_EXPORT Dart_Isolate Dart_CreateIsolateFromKernel(const char* script_uri,
1225 const char* main, 1224 const char* main,
1226 void* kernel_program, 1225 void* kernel_program,
1227 Dart_IsolateFlags* flags, 1226 Dart_IsolateFlags* flags,
1228 void* callback_data, 1227 void* callback_data,
1229 char** error) { 1228 char** error) {
1229 // Setup default flags in case none were passed.
1230 Dart_IsolateFlags api_flags;
1231 if (flags == NULL) {
1232 Isolate::FlagsInitialize(&api_flags);
1233 flags = &api_flags;
1234 }
1235 flags->use_dart_frontend = true;
1230 return CreateIsolate(script_uri, main, NULL, NULL, -1, 1236 return CreateIsolate(script_uri, main, NULL, NULL, -1,
1231 reinterpret_cast<kernel::Program*>(kernel_program), 1237 reinterpret_cast<kernel::Program*>(kernel_program),
1232 flags, callback_data, error); 1238 flags, callback_data, error);
1233 } 1239 }
1234 1240
1235 DART_EXPORT void Dart_ShutdownIsolate() { 1241 DART_EXPORT void Dart_ShutdownIsolate() {
1236 Thread* T = Thread::Current(); 1242 Thread* T = Thread::Current();
1237 Isolate* I = T->isolate(); 1243 Isolate* I = T->isolate();
1238 CHECK_ISOLATE(I); 1244 CHECK_ISOLATE(I);
1239 I->WaitForOutstandingSpawns(); 1245 I->WaitForOutstandingSpawns();
(...skipping 3869 matching lines...) Expand 10 before | Expand all | Expand 10 after
5109 } 5115 }
5110 if (column_offset < 0) { 5116 if (column_offset < 0) {
5111 return Api::NewError("%s: argument 'column_offset' must be positive number", 5117 return Api::NewError("%s: argument 'column_offset' must be positive number",
5112 CURRENT_FUNC); 5118 CURRENT_FUNC);
5113 } 5119 }
5114 CHECK_CALLBACK_STATE(T); 5120 CHECK_CALLBACK_STATE(T);
5115 CHECK_COMPILATION_ALLOWED(I); 5121 CHECK_COMPILATION_ALLOWED(I);
5116 5122
5117 Dart_Handle result; 5123 Dart_Handle result;
5118 #if !defined(DART_PRECOMPILED_RUNTIME) 5124 #if !defined(DART_PRECOMPILED_RUNTIME)
5119 if (FLAG_use_dart_frontend && !KernelIsolate::IsKernelIsolate(I)) { 5125 if (I->use_dart_frontend()) {
5120 if ((source == Api::Null()) || (source == NULL)) { 5126 if ((source == Api::Null()) || (source == NULL)) {
5121 RETURN_NULL_ERROR(source); 5127 RETURN_NULL_ERROR(source);
5122 } 5128 }
5123 void* kernel_pgm = reinterpret_cast<void*>(source); 5129 void* kernel_pgm = reinterpret_cast<void*>(source);
5124 result = LoadKernelProgram(T, resolved_url_str, kernel_pgm); 5130 result = LoadKernelProgram(T, resolved_url_str, kernel_pgm);
5125 if (::Dart_IsError(result)) { 5131 if (::Dart_IsError(result)) {
5126 return result; 5132 return result;
5127 } 5133 }
5128 library ^= Library::LookupLibrary(T, resolved_url_str); 5134 library ^= Library::LookupLibrary(T, resolved_url_str);
5129 if (library.IsNull()) { 5135 if (library.IsNull()) {
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
5463 API_TIMELINE_DURATION; 5469 API_TIMELINE_DURATION;
5464 DARTSCOPE(Thread::Current()); 5470 DARTSCOPE(Thread::Current());
5465 Isolate* I = T->isolate(); 5471 Isolate* I = T->isolate();
5466 5472
5467 const String& url_str = Api::UnwrapStringHandle(Z, url); 5473 const String& url_str = Api::UnwrapStringHandle(Z, url);
5468 if (url_str.IsNull()) { 5474 if (url_str.IsNull()) {
5469 RETURN_TYPE_ERROR(Z, url, String); 5475 RETURN_TYPE_ERROR(Z, url, String);
5470 } 5476 }
5471 Dart_Handle result; 5477 Dart_Handle result;
5472 #if !defined(DART_PRECOMPILED_RUNTIME) 5478 #if !defined(DART_PRECOMPILED_RUNTIME)
5473 // Kernel isolate is loaded from script in case of dart_bootstrap 5479 if (I->use_dart_frontend()) {
5474 // even when FLAG_use_dart_frontend is true. Hence, do not interpret
5475 // |source| as a kernel if the current isolate is the kernel isolate.
5476 if (FLAG_use_dart_frontend && !KernelIsolate::IsKernelIsolate(I)) {
5477 result = LoadKernelProgram(T, url_str, reinterpret_cast<void*>(source)); 5480 result = LoadKernelProgram(T, url_str, reinterpret_cast<void*>(source));
5478 if (::Dart_IsError(result)) { 5481 if (::Dart_IsError(result)) {
5479 return result; 5482 return result;
5480 } 5483 }
5481 return Api::NewHandle(T, Library::LookupLibrary(T, url_str)); 5484 return Api::NewHandle(T, Library::LookupLibrary(T, url_str));
5482 } 5485 }
5483 #endif 5486 #endif
5484 if (::Dart_IsNull(resolved_url)) { 5487 if (::Dart_IsNull(resolved_url)) {
5485 resolved_url = url; 5488 resolved_url = url;
5486 } 5489 }
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after
6782 #endif 6785 #endif
6783 } 6786 }
6784 6787
6785 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) { 6788 DART_EXPORT void Dart_DumpNativeStackTrace(void* context) {
6786 #ifndef PRODUCT 6789 #ifndef PRODUCT
6787 Profiler::DumpStackTrace(context); 6790 Profiler::DumpStackTrace(context);
6788 #endif 6791 #endif
6789 } 6792 }
6790 6793
6791 } // namespace dart 6794 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.cc ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698