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

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

Issue 2554953004: Revert "Add Kernel Isolate" (Closed)
Patch Set: Created 4 years 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/loader.h ('k') | runtime/bin/main.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 5
6 #include "bin/loader.h" 6 #include "bin/loader.h"
7 7
8 #include "bin/builtin.h" 8 #include "bin/builtin.h"
9 #include "bin/dartutils.h" 9 #include "bin/dartutils.h"
10 #include "bin/extensions.h" 10 #include "bin/extensions.h"
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 Dart_ListSetAt(request, 4, url); 199 Dart_ListSetAt(request, 4, url);
200 Dart_ListSetAt(request, 5, library_url); 200 Dart_ListSetAt(request, 5, library_url);
201 201
202 if (Dart_Post(loader_port, request)) { 202 if (Dart_Post(loader_port, request)) {
203 MonitorLocker ml(monitor_); 203 MonitorLocker ml(monitor_);
204 pending_operations_++; 204 pending_operations_++;
205 } 205 }
206 } 206 }
207 207
208 208
209 // Forward a request from the tag handler to the kernel isolate.
210 // [ tag, send port, url ]
211 void Loader::SendKernelRequest(Dart_LibraryTag tag, Dart_Handle url) {
212 // This port delivers loading messages to the Kernel isolate.
213 Dart_Port kernel_port = Dart_KernelPort();
214 ASSERT(kernel_port != ILLEGAL_PORT);
215
216 Dart_Handle request = Dart_NewList(3);
217 Dart_ListSetAt(request, 0, Dart_NewInteger(tag));
218 Dart_ListSetAt(request, 1, Dart_NewSendPort(port_));
219 Dart_ListSetAt(request, 2, url);
220 if (Dart_Post(kernel_port, request)) {
221 MonitorLocker ml(monitor_);
222 pending_operations_++;
223 }
224 }
225
226
227 void Loader::QueueMessage(Dart_CObject* message) { 209 void Loader::QueueMessage(Dart_CObject* message) {
228 MonitorLocker ml(monitor_); 210 MonitorLocker ml(monitor_);
229 if (results_length_ == results_capacity_) { 211 if (results_length_ == results_capacity_) {
230 // Grow to an initial capacity or double in size. 212 // Grow to an initial capacity or double in size.
231 results_capacity_ = (results_capacity_ == 0) ? 4 : results_capacity_ * 2; 213 results_capacity_ = (results_capacity_ == 0) ? 4 : results_capacity_ * 2;
232 results_ = reinterpret_cast<IOResult*>( 214 results_ = reinterpret_cast<IOResult*>(
233 realloc(results_, sizeof(IOResult) * results_capacity_)); 215 realloc(results_, sizeof(IOResult) * results_capacity_));
234 ASSERT(results_ != NULL); 216 ASSERT(results_ != NULL);
235 } 217 }
236 ASSERT(results_ != NULL); 218 ASSERT(results_ != NULL);
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 // work with the service isolate. 618 // work with the service isolate.
637 // Use the existing loader. 619 // Use the existing loader.
638 loader = isolate_data->loader(); 620 loader = isolate_data->loader();
639 } 621 }
640 ASSERT(loader != NULL); 622 ASSERT(loader != NULL);
641 ASSERT(isolate_data->HasLoader()); 623 ASSERT(isolate_data->HasLoader());
642 624
643 if (DartUtils::IsDartExtensionSchemeURL(url_string)) { 625 if (DartUtils::IsDartExtensionSchemeURL(url_string)) {
644 loader->SendImportExtensionRequest(url, Dart_LibraryUrl(library)); 626 loader->SendImportExtensionRequest(url, Dart_LibraryUrl(library));
645 } else { 627 } else {
646 if (Dart_KernelIsolateIsRunning()) { 628 loader->SendRequest(tag, url, (library != Dart_Null())
647 loader->SendKernelRequest(tag, url); 629 ? Dart_LibraryUrl(library)
648 } else { 630 : Dart_Null());
649 loader->SendRequest(tag, url, (library != Dart_Null())
650 ? Dart_LibraryUrl(library)
651 : Dart_Null());
652 }
653 } 631 }
654 632
633
655 if (blocking_call) { 634 if (blocking_call) {
656 // The outer invocation of the tag handler will block here until all nested 635 // The outer invocation of the tag handler will block here until all nested
657 // invocations complete. 636 // invocations complete.
658 loader->BlockUntilComplete(ProcessResultLocked); 637 loader->BlockUntilComplete(ProcessResultLocked);
659 638
660 // Remember the error (if any). 639 // Remember the error (if any).
661 Dart_Handle error = loader->error(); 640 Dart_Handle error = loader->error();
662 // Destroy the loader. The destructor does a bunch of leg work. 641 // Destroy the loader. The destructor does a bunch of leg work.
663 delete loader; 642 delete loader;
664 643
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 MutexLocker ml(loader_infos_lock_); 800 MutexLocker ml(loader_infos_lock_);
822 Loader* loader = LoaderForLocked(dest_port_id); 801 Loader* loader = LoaderForLocked(dest_port_id);
823 if (loader == NULL) { 802 if (loader == NULL) {
824 return; 803 return;
825 } 804 }
826 loader->QueueMessage(message); 805 loader->QueueMessage(message);
827 } 806 }
828 807
829 } // namespace bin 808 } // namespace bin
830 } // namespace dart 809 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/bin/loader.h ('k') | runtime/bin/main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698