79#define SAVE_ERROR_AND_EXIT(result) \
80 *error = Utils::StrDup(Dart_GetError(result)); \
81 if (Dart_IsCompilationError(result)) { \
82 *exit_code = kCompilationErrorExitCode; \
83 } else if (Dart_IsApiError(result)) { \
84 *exit_code = kApiErrorExitCode; \
86 *exit_code = kErrorExitCode; \
89 Dart_ShutdownIsolate(); \
92#define CHECK_RESULT(result) \
93 if (Dart_IsError(result)) { \
94 SAVE_ERROR_AND_EXIT(result); \
97#define CHECK_RESULT_CLEANUP(result, cleanup) \
98 if (Dart_IsError(result)) { \
100 SAVE_ERROR_AND_EXIT(result); \
104 if (Options::depfile() ==
nullptr) {
108 if (file ==
nullptr) {
113 if (Options::depfile_output_filename() !=
nullptr) {
114 success &= file->Print(
"%s: ", Options::depfile_output_filename());
116 success &= file->Print(
"%s: ", Options::snapshot_filename());
123 "Error: Failed to fetch dependencies from kernel service: %s\n\n",
126 success &= file->WriteFully(
result.kernel,
result.kernel_size);
129 success &= file->Print(
"\n");
140 "A snapshot was requested, but a secondary isolate "
141 "performed a hard exit (%" Pd64 ").\n",
145 if (exit_code == 0) {
146 if (Options::gen_snapshot_kind() ==
kAppJIT) {
155 bool is_isolate_group_start,
156 bool is_kernel_isolate,
157 const char** resolved_packages_config) {
160 const auto script_uri = isolate_group_data->script_url;
176 ASSERT(*resolved_packages_config !=
nullptr);
177#if !defined(DART_PRECOMPILED_RUNTIME)
178 if (is_isolate_group_start) {
179 isolate_group_data->set_resolved_packages_config(
180 *resolved_packages_config);
182 ASSERT(strcmp(isolate_group_data->resolved_packages_config(),
183 *resolved_packages_config) == 0);
197 const char* namespc = is_kernel_isolate ? nullptr : Options::namespc();
207 ASSERT(isolate !=
nullptr);
209 auto isolate_group_data =
212 auto isolate_data =
new IsolateData(isolate_group_data);
213 *child_callback_data = isolate_data;
216 const auto script_uri = isolate_group_data->script_url;
217 const bool isolate_run_app_snapshot =
218 isolate_group_data->RunFromAppSnapshot();
225 if (isolate_run_app_snapshot) {
232 if (isolate_group_data->kernel_buffer() !=
nullptr) {
237 const char* resolved_script_uri =
nullptr;
255 bool is_main_isolate,
256 const char* script_uri,
257 const char* packages_config,
258 bool isolate_run_app_snapshot,
273 const char* resolved_packages_config =
nullptr;
277 flags->is_kernel_isolate, &resolved_packages_config);
280#if !defined(DART_PRECOMPILED_RUNTIME)
281 auto isolate_group_data = isolate_data->isolate_group_data();
282 const uint8_t* kernel_buffer = isolate_group_data->kernel_buffer().get();
283 intptr_t kernel_buffer_size = isolate_group_data->kernel_buffer_size();
284 if (!isolate_run_app_snapshot && kernel_buffer ==
nullptr &&
287 const char*
format =
"Dart frontend unavailable to compile script %s.";
288 intptr_t len = snprintf(
nullptr, 0,
format, script_uri) + 1;
297 uint8_t* application_kernel_buffer =
nullptr;
298 intptr_t application_kernel_buffer_size = 0;
303 const bool for_snapshot = Options::gen_snapshot_kind() ==
kAppJIT;
306 const bool embed_sources = Options::gen_snapshot_kind() !=
kAppJIT;
308 &application_kernel_buffer_size,
error, exit_code,
309 resolved_packages_config, for_snapshot,
311 if (application_kernel_buffer ==
nullptr) {
316 isolate_group_data->SetKernelBufferNewlyOwned(
317 application_kernel_buffer, application_kernel_buffer_size);
318 kernel_buffer = application_kernel_buffer;
319 kernel_buffer_size = application_kernel_buffer_size;
321 if (kernel_buffer !=
nullptr) {
331 if (isolate_run_app_snapshot) {
334#if !defined(DART_PRECOMPILED_RUNTIME)
335 if (is_main_isolate) {
338 const char* resolved_script_uri =
nullptr;
341 &resolved_script_uri);
348#if !defined(DART_PRECOMPILED_RUNTIME)
353 if (kernel_buffer !=
nullptr) {
357 const char* resolved_script_uri =
nullptr;
366 0,
nullptr,
nullptr);
372 if ((Options::gen_snapshot_kind() ==
kAppJIT) && is_main_isolate) {
377#if !defined(DART_PRECOMPILED_RUNTIME)
379 const char* isolate_name =
nullptr;
392 if (*
error !=
nullptr) {
401#if !defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
406 const char* packages_config,
413 if (Options::gen_snapshot_kind() ==
kAppJIT) {
414 const uint8_t* kernel_buffer =
nullptr;
415 intptr_t kernel_buffer_size = 0;
417 if (kernel_buffer_size != 0) {
424 kernel_snapshot_uri !=
nullptr ? kernel_snapshot_uri : script_uri;
426 if (packages_config ==
nullptr) {
427 packages_config = Options::packages_file();
433 bool isolate_run_app_snapshot =
false;
436 if ((kernel_snapshot_uri !=
nullptr) &&
438 kernel_snapshot_uri,
false,
439 false)) !=
nullptr) &&
440 app_snapshot->
IsJIT()) {
443 const uint8_t* ignore_vm_snapshot_data;
444 const uint8_t* ignore_vm_snapshot_instructions;
445 isolate_run_app_snapshot =
true;
447 &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
450 uri, packages_config, app_snapshot, isolate_run_app_snapshot);
451 isolate_data =
new IsolateData(isolate_group_data);
455 isolate_group_data, isolate_data,
error);
457 if (isolate ==
nullptr) {
462 delete isolate_group_data;
464 const uint8_t* kernel_service_buffer =
nullptr;
465 intptr_t kernel_service_buffer_size = 0;
467 ASSERT(kernel_service_buffer !=
nullptr);
469 isolate_run_app_snapshot);
471 const_cast<uint8_t*
>(kernel_service_buffer),
472 kernel_service_buffer_size);
473 isolate_data =
new IsolateData(isolate_group_data);
476 kernel_service_buffer, kernel_service_buffer_size,
flags,
477 isolate_group_data, isolate_data,
error);
480 if (isolate ==
nullptr) {
483 delete isolate_group_data;
489 isolate_run_app_snapshot,
flags,
error, exit_code);
497 const char* packages_config,
502 ASSERT(script_uri !=
nullptr);
504 auto isolate_group_data =
508#if defined(DART_PRECOMPILED_RUNTIME)
522 flags->load_vmservice_library =
true;
523 flags->null_safety =
true;
532 if (isolate ==
nullptr) {
533 delete isolate_group_data;
547 bool wait_for_dds_to_advertise_service =
548 !(Options::disable_dart_dev() || Options::disable_dds());
549 bool serve_devtools =
550 Options::enable_devtools() || !Options::disable_devtools();
554 Options::vm_service_dev_mode(), Options::vm_service_auth_disabled(),
555 Options::vm_write_service_info_filename(), Options::trace_loading(),
556 Options::deterministic(), Options::enable_service_port_fallback(),
557 wait_for_dds_to_advertise_service, serve_devtools,
558 Options::enable_observatory(), Options::print_dtd())) {
562 if (Options::compile_all()) {
576#if !defined(DART_PRECOMPILED_RUNTIME)
579 const char* packages_config,
586 if (dartdev_path.get() ==
nullptr) {
588 "Failed to start the Dart CLI isolate. Could not resolve DartDev "
589 "snapshot or kernel.\n");
604 bool isolate_run_app_snapshot =
true;
607 dartdev_path.get(),
false,
608 false)) !=
nullptr) &&
609 app_snapshot->
IsJIT()) {
612 const uint8_t* ignore_vm_snapshot_data;
613 const uint8_t* ignore_vm_snapshot_instructions;
615 &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
619 app_snapshot, isolate_run_app_snapshot);
620 isolate_data =
new IsolateData(isolate_group_data);
627 if (isolate ==
nullptr) {
634 isolate_run_app_snapshot =
false;
635 if (app_snapshot !=
nullptr) {
640 isolate_run_app_snapshot);
641 uint8_t* application_kernel_buffer =
nullptr;
642 intptr_t application_kernel_buffer_size = 0;
643 dfe.
ReadScript(dartdev_path.get(),
nullptr, &application_kernel_buffer,
644 &application_kernel_buffer_size,
false);
646 application_kernel_buffer, application_kernel_buffer_size);
648 isolate_data =
new IsolateData(isolate_group_data);
657 isolate_run_app_snapshot,
flags,
error, exit_code);
663 0,
nullptr,
nullptr);
664 return created_isolate;
671 bool is_main_isolate,
672 const char* script_uri,
674 const char* packages_config,
680 ASSERT(script_uri !=
nullptr);
681 uint8_t* kernel_buffer =
nullptr;
682 std::shared_ptr<uint8_t> kernel_buffer_ptr;
683 intptr_t kernel_buffer_size = 0;
686#if defined(DART_PRECOMPILED_RUNTIME)
689 if (is_main_isolate) {
694 const bool kForceLoadElfFromMemory =
false;
697 if (app_snapshot ==
nullptr || !app_snapshot->
IsAOT()) {
699 "The uri(%s) provided to `Isolate.spawnUri()` does not "
700 "contain a valid AOT snapshot.",
705 const uint8_t* ignore_vm_snapshot_data;
706 const uint8_t* ignore_vm_snapshot_instructions;
708 &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
712 bool isolate_run_app_snapshot =
true;
716 bool isolate_run_app_snapshot =
false;
723 isolate_run_app_snapshot =
true;
726 }
else if (!is_main_isolate) {
728 if (app_snapshot !=
nullptr && app_snapshot->
IsJITorAOT()) {
729 if (app_snapshot->
IsAOT()) {
731 "The uri(%s) provided to `Isolate.spawnUri()` is an "
732 "AOT snapshot and the JIT VM cannot spawn an isolate using it.",
737 isolate_run_app_snapshot =
true;
738 const uint8_t* ignore_vm_snapshot_data;
739 const uint8_t* ignore_vm_snapshot_instructions;
741 &ignore_vm_snapshot_data, &ignore_vm_snapshot_instructions,
746 if (kernel_buffer ==
nullptr && !isolate_run_app_snapshot) {
748 &kernel_buffer_size,
true,
756 script_uri, packages_config, app_snapshot, isolate_run_app_snapshot);
757 if (kernel_buffer !=
nullptr) {
758 if (kernel_buffer_ptr) {
759 isolate_group_data->SetKernelBufferAlreadyOwned(
760 std::move(kernel_buffer_ptr), kernel_buffer_size);
762 isolate_group_data->SetKernelBufferNewlyOwned(kernel_buffer,
770#if !defined(DART_PRECOMPILED_RUNTIME)
772 const uint8_t* platform_kernel_buffer =
nullptr;
773 intptr_t platform_kernel_buffer_size = 0;
774 dfe.
LoadPlatform(&platform_kernel_buffer, &platform_kernel_buffer_size);
775 if (platform_kernel_buffer ==
nullptr) {
776 platform_kernel_buffer = kernel_buffer;
777 platform_kernel_buffer_size = kernel_buffer_size;
779 if (platform_kernel_buffer ==
nullptr) {
780#if defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
782 "Binary built with --exclude-kernel-service. Cannot run"
785 FATAL(
"platform_program cannot be nullptr.");
791 isolate_data =
new IsolateData(isolate_group_data);
793 script_uri,
name, platform_kernel_buffer, platform_kernel_buffer_size,
794 flags, isolate_group_data, isolate_data,
error);
796 isolate_data =
new IsolateData(isolate_group_data);
799 isolate_group_data, isolate_data,
error);
802 isolate_data =
new IsolateData(isolate_group_data);
805 isolate_group_data, isolate_data,
error);
809 if (isolate ==
nullptr) {
811 delete isolate_group_data;
814 isolate, is_main_isolate, script_uri, packages_config,
815 isolate_run_app_snapshot,
flags,
error, exit_code);
821 0,
nullptr,
nullptr);
822 return created_isolate;
829 const char* package_root,
830 const char* package_config,
837 ASSERT(package_root ==
nullptr);
839 if (
error !=
nullptr) {
843 bool dontneed_safe =
true;
844#if defined(DART_HOST_OS_LINUX)
847 dontneed_safe =
false;
850 if (Options::force_load_elf_from_memory()) {
851 dontneed_safe =
false;
854 flags->snapshot_is_dontneed_safe = dontneed_safe;
857#if !defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
864#if !defined(DART_PRECOMPILED_RUNTIME)
876 bool is_main_isolate =
false;
878 package_config,
flags, callback_data,
882#if !defined(DART_PRECOMPILED_RUNTIME)
884 intptr_t kernel_buffer_size) {
902 auto isolate_data =
reinterpret_cast<IsolateData*
>(callback_data);
907 auto isolate_group_data =
reinterpret_cast<IsolateGroupData*
>(callback_data);
908 delete isolate_group_data;
935 if (path ==
nullptr) {
950 info->name =
"Dart VM";
954#define CHECK_RESULT(result) \
955 if (Dart_IsError(result)) { \
956 const int exit_code = Dart_IsCompilationError(result) \
957 ? kCompilationErrorExitCode \
959 ErrorExit(exit_code, "%s\n", Dart_GetError(result)); \
963 const char* package_config_override,
966 Syslog::PrintErr(
"Cannot create a script snapshot from an app snapshot.\n");
972 package_config_override);
977 const char* package_config_override,
979 if (script_name !=
nullptr) {
980 const char*
base_name = strrchr(script_name,
'/');
986 const intptr_t kMaxNameLength = 64;
987 char name[kMaxNameLength];
994 char*
error =
nullptr;
998 flags.is_system_isolate = Options::mark_main_isolate_as_system_isolate();
999 bool dontneed_safe =
true;
1000#if defined(DART_HOST_OS_LINUX)
1003 dontneed_safe =
false;
1006 if (Options::force_load_elf_from_memory()) {
1007 dontneed_safe =
false;
1010 flags.snapshot_is_dontneed_safe = dontneed_safe;
1013 true, script_name,
"main",
1014 Options::packages_file() ==
nullptr ? package_config_override
1015 : Options::packages_file(),
1018 if (isolate ==
nullptr) {
1024 if (
error !=
nullptr) {
1035 ASSERT(isolate !=
nullptr);
1045#if !defined(DART_PRECOMPILED_RUNTIME)
1046 if (Options::compile_all()) {
1070 const intptr_t kNumIsolateArgs = 2;
1072 isolate_args[0] = main_closure;
1079 kNumIsolateArgs, isolate_args);
1085 if (Options::gen_snapshot_kind() ==
kAppJIT) {
1107 if (strncmp(path,
"\\\\?\\", 4) == 0) {
1115#if !defined(PRODUCT)
1120 uint8_t* decompressed =
nullptr;
1121 intptr_t decompressed_len = 0;
1123 &decompressed, &decompressed_len);
1135void main(
int argc,
char** argv) {
1136#if !defined(DART_HOST_OS_WINDOWS)
1141 char* script_name =
nullptr;
1143 char* package_config_override =
nullptr;
1144 const int EXTRA_VM_ARGUMENTS = 10;
1145 CommandLineOptions vm_options(argc + EXTRA_VM_ARGUMENTS);
1146 CommandLineOptions dart_options(argc + EXTRA_VM_ARGUMENTS);
1147 bool print_flags_seen =
false;
1148 bool verbose_debug_seen =
false;
1163#if !defined(DART_PRECOMPILED_RUNTIME)
1172 vm_options.AddArgument(
"--new_gen_semi_max_size=16");
1174 vm_options.AddArgument(
"--new_gen_semi_max_size=32");
1176 vm_options.AddArgument(
"--new_gen_growth_factor=4");
1178 auto parse_arguments = [&](
int argc,
char**
argv,
1179 CommandLineOptions* vm_options,
1180 CommandLineOptions* dart_options) {
1183 &print_flags_seen, &verbose_debug_seen);
1185 if (Options::help_option()) {
1188 }
else if (Options::version_option()) {
1191 }
else if (print_flags_seen) {
1196 if (
error !=
nullptr) {
1211 AppSnapshot* app_snapshot =
nullptr;
1212#if defined(DART_PRECOMPILED_RUNTIME)
1218 const size_t kPathBufSize =
PATH_MAX + 1;
1219 char executable_path[kPathBufSize];
1222 if (app_snapshot !=
nullptr) {
1223 script_name =
argv[0];
1229 for (
int i = 1; i < argc; i++) {
1230 dart_options.AddArgument(argv[i]);
1235 char** env_argv = Options::GetEnvArguments(&env_argc);
1236 if (env_argv !=
nullptr) {
1239 CommandLineOptions tmp_options(env_argc + EXTRA_VM_ARGUMENTS);
1240 parse_arguments(env_argc, env_argv, &vm_options, &tmp_options);
1247 if (app_snapshot ==
nullptr) {
1248 parse_arguments(argc, argv, &vm_options, &dart_options);
1253 if (Options::suppress_core_dump()) {
1261 auto try_load_snapshots_lambda = [&](void) ->
void {
1262 if (app_snapshot ==
nullptr) {
1265 const bool force_load_elf_from_memory =
1266 false DEBUG_ONLY(|| Options::force_load_elf_from_memory());
1270 if (app_snapshot !=
nullptr && app_snapshot->IsJITorAOT()) {
1273 "%s is an AOT snapshot and should be run with 'dartaotruntime'\n",
1287 if (script_name !=
nullptr) {
1291 try_load_snapshots_lambda();
1294#if defined(DART_PRECOMPILED_RUNTIME)
1295 vm_options.AddArgument(
"--precompilation");
1297 if (Options::gen_snapshot_kind() ==
kAppJIT) {
1301 vm_options.AddArgument(
"--target-unknown-cpu");
1302#if !defined(TARGET_ARCH_IA32)
1303 vm_options.AddArgument(
"--link_natives_lazily");
1308 if ((Options::gen_snapshot_kind() ==
kAppJIT) ||
1309 (Options::depfile() !=
nullptr)) {
1313 char*
error =
nullptr;
1321 if (
error !=
nullptr) {
1329#if !defined(DART_PRECOMPILED_RUNTIME)
1333 if (script_name !=
nullptr) {
1334 uint8_t* application_kernel_buffer =
nullptr;
1335 intptr_t application_kernel_buffer_size = 0;
1336 dfe.
ReadScript(script_name, app_snapshot, &application_kernel_buffer,
1337 &application_kernel_buffer_size);
1338 if (application_kernel_buffer !=
nullptr) {
1341 application_kernel_buffer_size);
1349 memset(&init_params, 0,
sizeof(init_params));
1364#if !defined(DART_PRECOMPILED_RUNTIME)
1374#if defined(DART_HOST_OS_FUCHSIA)
1375#if defined(DART_PRECOMPILED_RUNTIME)
1376 init_params.vmex_resource = ZX_HANDLE_INVALID;
1378 init_params.vmex_resource = Platform::GetVMEXResource();
1383 if (
error !=
nullptr) {
1394 bool ran_dart_dev =
false;
1395 bool should_run_user_program =
true;
1396#if !defined(DART_PRECOMPILED_RUNTIME)
1398 Options::gen_snapshot_kind() == SnapshotKind::kNone) {
1403 ran_dart_dev =
true;
1404 should_run_user_program =
1406 if (should_run_user_program) {
1407 try_load_snapshots_lambda();
1409 }
else if (script_name ==
nullptr &&
1410 Options::gen_snapshot_kind() != SnapshotKind::kNone) {
1412 "Snapshot generation should be done using the 'dart compile' "
1418 if (should_run_user_program) {
1419 if (Options::gen_snapshot_kind() ==
kKernel) {
1423 RunMainIsolate(script_name, package_config_override, &dart_options);
1431 if (
error !=
nullptr) {
1438 delete app_snapshot;
1440 if (ran_dart_dev && script_name !=
nullptr) {
1445 if (argv_converted) {
1446 for (
int i = 0; i < argc; i++) {
static void info(const char *fmt,...) SK_PRINTF_LIKE(1
static std::string base_name(const std::string &path)
static void PrintErr(const char *format,...) PRINTF_ATTRIBUTE(1
static int SNPrint(char *str, size_t size, const char *format,...) PRINTF_ATTRIBUTE(3
static char * StrDup(const char *s)
static char * SCreate(const char *format,...) PRINTF_ATTRIBUTE(1
virtual void SetBuffers(const uint8_t **vm_data_buffer, const uint8_t **vm_instructions_buffer, const uint8_t **isolate_data_buffer, const uint8_t **isolate_instructions_buffer)=0
static void SetNativeResolver(BuiltinLibraryId id)
Dart_Handle CreateRuntimeOptions()
void CompileAndReadScript(const char *script_uri, uint8_t **kernel_buffer, intptr_t *kernel_buffer_size, char **error, int *exit_code, const char *package_config, bool for_snapshot, bool embed_sources)
bool CanUseDartFrontend() const
void set_use_dfe(bool value=true)
void set_verbosity(Dart_KernelCompilationVerbosityLevel verbosity)
void set_application_kernel_buffer(uint8_t *buffer, intptr_t size)
bool UseDartFrontend() const
void LoadPlatform(const uint8_t **kernel_buffer, intptr_t *kernel_buffer_size)
const char * RegisterKernelBlob(const uint8_t *kernel_buffer, intptr_t kernel_buffer_size)
void application_kernel_buffer(const uint8_t **buffer, intptr_t *size) const
void UnregisterKernelBlob(const char *uri)
void ReadScript(const char *script_uri, const AppSnapshot *app_snapshot, uint8_t **kernel_buffer, intptr_t *kernel_buffer_size, bool decode_uri=true, std::shared_ptr< uint8_t > *kernel_blob_ptr=nullptr)
void LoadKernelService(const uint8_t **kernel_service_buffer, intptr_t *kernel_service_buffer_size)
char * frontend_filename() const
static bool should_run_dart_dev()
static Utils::CStringUniquePtr TryResolveDartDevSnapshotPath()
static DartDev_Result RunDartDev(Dart_IsolateGroupCreateCallback create_isolate, char **packages_file, char **script, CommandLineOptions *dart_options)
static Dart_Handle SetupPackageConfig(const char *packages_file)
static void ReadFile(uint8_t **data, intptr_t *file_len, void *stream)
static Dart_Handle MakeUint8Array(const void *buffer, intptr_t length)
static Dart_Handle SetupIOLibrary(const char *namespc_path, const char *script_uri, bool disable_exit)
static bool EntropySource(uint8_t *buffer, intptr_t length)
static Dart_Handle EnvironmentCallback(Dart_Handle name)
static Dart_Handle PrepareForScriptLoading(bool is_service_isolate, bool trace_loading)
static void SetEnvironment(dart::SimpleHashMap *environment)
static void CloseFile(void *stream)
static void * OpenFile(const char *name, bool write)
static Dart_Handle ResolveScript(Dart_Handle url)
static void WriteFile(const void *buffer, intptr_t num_bytes, void *stream)
static void LoadDartProfilerSymbols(const char *exepath)
static Utils::CStringUniquePtr UriToPath(const char *uri)
static void Stat(Namespace *namespc, const char *path, int64_t *data)
static File * Open(Namespace *namespc, const char *path, FileOpenMode mode)
const char * packages_file() const
IsolateGroupData * isolate_group_data() const
void SetKernelBufferNewlyOwned(uint8_t *buffer, intptr_t size)
void SetKernelBufferUnowned(uint8_t *buffer, intptr_t size)
static Dart_Handle InitForSnapshot(const char *snapshot_uri, IsolateData *isolate_data)
static Dart_Handle DeferredLoadHandler(intptr_t loading_unit_id)
static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag, Dart_Handle library, Dart_Handle url)
static void PrintVersion()
static void set_dfe(DFE *dfe)
static Dart_KernelCompilationVerbosityLevel verbosity_level()
static bool ParseArguments(int argc, char **argv, bool vm_run_app_snapshot, CommandLineOptions *vm_options, char **script_name, CommandLineOptions *dart_options, bool *print_flags_seen, bool *verbose_debug_seen)
static const char * vm_service_server_ip()
static int vm_service_server_port()
static dart::SimpleHashMap * environment()
static void GetRSSInformation(int64_t *max_rss, int64_t *current_rss)
static void TerminateExitCodeHandler()
static int GlobalExitCode()
static void SetExitHook(ExitHook hook)
static bool GetUtf8Argv(int argc, char **argv)
static AppSnapshot * TryReadAppSnapshot(const char *script_uri, bool force_load_elf_from_memory=false, bool decode_uri=true)
static AppSnapshot * TryReadAppendedAppSnapshotElf(const char *container_path)
static void GenerateKernel(const char *snapshot_filename, const char *script_name, const char *package_config)
static void GenerateAppJIT(const char *snapshot_filename)
static const char * GetErrorMessage()
static void SetNativeResolver()
static bool Setup(const char *server_ip, intptr_t server_port, bool dev_mode_server, bool auth_codes_disabled, const char *write_service_info_filename, bool trace_loading, bool deterministic, bool enable_service_port_fallback, bool wait_for_dds_to_advertise_service, bool serve_devtools, bool serve_observatory, bool print_dtd)
#define DART_FLAGS_CURRENT_VERSION
#define DART_INITIALIZE_PARAMS_CURRENT_VERSION
@ Dart_KernelCompilationStatus_Ok
#define DART_KERNEL_ISOLATE_NAME
struct _Dart_Handle * Dart_Handle
struct _Dart_Isolate * Dart_Isolate
Dart_Handle(* Dart_GetVMServiceAssetsArchive)(void)
#define DART_VM_SERVICE_ISOLATE_NAME
#define CHECK_RESULT(result)
#define DART_DEV_ISOLATE_NAME
FlutterSemanticsFlag flags
const uint8_t uint32_t uint32_t GError ** error
uint32_t uint32_t * format
const uint8_t kDartVmSnapshotData[]
const uint8_t kDartVmSnapshotInstructions[]
const uint8_t kDartVmSnapshotData[]
const uint8_t kDartVmSnapshotInstructions[]
const uint8_t kDartCoreIsolateSnapshotInstructions[]
const uint8_t kDartCoreIsolateSnapshotData[]
static bool FileModifiedCallback(const char *url, int64_t since)
const uint8_t * isolate_snapshot_data
unsigned int observatory_assets_archive_len
static void DeleteIsolateGroupData(void *callback_data)
static const char * RegisterKernelBlob(const uint8_t *kernel_buffer, intptr_t kernel_buffer_size)
void SetCaptureStdout(bool value)
static Dart_Isolate IsolateSetupHelper(Dart_Isolate isolate, bool is_main_isolate, const char *script_uri, const char *packages_config, bool isolate_run_app_snapshot, Dart_IsolateFlags *flags, char **error, int *exit_code)
static constexpr const char * kStderrStreamId
static void UnregisterKernelBlob(const char *kernel_blob_uri)
static void CompileAndSaveKernel(const char *script_name, const char *package_config_override, CommandLineOptions *dart_options)
static Dart_Isolate CreateAndSetupServiceIsolate(const char *script_uri, const char *packages_config, Dart_IsolateFlags *flags, char **error, int *exit_code)
const uint8_t * vm_snapshot_data
static Dart_Isolate CreateAndSetupDartDevIsolate(const char *script_uri, const char *packages_config, Dart_IsolateFlags *flags, char **error, int *exit_code)
static bool OnIsolateInitialize(void **child_callback_data, char **error)
const uint8_t * vm_snapshot_instructions
void RunMainIsolate(const char *script_name, const char *package_config_override, CommandLineOptions *dart_options)
static void ServiceStreamCancelCallback(const char *stream_id)
static void WriteDepsFile()
const uint8_t * core_isolate_snapshot_data
static bool vm_run_app_snapshot
static char * app_script_uri
static constexpr const char * kStdoutStreamId
static void DeleteIsolateData(void *isolate_group_data, void *callback_data)
const uint8_t * observatory_assets_archive
constexpr int kErrorExitCode
static Dart_Isolate main_isolate
Dart_Handle GetVMServiceAssetsArchiveCallback()
static Dart_Handle SetupCoreLibraries(Dart_Isolate isolate, IsolateData *isolate_data, bool is_isolate_group_start, bool is_kernel_isolate, const char **resolved_packages_config)
static bool ServiceStreamListenCallback(const char *stream_id)
static bool kernel_isolate_is_running
const uint8_t * core_isolate_snapshot_instructions
static void OnExitHook(int64_t exit_code)
static Dart_Isolate CreateIsolateGroupAndSetup(const char *script_uri, const char *main, const char *package_root, const char *package_config, Dart_IsolateFlags *flags, void *callback_data, char **error)
void InitializeCrashpadClient()
void SetCaptureStderr(bool value)
static const uint8_t * app_isolate_snapshot_data
static const uint8_t * app_isolate_snapshot_instructions
void ErrorExit(int exit_code, const char *format,...)
static void OnIsolateShutdown(void *isolate_group_data, void *isolate_data)
static void EmbedderInformationCallback(Dart_EmbedderInformation *info)
void Decompress(const uint8_t *input, intptr_t input_len, uint8_t **output, intptr_t *output_length)
static Dart_Isolate CreateIsolateGroupAndSetupHelper(bool is_main_isolate, const char *script_uri, const char *name, const char *packages_config, Dart_IsolateFlags *flags, void *callback_data, char **error, int *exit_code)
static Dart_Isolate CreateAndSetupKernelIsolate(const char *script_uri, const char *packages_config, Dart_IsolateFlags *flags, char **error, int *exit_code)
const uint8_t * isolate_snapshot_instructions
static bool CheckForInvalidPath(const char *path)
bool InitOnce(char **error)
DART_EXPORT bool Dart_IsCompilationError(Dart_Handle object)
DART_EXPORT void Dart_EnterScope()
DART_EXPORT Dart_Port Dart_GetMainPortId()
DART_EXPORT Dart_Handle Dart_GetStickyError()
DART_EXPORT void Dart_EnterIsolate(Dart_Isolate isolate)
DART_EXPORT Dart_Handle Dart_DebugName()
DART_EXPORT char * Dart_SetServiceStreamCallbacks(Dart_ServiceStreamListenCallback listen_callback, Dart_ServiceStreamCancelCallback cancel_callback)
DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, Dart_Handle name, int number_of_arguments, Dart_Handle *arguments)
DART_EXPORT Dart_Handle Dart_RootLibrary()
DART_EXPORT void Dart_SetEmbedderInformationCallback(Dart_EmbedderInformationCallback callback)
void * malloc(size_t size)
DART_EXPORT void Dart_SetShouldPauseOnExit(bool should_pause)
DART_EXPORT void Dart_IsolateFlagsInitialize(Dart_IsolateFlags *flags)
DART_EXPORT Dart_Handle Dart_SetDeferredLoadHandler(Dart_DeferredLoadHandler handler)
DART_EXPORT const char * Dart_GetError(Dart_Handle handle)
DART_EXPORT void Dart_RecordTimelineEvent(const char *label, int64_t timestamp0, int64_t timestamp1_or_id, intptr_t flow_id_count, const int64_t *flow_ids, Dart_Timeline_Event_Type type, intptr_t argument_count, const char **argument_names, const char **argument_values)
DART_EXPORT char * Dart_SetFileModifiedCallback(Dart_FileModifiedCallback file_modified_callback)
DART_EXPORT char * Dart_Initialize(Dart_InitializeParams *params)
DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name)
DART_EXPORT Dart_Isolate Dart_CurrentIsolate()
DART_EXPORT bool Dart_IsKernelIsolate(Dart_Isolate isolate)
DART_EXPORT char * Dart_Cleanup()
DART_EXPORT bool Dart_IsError(Dart_Handle handle)
DART_EXPORT void Dart_ExitIsolate()
DART_EXPORT void * Dart_IsolateData(Dart_Isolate isolate)
DART_EXPORT char * Dart_IsolateMakeRunnable(Dart_Isolate isolate)
DART_EXPORT Dart_Isolate Dart_CreateIsolateGroup(const char *script_uri, const char *name, const uint8_t *snapshot_data, const uint8_t *snapshot_instructions, Dart_IsolateFlags *flags, void *isolate_group_data, void *isolate_data, char **error)
DART_EXPORT Dart_Handle Dart_RunLoop()
DART_EXPORT void * Dart_CurrentIsolateGroupData()
DART_EXPORT bool Dart_IsPrecompiledRuntime()
DART_EXPORT Dart_Isolate Dart_CreateIsolateGroupFromKernel(const char *script_uri, const char *name, const uint8_t *kernel_buffer, intptr_t kernel_buffer_size, Dart_IsolateFlags *flags, void *isolate_group_data, void *isolate_data, char **error)
DART_EXPORT char * Dart_SetVMFlags(int argc, const char **argv)
DART_EXPORT Dart_KernelCompilationResult Dart_KernelListDependencies()
DART_EXPORT Dart_Handle Dart_SetLibraryTagHandler(Dart_LibraryTagHandler handler)
DART_EXPORT Dart_Handle Dart_SortClasses()
DART_EXPORT Dart_Handle Dart_CompileAll()
constexpr intptr_t kWordSize
DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url)
DART_EXPORT Dart_Handle Dart_LoadScriptFromKernel(const uint8_t *buffer, intptr_t buffer_size)
DART_EXPORT int64_t Dart_TimelineGetMicros()
DART_EXPORT bool Dart_IsNull(Dart_Handle object)
DART_EXPORT Dart_Handle Dart_SetEnvironmentCallback(Dart_EnvironmentCallback callback)
DART_EXPORT Dart_Handle Dart_Null()
static int8_t data[kExtLength]
DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object, const char **cstr)
DART_EXPORT bool Dart_IsClosure(Dart_Handle object)
DART_EXPORT Dart_Handle Dart_NewStringFromCString(const char *str)
DART_EXPORT bool Dart_IsFatalError(Dart_Handle object)
DART_EXPORT void Dart_SetShouldPauseOnStart(bool should_pause)
Dart_IsolateGroupCreateCallback create_group
Dart_InitializeIsolateCallback initialize_isolate
Dart_IsolateGroupCleanupCallback cleanup_group
Dart_FileReadCallback file_read
const uint8_t * vm_snapshot_data
bool start_kernel_isolate
Dart_GetVMServiceAssetsArchive get_service_assets
Dart_FileOpenCallback file_open
Dart_IsolateShutdownCallback shutdown_isolate
Dart_UnregisterKernelBlobCallback unregister_kernel_blob
Dart_FileWriteCallback file_write
Dart_EntropySource entropy_source
Dart_RegisterKernelBlobCallback register_kernel_blob
Dart_IsolateCleanupCallback cleanup_isolate
const uint8_t * vm_snapshot_instructions
Dart_FileCloseCallback file_close