90 std::cerr << std::endl <<
" " << executable_name << std::endl << std::endl;
92 std::cerr <<
"Versions: " << std::endl << std::endl;
101 std::cerr <<
"Dart Version: " <<
GetDartVersion() << std::endl << std::endl;
103 std::cerr <<
"Available Flags:" << std::endl;
105 const uint32_t column_width = 80;
107 const uint32_t flags_count =
static_cast<uint32_t
>(Switch::Sentinel);
109 uint32_t max_width = 2;
110 for (uint32_t
i = 0;
i < flags_count;
i++) {
111 auto desc = gSwitchDescs[
i];
112 max_width = std::max<uint32_t>(desc.flag.size() + 2, max_width);
115 const uint32_t help_width = column_width - max_width - 3;
117 std::cerr << std::string(column_width,
'-') << std::endl;
118 for (uint32_t
i = 0;
i < flags_count;
i++) {
119 auto desc = gSwitchDescs[
i];
121 std::cerr << std::setw(max_width)
122 << std::string(
"--") +
123 std::string{desc.flag.data(), desc.flag.size()}
126 std::istringstream stream(desc.help);
127 int32_t remaining = help_width;
130 while (stream >> word && remaining > 0) {
131 remaining -= (word.size() + 1);
132 if (remaining <= 0) {
133 std::cerr << std::endl
134 << std::string(max_width,
' ') <<
" " << word <<
" ";
135 remaining = help_width;
137 std::cerr << word <<
" ";
141 std::cerr << std::endl;
143 std::cerr << std::string(column_width,
'-') << std::endl;
231 bool require_merged_platform_ui_thread) {
264 <<
"VM Service port specified was malformed. Will default to "
320 std::string trace_skia_allowlist;
322 &trace_skia_allowlist);
323 if (trace_skia_allowlist.size()) {
331 std::string trace_allowlist;
354 std::vector<std::string_view> aot_shared_library_name =
357 std::vector<std::string_view> vmservice_shared_library_name =
360 for (
auto path : vmservice_shared_library_name) {
364 std::string snapshot_asset_path;
366 &snapshot_asset_path);
368 std::string vm_snapshot_data_filename;
370 &vm_snapshot_data_filename);
374 std::string vm_snapshot_instr_filename;
376 &vm_snapshot_instr_filename);
378 std::string isolate_snapshot_data_filename;
380 &isolate_snapshot_data_filename);
382 std::string isolate_snapshot_instr_filename;
385 &isolate_snapshot_instr_filename);
387 if (!aot_shared_library_name.empty()) {
388 for (std::string_view
name : aot_shared_library_name) {
391 }
else if (!snapshot_asset_path.empty()) {
395 {snapshot_asset_path, vm_snapshot_instr_filename});
397 {snapshot_asset_path, isolate_snapshot_data_filename});
399 {snapshot_asset_path, isolate_snapshot_instr_filename});
413 std::string icu_symbol_prefix, native_lib_path;
422 settings.
icu_mapper = [icu_symbol_prefix, native_lib_path] {
434#if FML_OS_IOS || FML_OS_IOS_SIMULATOR || SLIMPELLER
439 std::string enable_impeller_value;
441 &enable_impeller_value)) {
443 enable_impeller_value.empty() ||
"true" == enable_impeller_value;
449 std::string impeller_backend_value;
451 &impeller_backend_value)) {
452 if (!impeller_backend_value.empty()) {
471 std::string all_dart_flags;
476 for (
const auto& flag : flags) {
478 FML_LOG(FATAL) <<
"Encountered disallowed Dart VM flag: " << flag;
498 std::string old_gen_heap_size;
506 std::string resource_cache_max_bytes_threshold;
509 &resource_cache_max_bytes_threshold);
511 std::stoi(resource_cache_max_bytes_threshold);
520 constexpr std::string_view kMergedThreadEnabled =
"enabled";
521 constexpr std::string_view kMergedThreadDisabled =
"disabled";
522 constexpr std::string_view kMergedThreadMergeAfterLaunch =
"mergeAfterLaunch";
525 FML_CHECK(!require_merged_platform_ui_thread)
526 <<
"This platform does not support the "
527 <<
FlagForSwitch(Switch::DisableMergedPlatformUIThread) <<
" flag";
533 std::string merged_platform_ui;
535 &merged_platform_ui);
536 if (merged_platform_ui == kMergedThreadEnabled) {
539 }
else if (merged_platform_ui == kMergedThreadDisabled) {
540 FML_CHECK(!require_merged_platform_ui_thread)
541 <<
"This platform does not support the "
543 << kMergedThreadDisabled <<
" flag";
547 }
else if (merged_platform_ui == kMergedThreadMergeAfterLaunch) {