55#include < include/dart_api.h>
66#include < include/dart_embedder_api.h>
77
8+ #include < bin/builtin.h>
89#include < bin/dartutils.h>
910#include < bin/dfe.h>
1011#include < bin/isolate_data.h>
1112#include < bin/loader.h>
1213#include < bin/snapshot_utils.h>
14+ #include < bin/vmservice_impl.h>
1315#include < platform/utils.h>
1416
1517using namespace dart ::bin;
@@ -39,8 +41,11 @@ class DllIsolateGroupData : public IsolateGroupData {
3941
4042Dart_Handle SetupCoreLibraries (Dart_Isolate isolate,
4143 IsolateData* isolate_data,
42- bool is_isolate_group_start,
44+ bool is_isolate_group_start,
4345 const char ** resolved_packages_config) {
46+ auto isolate_group_data = isolate_data->isolate_group_data ();
47+ const auto packages_file = isolate_data->packages_file ();
48+ const auto script_uri = isolate_group_data->script_url ;
4449 Dart_Handle result;
4550
4651 // Prepare builtin and other core libraries for use to resolve URIs.
@@ -49,8 +54,7 @@ Dart_Handle SetupCoreLibraries(Dart_Isolate isolate,
4954 result = DartUtils::PrepareForScriptLoading (false , true );
5055 if (Dart_IsError (result)) return result;
5156
52- // Setup packages config if specified.
53- const char * packages_file = isolate_data->packages_file ();
57+ // Setup packages config if specified.
5458 result = DartUtils::SetupPackageConfig (packages_file);
5559 if (Dart_IsError (result)) return result;
5660
@@ -65,6 +69,15 @@ Dart_Handle SetupCoreLibraries(Dart_Isolate isolate,
6569 }
6670 }
6771
72+ // Setup the native resolver as the snapshot does not carry it.
73+ Builtin::SetNativeResolver (Builtin::kBuiltinLibrary );
74+ Builtin::SetNativeResolver (Builtin::kIOLibrary );
75+ Builtin::SetNativeResolver (Builtin::kCLILibrary );
76+ VmService::SetNativeResolver ();
77+
78+ result = DartUtils::SetupIOLibrary (nullptr , script_uri, true );
79+ if (Dart_IsError (result)) return result;
80+
6881 return result;
6982}
7083
@@ -169,7 +182,7 @@ Dart_Isolate CreateIsolate(bool is_main_isolate,
169182 const uint8_t * isolate_snapshot_data = kDartCoreIsolateSnapshotData ;
170183 const uint8_t * isolate_snapshot_instructions =
171184 kDartCoreIsolateSnapshotInstructions ;
172-
185+
173186 if (!is_main_isolate) {
174187 app_snapshot = Snapshot::TryReadAppSnapshot (script_uri);
175188 if (app_snapshot != nullptr && app_snapshot->IsJITorAOT ()) {
@@ -192,8 +205,8 @@ Dart_Isolate CreateIsolate(bool is_main_isolate,
192205
193206 if (kernel_buffer == nullptr && !isolate_run_app_snapshot) {
194207 dfe.ReadScript (script_uri, app_snapshot, &kernel_buffer,
195- &kernel_buffer_size, /* decode_uri=*/ true ,
196- &kernel_buffer_ptr);
208+ &kernel_buffer_size, /* decode_uri=*/ true ,
209+ &kernel_buffer_ptr);
197210 }
198211
199212 flags->null_safety = true ;
0 commit comments