103 zx::channel directory_request,
104 bool service_isolate) {
107 if (!service_isolate) {
113 Dart_Handle builtin_lib = Dart_LookupLibrary(ToDart(
"dart:fuchsia.builtin"));
115 Dart_Handle result = Dart_SetNativeResolver(builtin_lib, BuiltinNativeLookup,
116 BuiltinNativeSymbol);
121 Dart_Handle io_lib = Dart_LookupLibrary(ToDart(
"dart:io"));
123 result = Dart_SetNativeResolver(io_lib, dart::bin::IONativeLookup,
124 dart::bin::IONativeSymbol);
129 Dart_Handle zircon_lib = Dart_LookupLibrary(ToDart(
"dart:zircon"));
135 Dart_Handle async_lib = Dart_LookupLibrary(ToDart(
"dart:async"));
138 Dart_Handle core_lib = Dart_LookupLibrary(ToDart(
"dart:core"));
141 Dart_Handle internal_lib = Dart_LookupLibrary(ToDart(
"dart:_internal"));
144 Dart_Handle isolate_lib = Dart_LookupLibrary(ToDart(
"dart:isolate"));
147#if !defined(AOT_RUNTIME)
152 result = Dart_FinalizeLoading(
false);
158 Dart_Invoke(builtin_lib, ToDart(
"_getPrintClosure"), 0,
nullptr);
161 result = Dart_SetField(internal_lib, ToDart(
"_printClosure"), print);
165 Dart_Handle schedule_immediate_closure;
166 if (service_isolate) {
168 schedule_immediate_closure = Dart_Invoke(
169 isolate_lib, ToDart(
"_getIsolateScheduleImmediateClosure"), 0,
nullptr);
172 schedule_immediate_closure = Dart_Invoke(
173 builtin_lib, ToDart(
"_getScheduleMicrotaskClosure"), 0,
nullptr);
177 Dart_Handle schedule_args[1];
178 schedule_args[0] = schedule_immediate_closure;
179 result = Dart_Invoke(async_lib, ToDart(
"_setScheduleImmediateClosure"), 1,
184 Dart_Handle namespace_type =
185 Dart_GetNonNullableType(io_lib, ToDart(
"_Namespace"), 0,
nullptr);
188 Dart_Handle namespace_args[1];
189 namespace_args[0] = ToDart(
reinterpret_cast<intptr_t
>(namespc));
191 Dart_Invoke(namespace_type, ToDart(
"_setupNamespace"), 1, namespace_args);
196 Dart_GetNonNullableType(zircon_lib, ToDart(
"_Namespace"), 0,
nullptr);
199 result = Dart_SetField(namespace_type, ToDart(
"_namespace"),
200 ToDart(
reinterpret_cast<intptr_t
>(namespc)));
204 Dart_Handle stdio_args[3];
205 stdio_args[0] = Dart_NewInteger(0);
206 stdio_args[1] = Dart_NewInteger(stdoutfd);
207 stdio_args[2] = Dart_NewInteger(stderrfd);
208 result = Dart_Invoke(io_lib, ToDart(
"_setStdioFDs"), 3, stdio_args);
212 Dart_Handle embedder_config_type =
213 Dart_GetNonNullableType(io_lib, ToDart(
"_EmbedderConfig"), 0,
nullptr);
217 Dart_SetField(embedder_config_type, ToDart(
"_mayExit"), Dart_False());
221 result = Dart_SetField(builtin_lib, ToDart(
"_rawScript"), ToDart(script_uri));
225 Dart_Handle uri_base =
226 Dart_Invoke(io_lib, ToDart(
"_getUriBaseClosure"), 0,
nullptr);
229 result = Dart_SetField(core_lib, ToDart(
"_uriBaseClosure"), uri_base);
232 Dart_Handle setup_hooks = ToDart(
"_setupHooks");
233 result = Dart_Invoke(builtin_lib, setup_hooks, 0,
nullptr);
235 result = Dart_Invoke(io_lib, setup_hooks, 0,
nullptr);
237 result = Dart_Invoke(isolate_lib, setup_hooks, 0,
nullptr);