-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Use the Dart isolate ownership API on the root isolate #163703
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
knopp
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me.
@chinmaygarde, any objections merging this?
@liamappelbe, is this already wired in the NativeCalable.isolateLocal trampoline?
|
Actually, maybe I don't quite understand how this works. Since |
|
I was hoping that instead of failing in DLRT_GetFfiCallbackMetadata when invoked outside of isolate, it could get check that the metadata isolate is owned by current thread and enter it, but I guess that's not the plan then? Would be nice to not have to do this manually when calling the trampoline from native callbacks. |
No, we'll be handling this at the level of jnigen/ffigen generated bindings for now. We might introduce another variant of One reason I'm hesitant to add
We're using ports because they're much safer than
Most users are doing interop using ffigen/jnigen, so they won't have to check ownership manually. |
chinmaygarde
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got distracted by the two callbacks. This patch LGTM.
| } | ||
| } | ||
|
|
||
| if (root_isolate_create_callback) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This patch lgtm but I got totally confused by the two "root isolate create callbacks". One in the settings, and another passed as an argument. Why are there two? Why does only one run in isolate scope? Why can't one wrap the other?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure. I've only touched this code a couple of times 😅
Pull Request is not mergeable
Roll Flutter from 1659206 to 2e570ca (75 revisions) flutter/flutter@1659206...2e570ca 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from ac08df9c8d82 to e5a33102401c (1 revision) (flutter/flutter#164288) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 6018dff0233a to ac08df9c8d82 (1 revision) (flutter/flutter#164275) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 4a218fbffc80 to fcda71ce147b (1 revision) (flutter/flutter#164276) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 0f2e106c9abc to 6018dff0233a (1 revision) (flutter/flutter#164266) 2025-02-27 robert.ancell@canonical.com Add windowing channel support to Linux embedder (flutter/flutter#163180) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 7fa5901bd8a3 to 4a218fbffc80 (2 revisions) (flutter/flutter#164260) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from fdd97386193e to 0f2e106c9abc (4 revisions) (flutter/flutter#164259) 2025-02-27 codefu@google.com Run more builds faster (flutter/flutter#164125) 2025-02-27 737941+loic-sharma@users.noreply.github.com Increase customer test timeout to 60 minutes (flutter/flutter#164239) 2025-02-27 jason-simmons@users.noreply.github.com Reland "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools" (flutter/flutter#164240) 2025-02-27 liama@google.com Use the Dart isolate ownership API on the root isolate (flutter/flutter#163703) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164243) 2025-02-26 robert.ancell@canonical.com Show Linux driver information in flutter doctor (flutter/flutter#163980) 2025-02-26 34871572+gmackall@users.noreply.github.com Implement opacity `FlutterMutator` for hcpp (flutter/flutter#164147) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164232) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 47b84f354604 to fdd97386193e (8 revisions) (flutter/flutter#164221) 2025-02-26 jonahwilliams@google.com [Impeller] Reland: move AHB check into Flutter main, don't disable ImageReader on 29. (flutter/flutter#164201) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from 80865748abe0 to 7fa5901bd8a3 (3 revisions) (flutter/flutter#164226) 2025-02-26 68449066+zijiehe-google-com@users.noreply.github.com Update fuchsia_test_scripts_version to the latest version (flutter/flutter#164123) 2025-02-26 brackenavaron@gmail.com Guard against zero item extent for carousel (flutter/flutter#163310) 2025-02-26 jonahwilliams@google.com [Impeller] work around for crashy Nexus 5 Driver. (flutter/flutter#164040) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (#163890)" (flutter/flutter#164209) 2025-02-26 48155875+Michae1Weiss@users.noreply.github.com Add localization for `Back` and `Cancel` buttons in CupertinoNavigationBar (flutter/flutter#162581) 2025-02-26 30870216+gaaclarke@users.noreply.github.com Added compilation failure if a max ubo size is exceeded (flutter/flutter#164038) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 5336e20498d9 to 47b84f354604 (2 revisions) (flutter/flutter#164188) 2025-02-26 jason-simmons@users.noreply.github.com Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (flutter/flutter#163890) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 3ce6f25dc13e to 5336e20498d9 (9 revisions) (flutter/flutter#164174) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from b8292dfeaa67 to 80865748abe0 (9 revisions) (flutter/flutter#164168) 2025-02-26 dkwingsmt@users.noreply.github.com [Engine] Remove dead code for RoundedSuperellipse (flutter/flutter#164163) 2025-02-26 jonahwilliams@google.com [Impeller] detect mediatek soc and fall back to GLES. (flutter/flutter#164126) 2025-02-26 jonahwilliams@google.com [Impeller] make DLOG into LOG for startup errors. (flutter/flutter#164110) 2025-02-26 15619084+vashworth@users.noreply.github.com Intercept error when iOS 18.4 crashes with JIT mode and give guided error (flutter/flutter#164072) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (#164109)" (flutter/flutter#164166) 2025-02-26 zanderso@users.noreply.github.com Run new gallery transition perf benchmark on Galaxy S24 (flutter/flutter#163665) 2025-02-26 jonahwilliams@google.com [Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (flutter/flutter#164109) 2025-02-26 chris@bracken.jp [iOS] Add platform view to integration_test example (flutter/flutter#164144) 2025-02-26 dominik@honnef.co Fix minor issues in documentation of WidgetsApp (flutter/flutter#163942) 2025-02-26 louisehsu@google.com Fix extra numbers showing up when enabling VoiceControl (flutter/flutter#163593) 2025-02-26 cloud@pathconnected.net Set SliverResizingHeader's maxScrollObstructionExtent to minExtent (flutter/flutter#162955) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from aea6fff33f06 to b8292dfeaa67 (1 revision) (flutter/flutter#163973) 2025-02-26 flar@google.com [DisplayList] Delete all legacy Skia-oriented method overloads in DlCanvas (flutter/flutter#164054) 2025-02-25 polinach@google.com Clean up leak tracker instrumentation tech debt. (flutter/flutter#164070) 2025-02-25 magder@google.com Revert "Marks Linux_pixel_7pro service_extensions_test to be flaky" (flutter/flutter#163882) 2025-02-25 magder@google.com Check if simctl is installed before trying to list devices or runtimes (flutter/flutter#163895) 2025-02-25 magder@google.com Update dragDevices doc to include default PointerDeviceKind.trackpad (flutter/flutter#163898) 2025-02-25 reidbaker@google.com Update multiple flutters benchmark test to latest gradle and agp and gradle defined dependencies (flutter/flutter#164029) ...
Roll Flutter from 1659206 to 2e570ca (75 revisions) flutter/flutter@1659206...2e570ca 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from ac08df9c8d82 to e5a33102401c (1 revision) (flutter/flutter#164288) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 6018dff0233a to ac08df9c8d82 (1 revision) (flutter/flutter#164275) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 4a218fbffc80 to fcda71ce147b (1 revision) (flutter/flutter#164276) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 0f2e106c9abc to 6018dff0233a (1 revision) (flutter/flutter#164266) 2025-02-27 robert.ancell@canonical.com Add windowing channel support to Linux embedder (flutter/flutter#163180) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 7fa5901bd8a3 to 4a218fbffc80 (2 revisions) (flutter/flutter#164260) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from fdd97386193e to 0f2e106c9abc (4 revisions) (flutter/flutter#164259) 2025-02-27 codefu@google.com Run more builds faster (flutter/flutter#164125) 2025-02-27 737941+loic-sharma@users.noreply.github.com Increase customer test timeout to 60 minutes (flutter/flutter#164239) 2025-02-27 jason-simmons@users.noreply.github.com Reland "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools" (flutter/flutter#164240) 2025-02-27 liama@google.com Use the Dart isolate ownership API on the root isolate (flutter/flutter#163703) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164243) 2025-02-26 robert.ancell@canonical.com Show Linux driver information in flutter doctor (flutter/flutter#163980) 2025-02-26 34871572+gmackall@users.noreply.github.com Implement opacity `FlutterMutator` for hcpp (flutter/flutter#164147) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164232) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 47b84f354604 to fdd97386193e (8 revisions) (flutter/flutter#164221) 2025-02-26 jonahwilliams@google.com [Impeller] Reland: move AHB check into Flutter main, don't disable ImageReader on 29. (flutter/flutter#164201) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from 80865748abe0 to 7fa5901bd8a3 (3 revisions) (flutter/flutter#164226) 2025-02-26 68449066+zijiehe-google-com@users.noreply.github.com Update fuchsia_test_scripts_version to the latest version (flutter/flutter#164123) 2025-02-26 brackenavaron@gmail.com Guard against zero item extent for carousel (flutter/flutter#163310) 2025-02-26 jonahwilliams@google.com [Impeller] work around for crashy Nexus 5 Driver. (flutter/flutter#164040) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (#163890)" (flutter/flutter#164209) 2025-02-26 48155875+Michae1Weiss@users.noreply.github.com Add localization for `Back` and `Cancel` buttons in CupertinoNavigationBar (flutter/flutter#162581) 2025-02-26 30870216+gaaclarke@users.noreply.github.com Added compilation failure if a max ubo size is exceeded (flutter/flutter#164038) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 5336e20498d9 to 47b84f354604 (2 revisions) (flutter/flutter#164188) 2025-02-26 jason-simmons@users.noreply.github.com Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (flutter/flutter#163890) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 3ce6f25dc13e to 5336e20498d9 (9 revisions) (flutter/flutter#164174) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from b8292dfeaa67 to 80865748abe0 (9 revisions) (flutter/flutter#164168) 2025-02-26 dkwingsmt@users.noreply.github.com [Engine] Remove dead code for RoundedSuperellipse (flutter/flutter#164163) 2025-02-26 jonahwilliams@google.com [Impeller] detect mediatek soc and fall back to GLES. (flutter/flutter#164126) 2025-02-26 jonahwilliams@google.com [Impeller] make DLOG into LOG for startup errors. (flutter/flutter#164110) 2025-02-26 15619084+vashworth@users.noreply.github.com Intercept error when iOS 18.4 crashes with JIT mode and give guided error (flutter/flutter#164072) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (#164109)" (flutter/flutter#164166) 2025-02-26 zanderso@users.noreply.github.com Run new gallery transition perf benchmark on Galaxy S24 (flutter/flutter#163665) 2025-02-26 jonahwilliams@google.com [Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (flutter/flutter#164109) 2025-02-26 chris@bracken.jp [iOS] Add platform view to integration_test example (flutter/flutter#164144) 2025-02-26 dominik@honnef.co Fix minor issues in documentation of WidgetsApp (flutter/flutter#163942) 2025-02-26 louisehsu@google.com Fix extra numbers showing up when enabling VoiceControl (flutter/flutter#163593) 2025-02-26 cloud@pathconnected.net Set SliverResizingHeader's maxScrollObstructionExtent to minExtent (flutter/flutter#162955) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from aea6fff33f06 to b8292dfeaa67 (1 revision) (flutter/flutter#163973) 2025-02-26 flar@google.com [DisplayList] Delete all legacy Skia-oriented method overloads in DlCanvas (flutter/flutter#164054) 2025-02-25 polinach@google.com Clean up leak tracker instrumentation tech debt. (flutter/flutter#164070) 2025-02-25 magder@google.com Revert "Marks Linux_pixel_7pro service_extensions_test to be flaky" (flutter/flutter#163882) 2025-02-25 magder@google.com Check if simctl is installed before trying to list devices or runtimes (flutter/flutter#163895) 2025-02-25 magder@google.com Update dragDevices doc to include default PointerDeviceKind.trackpad (flutter/flutter#163898) 2025-02-25 reidbaker@google.com Update multiple flutters benchmark test to latest gradle and agp and gradle defined dependencies (flutter/flutter#164029) ...
Roll Flutter from 1659206 to 2e570ca (75 revisions) flutter/flutter@1659206...2e570ca 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from ac08df9c8d82 to e5a33102401c (1 revision) (flutter/flutter#164288) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 6018dff0233a to ac08df9c8d82 (1 revision) (flutter/flutter#164275) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 4a218fbffc80 to fcda71ce147b (1 revision) (flutter/flutter#164276) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from 0f2e106c9abc to 6018dff0233a (1 revision) (flutter/flutter#164266) 2025-02-27 robert.ancell@canonical.com Add windowing channel support to Linux embedder (flutter/flutter#163180) 2025-02-27 engine-flutter-autoroll@skia.org Roll Dart SDK from 7fa5901bd8a3 to 4a218fbffc80 (2 revisions) (flutter/flutter#164260) 2025-02-27 engine-flutter-autoroll@skia.org Roll Skia from fdd97386193e to 0f2e106c9abc (4 revisions) (flutter/flutter#164259) 2025-02-27 codefu@google.com Run more builds faster (flutter/flutter#164125) 2025-02-27 737941+loic-sharma@users.noreply.github.com Increase customer test timeout to 60 minutes (flutter/flutter#164239) 2025-02-27 jason-simmons@users.noreply.github.com Reland "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools" (flutter/flutter#164240) 2025-02-27 liama@google.com Use the Dart isolate ownership API on the root isolate (flutter/flutter#163703) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164243) 2025-02-26 robert.ancell@canonical.com Show Linux driver information in flutter doctor (flutter/flutter#163980) 2025-02-26 34871572+gmackall@users.noreply.github.com Implement opacity `FlutterMutator` for hcpp (flutter/flutter#164147) 2025-02-26 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from g-2SJtblPjjaH7Egy... to 1elkOxihZuTEiTXzY... (flutter/flutter#164232) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 47b84f354604 to fdd97386193e (8 revisions) (flutter/flutter#164221) 2025-02-26 jonahwilliams@google.com [Impeller] Reland: move AHB check into Flutter main, don't disable ImageReader on 29. (flutter/flutter#164201) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from 80865748abe0 to 7fa5901bd8a3 (3 revisions) (flutter/flutter#164226) 2025-02-26 68449066+zijiehe-google-com@users.noreply.github.com Update fuchsia_test_scripts_version to the latest version (flutter/flutter#164123) 2025-02-26 brackenavaron@gmail.com Guard against zero item extent for carousel (flutter/flutter#163310) 2025-02-26 jonahwilliams@google.com [Impeller] work around for crashy Nexus 5 Driver. (flutter/flutter#164040) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (#163890)" (flutter/flutter#164209) 2025-02-26 48155875+Michae1Weiss@users.noreply.github.com Add localization for `Back` and `Cancel` buttons in CupertinoNavigationBar (flutter/flutter#162581) 2025-02-26 30870216+gaaclarke@users.noreply.github.com Added compilation failure if a max ubo size is exceeded (flutter/flutter#164038) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 5336e20498d9 to 47b84f354604 (2 revisions) (flutter/flutter#164188) 2025-02-26 jason-simmons@users.noreply.github.com Add a buildtools directory and move third_party/ninja to the project root in order to match the expectations of depot_tools (flutter/flutter#163890) 2025-02-26 engine-flutter-autoroll@skia.org Roll Skia from 3ce6f25dc13e to 5336e20498d9 (9 revisions) (flutter/flutter#164174) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from b8292dfeaa67 to 80865748abe0 (9 revisions) (flutter/flutter#164168) 2025-02-26 dkwingsmt@users.noreply.github.com [Engine] Remove dead code for RoundedSuperellipse (flutter/flutter#164163) 2025-02-26 jonahwilliams@google.com [Impeller] detect mediatek soc and fall back to GLES. (flutter/flutter#164126) 2025-02-26 jonahwilliams@google.com [Impeller] make DLOG into LOG for startup errors. (flutter/flutter#164110) 2025-02-26 15619084+vashworth@users.noreply.github.com Intercept error when iOS 18.4 crashes with JIT mode and give guided error (flutter/flutter#164072) 2025-02-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (#164109)" (flutter/flutter#164166) 2025-02-26 zanderso@users.noreply.github.com Run new gallery transition perf benchmark on Galaxy S24 (flutter/flutter#163665) 2025-02-26 jonahwilliams@google.com [Impeller] move AHB check to Vulkan, use Vulkan surface on 29. (flutter/flutter#164109) 2025-02-26 chris@bracken.jp [iOS] Add platform view to integration_test example (flutter/flutter#164144) 2025-02-26 dominik@honnef.co Fix minor issues in documentation of WidgetsApp (flutter/flutter#163942) 2025-02-26 louisehsu@google.com Fix extra numbers showing up when enabling VoiceControl (flutter/flutter#163593) 2025-02-26 cloud@pathconnected.net Set SliverResizingHeader's maxScrollObstructionExtent to minExtent (flutter/flutter#162955) 2025-02-26 engine-flutter-autoroll@skia.org Roll Dart SDK from aea6fff33f06 to b8292dfeaa67 (1 revision) (flutter/flutter#163973) 2025-02-26 flar@google.com [DisplayList] Delete all legacy Skia-oriented method overloads in DlCanvas (flutter/flutter#164054) 2025-02-25 polinach@google.com Clean up leak tracker instrumentation tech debt. (flutter/flutter#164070) 2025-02-25 magder@google.com Revert "Marks Linux_pixel_7pro service_extensions_test to be flaky" (flutter/flutter#163882) 2025-02-25 magder@google.com Check if simctl is installed before trying to list devices or runtimes (flutter/flutter#163895) 2025-02-25 magder@google.com Update dragDevices doc to include default PointerDeviceKind.trackpad (flutter/flutter#163898) 2025-02-25 reidbaker@google.com Update multiple flutters benchmark test to latest gradle and agp and gradle defined dependencies (flutter/flutter#164029) ...
The isolate ownership API was introduced recently to solve some deadlock bugs in native callbacks.
A native callback is a call from native code into a Dart function. Currently all such callbacks must run that Dart function in the isolate that created the callback (called the target isolate). The only native callback primitives at the moment are
NativeCallable.isolateLocal(blocking, but must be invoked from the same thread as the target isolate, and the target isolate must be currently entered on that thread) andNativeCallable.listener(non-blocking, can be invoked from any thread).To build blocking callbacks that can be called from any thread, we can use a
NativeCallable.listener, and use a synchronization object like a mutex or a condition variable to block until the callback is complete. However, if we try to do this on the thread that is currently entered in the target isolate, we will deadlock: we invoke the listener, a message is sent to the target isolate, and we block waiting for the message to be handled, so we never pass control flow back to the isolate to handle the message, and never stop waiting.To fix this deadlock, Ffigen and Jnigen both have a mechanism that checks if we're on the target isolate's thread first:
NativeCallable.isolateLocalor similarNativeCallable.listeneror similarHowever, this neglects the case where we're on the target isolate's thread, but not entered into the isolate. This case happens in Flutter when the callback is invoked from the UI thread (or the platform thread when thread merging is enabled), and the target isolate is the root isolate. When the native callback is invoked, the root isolate is not entered, so we hit the second case: we send a message to the root isolate, and block to wait for a response. Since the root isolate is exclusively run on the UI thread, and we're blocking the UI thread, the message will never be handled, and we deadlock.
The isolate ownership API fixes this by allowing the embedder to inform the VM that it will run a particular isolate exclusively on a particular thread, using
Dart_SetCurrentThreadOwnsIsolate. Other native code can then query that ownership usingDart_GetCurrentThreadOwnsIsolate. This lets us add a third case to our conditional:NativeCallable.isolateLocalor similarNativeCallable.isolateLocalor similarNativeCallable.listeneror similarNote: We don't need to set the ownership of VM managed threads, because they run in a thread pool exclusively used by the VM, so there's no way for native code to be executed on the thread (except by FFI, in which case we're entered into the isolate anyway). We only need this for Flutter's root isolate because work can be sent to the UI thread/platform thread using OS specific APIs like Android's
Looper.getMainLooper().