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

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

Issue 2720723005: VM: Fix an app-jit related shutdown race. (Closed)
Patch Set: Created 3 years, 9 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.h ('k') | runtime/vm/dart_api_impl.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 "vm/dart.h" 5 #include "vm/dart.h"
6 6
7 #include "vm/become.h" 7 #include "vm/become.h"
8 #include "vm/clustered_snapshot.h" 8 #include "vm/clustered_snapshot.h"
9 #include "vm/code_observers.h" 9 #include "vm/code_observers.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 NOT_IN_PRODUCT(CHECK_OFFSET(sizeof(ClassHeapStats), 208)); 118 NOT_IN_PRODUCT(CHECK_OFFSET(sizeof(ClassHeapStats), 208));
119 #endif 119 #endif
120 #undef CHECK_OFFSET 120 #undef CHECK_OFFSET
121 } 121 }
122 122
123 123
124 char* Dart::InitOnce(const uint8_t* vm_isolate_snapshot, 124 char* Dart::InitOnce(const uint8_t* vm_isolate_snapshot,
125 const uint8_t* instructions_snapshot, 125 const uint8_t* instructions_snapshot,
126 Dart_IsolateCreateCallback create, 126 Dart_IsolateCreateCallback create,
127 Dart_IsolateShutdownCallback shutdown, 127 Dart_IsolateShutdownCallback shutdown,
128 Dart_IsolateCleanupCallback cleanup,
128 Dart_ThreadExitCallback thread_exit, 129 Dart_ThreadExitCallback thread_exit,
129 Dart_FileOpenCallback file_open, 130 Dart_FileOpenCallback file_open,
130 Dart_FileReadCallback file_read, 131 Dart_FileReadCallback file_read,
131 Dart_FileWriteCallback file_write, 132 Dart_FileWriteCallback file_write,
132 Dart_FileCloseCallback file_close, 133 Dart_FileCloseCallback file_close,
133 Dart_EntropySource entropy_source, 134 Dart_EntropySource entropy_source,
134 Dart_GetVMServiceAssetsArchive get_service_assets) { 135 Dart_GetVMServiceAssetsArchive get_service_assets) {
135 CheckOffsets(); 136 CheckOffsets();
136 // TODO(iposva): Fix race condition here. 137 // TODO(iposva): Fix race condition here.
137 if (vm_isolate_ != NULL || !Flags::Initialized()) { 138 if (vm_isolate_ != NULL || !Flags::Initialized()) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 vm_isolate_->heap()->Verify(kRequireMarked); 307 vm_isolate_->heap()->Verify(kRequireMarked);
307 #endif 308 #endif
308 } 309 }
309 // Allocate the "persistent" scoped handles for the predefined API 310 // Allocate the "persistent" scoped handles for the predefined API
310 // values (such as Dart_True, Dart_False and Dart_Null). 311 // values (such as Dart_True, Dart_False and Dart_Null).
311 Api::InitHandles(); 312 Api::InitHandles();
312 313
313 Thread::ExitIsolate(); // Unregister the VM isolate from this thread. 314 Thread::ExitIsolate(); // Unregister the VM isolate from this thread.
314 Isolate::SetCreateCallback(create); 315 Isolate::SetCreateCallback(create);
315 Isolate::SetShutdownCallback(shutdown); 316 Isolate::SetShutdownCallback(shutdown);
317 Isolate::SetCleanupCallback(cleanup);
316 318
317 if (FLAG_support_service) { 319 if (FLAG_support_service) {
318 Service::SetGetServiceAssetsCallback(get_service_assets); 320 Service::SetGetServiceAssetsCallback(get_service_assets);
319 } 321 }
320 322
321 ServiceIsolate::Run(); 323 ServiceIsolate::Run();
322 324
323 #ifndef DART_PRECOMPILED_RUNTIME 325 #ifndef DART_PRECOMPILED_RUNTIME
324 KernelIsolate::Run(); 326 KernelIsolate::Run();
325 #endif // DART_PRECOMPILED_RUNTIME 327 #endif // DART_PRECOMPILED_RUNTIME
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 return predefined_handles_->handles_.IsValidScopedHandle(address); 760 return predefined_handles_->handles_.IsValidScopedHandle(address);
759 } 761 }
760 762
761 763
762 bool Dart::IsReadOnlyApiHandle(Dart_Handle handle) { 764 bool Dart::IsReadOnlyApiHandle(Dart_Handle handle) {
763 ASSERT(predefined_handles_ != NULL); 765 ASSERT(predefined_handles_ != NULL);
764 return predefined_handles_->api_handles_.IsValidHandle(handle); 766 return predefined_handles_->api_handles_.IsValidHandle(handle);
765 } 767 }
766 768
767 } // namespace dart 769 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart.h ('k') | runtime/vm/dart_api_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698