Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 7dcfb30

Browse files
Run Dart VM tasks on the engine's ConcurrentMessageLoop instead the VM's separate thread pool.
Bug: dart-lang/sdk#44228
1 parent ad00d12 commit 7dcfb30

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

runtime/dart_vm.cc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,14 @@ Dart_Handle GetVMServiceAssetsArchiveCallback() {
177177
#endif
178178
}
179179

180+
void PostTaskCallback(void* post_task_data,
181+
Dart_Task task,
182+
Dart_TaskData task_data) {
183+
auto* dart_vm = reinterpret_cast<DartVM*>(post_task_data);
184+
dart_vm->GetConcurrentWorkerTaskRunner()->PostTask(
185+
[task] { Dart_RunTask(task); });
186+
}
187+
180188
static const char kStdoutStreamId[] = "Stdout";
181189
static const char kStderrStreamId[] = "Stderr";
182190

@@ -449,6 +457,8 @@ DartVM::DartVM(std::shared_ptr<const DartVMData> vm_data,
449457
params.thread_exit = ThreadExitCallback;
450458
params.get_service_assets = GetVMServiceAssetsArchiveCallback;
451459
params.entropy_source = dart::bin::GetEntropy;
460+
params.post_task = PostTaskCallback;
461+
params.post_task_data = this;
452462
DartVMInitializer::Initialize(&params);
453463
// Send the earliest available timestamp in the application lifecycle to
454464
// timeline. The difference between this timestamp and the time we render
@@ -483,6 +493,10 @@ DartVM::DartVM(std::shared_ptr<const DartVMData> vm_data,
483493
Dart_SetDartLibrarySourcesKernel(dart_library_sources->GetMapping(),
484494
dart_library_sources->GetSize());
485495
}
496+
497+
// Update thread names now that the Dart VM is initialized.
498+
concurrent_message_loop_->PostTaskToAllWorkers(
499+
[] { Dart_SetThreadName("FlutterConcurrentMessageLoopWorker"); });
486500
}
487501

488502
DartVM::~DartVM() {

0 commit comments

Comments
 (0)