220 std::optional<std::string> dart_entrypoint,
221 std::optional<std::string> dart_entrypoint_library,
222 const std::vector<std::string>& dart_entrypoint_args,
223 std::unique_ptr<IsolateConfiguration> isolate_configuration,
289 const std::shared_ptr<const fml::Mapping>& kernel,
309 std::vector<std::shared_ptr<const fml::Mapping>> kernels);
327 std::vector<std::unique_ptr<const fml::Mapping>> kernels);
343 [[nodiscard]]
bool RunFromLibrary(std::optional<std::string> library_name,
344 std::optional<std::string> entrypoint,
345 const std::vector<std::string>&
args);
399 char**
error)
override;
402 intptr_t loading_unit_id,
403 std::unique_ptr<const fml::Mapping> snapshot_data,
404 std::unique_ptr<const fml::Mapping> snapshot_instructions);
407 const std::string& error_message,
417 const std::shared_ptr<const fml::Mapping>& mapping);
421 class AutoFireClosure {
434 std::vector<std::unique_ptr<AutoFireClosure>> shutdown_callbacks_;
435 std::unordered_set<fml::RefPtr<DartSnapshot>> loading_unit_snapshots_;
437 const bool may_insecurely_connect_to_all_domains_;
438 const bool is_platform_isolate_;
439 const bool is_spawning_in_group_;
440 std::string domain_network_policy_;
441 std::shared_ptr<PlatformIsolateManager> platform_isolate_manager_;
443 static std::weak_ptr<DartIsolate> CreateRootIsolate(
454 bool is_root_isolate,
456 bool is_spawning_in_group =
false);
460 std::shared_ptr<PlatformIsolateManager> platform_isolate_manager);
471 [[nodiscard]]
bool Initialize(
Dart_Isolate dart_isolate);
474 bool post_directly_to_runner);
476 bool LoadKernel(
const std::shared_ptr<const fml::Mapping>& mapping,
479 [[nodiscard]]
bool LoadLibraries();
481 bool UpdateThreadPoolNames()
const;
483 [[nodiscard]]
bool MarkIsolateRunnable();
485 void OnShutdownCallback();
489 const char* advisory_script_uri,
490 const char* advisory_script_entrypoint,
491 const char* package_root,
492 const char* package_config,
494 std::shared_ptr<DartIsolate>* parent_isolate_group,
498 static bool DartIsolateInitializeCallback(
void** child_callback_data,
502 const char* package_root,
503 const char* package_config,
507 typedef std::function<
Dart_Isolate(std::shared_ptr<DartIsolateGroupData>*,
508 std::shared_ptr<DartIsolate>*,
514 std::unique_ptr<std::shared_ptr<DartIsolateGroupData>> isolate_group_data,
515 std::unique_ptr<std::shared_ptr<DartIsolate>> isolate_data,
518 const IsolateMaker& make_isolate);
520 static bool InitializeIsolate(
521 const std::shared_ptr<DartIsolate>& embedder_isolate,
526 static void DartIsolateShutdownCallback(
527 std::shared_ptr<DartIsolateGroupData>* isolate_group_data,
528 std::shared_ptr<DartIsolate>* isolate_data);
531 static void DartIsolateCleanupCallback(
532 std::shared_ptr<DartIsolateGroupData>* isolate_group_data,
533 std::shared_ptr<DartIsolate>* isolate_data);
536 static void DartIsolateGroupCleanupCallback(
537 std::shared_ptr<DartIsolateGroupData>* isolate_group_data);
540 static Dart_Handle OnDartLoadLibrary(intptr_t loading_unit_id);
542 static void SpawnIsolateShutdownCallback(
543 std::shared_ptr<DartIsolateGroupData>* isolate_group_data,
544 std::shared_ptr<DartIsolate>* isolate_data);
static std::weak_ptr< DartIsolate > CreateRunningRootIsolate(const Settings &settings, const fml::RefPtr< const DartSnapshot > &isolate_snapshot, std::unique_ptr< PlatformConfiguration > platform_configuration, Flags flags, const fml::closure &root_isolate_create_callback, const fml::closure &isolate_create_callback, const fml::closure &isolate_shutdown_callback, std::optional< std::string > dart_entrypoint, std::optional< std::string > dart_entrypoint_library, const std::vector< std::string > &dart_entrypoint_args, std::unique_ptr< IsolateConfiguration > isolate_configuration, const UIDartState::Context &context, const DartIsolate *spawning_isolate=nullptr)
Creates an instance of a root isolate and returns a weak pointer to the same. The isolate instance ma...
const uint8_t uint32_t uint32_t GError ** error
The subset of state which is owned by the shell or engine and passed through the RuntimeController in...