5
5
#include < include/dart_api.h>
6
6
#include < include/dart_embedder_api.h>
7
7
8
+ #include < bin/builtin.h>
8
9
#include < bin/dartutils.h>
9
10
#include < bin/dfe.h>
10
11
#include < bin/isolate_data.h>
11
12
#include < bin/loader.h>
12
13
#include < bin/snapshot_utils.h>
14
+ #include < bin/vmservice_impl.h>
13
15
#include < platform/utils.h>
14
16
15
17
using namespace dart ::bin;
@@ -39,8 +41,11 @@ class DllIsolateGroupData : public IsolateGroupData {
39
41
40
42
Dart_Handle SetupCoreLibraries (Dart_Isolate isolate,
41
43
IsolateData* isolate_data,
42
- bool is_isolate_group_start,
44
+ bool is_isolate_group_start,
43
45
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 ;
44
49
Dart_Handle result;
45
50
46
51
// Prepare builtin and other core libraries for use to resolve URIs.
@@ -49,8 +54,7 @@ Dart_Handle SetupCoreLibraries(Dart_Isolate isolate,
49
54
result = DartUtils::PrepareForScriptLoading (false , true );
50
55
if (Dart_IsError (result)) return result;
51
56
52
- // Setup packages config if specified.
53
- const char * packages_file = isolate_data->packages_file ();
57
+ // Setup packages config if specified.
54
58
result = DartUtils::SetupPackageConfig (packages_file);
55
59
if (Dart_IsError (result)) return result;
56
60
@@ -65,6 +69,15 @@ Dart_Handle SetupCoreLibraries(Dart_Isolate isolate,
65
69
}
66
70
}
67
71
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
+
68
81
return result;
69
82
}
70
83
@@ -169,7 +182,7 @@ Dart_Isolate CreateIsolate(bool is_main_isolate,
169
182
const uint8_t * isolate_snapshot_data = kDartCoreIsolateSnapshotData ;
170
183
const uint8_t * isolate_snapshot_instructions =
171
184
kDartCoreIsolateSnapshotInstructions ;
172
-
185
+
173
186
if (!is_main_isolate) {
174
187
app_snapshot = Snapshot::TryReadAppSnapshot (script_uri);
175
188
if (app_snapshot != nullptr && app_snapshot->IsJITorAOT ()) {
@@ -192,8 +205,8 @@ Dart_Isolate CreateIsolate(bool is_main_isolate,
192
205
193
206
if (kernel_buffer == nullptr && !isolate_run_app_snapshot) {
194
207
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);
197
210
}
198
211
199
212
flags->null_safety = true ;
0 commit comments