Skip to content

Commit 372bcae

Browse files
committed
[gardening] Fix 3xHEAD Flutter build after revert
Change-Id: I2ec9d048465d641b33554e15fc9a76fde4abf848 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108141 Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
1 parent 052874e commit 372bcae

File tree

1 file changed

+232
-0
lines changed

1 file changed

+232
-0
lines changed
Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
diff --git a/runtime/dart_isolate.cc b/runtime/dart_isolate.cc
2+
index b649ca834..e181dd55b 100644
3+
--- a/runtime/dart_isolate.cc
4+
+++ b/runtime/dart_isolate.cc
5+
@@ -163,7 +163,7 @@ bool DartIsolate::Initialize(Dart_Isolate dart_isolate, bool is_root_isolate) {
6+
}
7+
8+
auto* isolate_data = static_cast<std::shared_ptr<DartIsolate>*>(
9+
- Dart_IsolateGroupData(dart_isolate));
10+
+ Dart_IsolateData(dart_isolate));
11+
if (isolate_data->get() != this) {
12+
return false;
13+
}
14+
@@ -174,7 +174,7 @@ bool DartIsolate::Initialize(Dart_Isolate dart_isolate, bool is_root_isolate) {
15+
// We are entering a new scope (for the first time since initialization) and
16+
// we want to restore the current scope to null when we exit out of this
17+
// method. This balances the implicit Dart_EnterIsolate call made by
18+
- // Dart_CreateIsolateGroup (which calls the Initialize).
19+
+ // Dart_CreateIsolate (which calls the Initialize).
20+
Dart_ExitIsolate();
21+
22+
tonic::DartIsolateScope scope(isolate());
23+
@@ -636,8 +636,8 @@ Dart_Isolate DartIsolate::DartCreateAndStartServiceIsolate(
24+
return service_isolate->isolate();
25+
}
26+
27+
-// |Dart_IsolateGroupCreateCallback|
28+
-Dart_Isolate DartIsolate::DartIsolateGroupCreateCallback(
29+
+// |Dart_IsolateCreateCallback|
30+
+Dart_Isolate DartIsolate::DartIsolateCreateCallback(
31+
const char* advisory_script_uri,
32+
const char* advisory_script_entrypoint,
33+
const char* package_root,
34+
@@ -720,16 +720,14 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair(
35+
}
36+
37+
// Create the Dart VM isolate and give it the embedder object as the baton.
38+
- Dart_Isolate isolate = Dart_CreateIsolateGroup(
39+
+ Dart_Isolate isolate = Dart_CreateIsolate(
40+
advisory_script_uri, //
41+
advisory_script_entrypoint, //
42+
(*embedder_isolate)->GetIsolateSnapshot()->GetDataMapping(),
43+
(*embedder_isolate)->GetIsolateSnapshot()->GetInstructionsMapping(),
44+
(*embedder_isolate)->GetSharedSnapshot()->GetDataMapping(),
45+
(*embedder_isolate)->GetSharedSnapshot()->GetInstructionsMapping(), flags,
46+
- embedder_isolate.get(), // isolate_group_data
47+
- embedder_isolate.get(), // isolate_data
48+
- error);
49+
+ embedder_isolate.get(), error);
50+
51+
if (isolate == nullptr) {
52+
FML_DLOG(ERROR) << *error;
53+
@@ -772,15 +770,14 @@ DartIsolate::CreateDartVMAndEmbedderObjectPair(
54+
55+
// |Dart_IsolateShutdownCallback|
56+
void DartIsolate::DartIsolateShutdownCallback(
57+
- std::shared_ptr<DartIsolate>* isolate_group_data,
58+
- std::shared_ptr<DartIsolate>* isolate_data) {
59+
- isolate_group_data->get()->OnShutdownCallback();
60+
+ std::shared_ptr<DartIsolate>* embedder_isolate) {
61+
+ embedder_isolate->get()->OnShutdownCallback();
62+
}
63+
64+
-// |Dart_IsolateGroupCleanupCallback|
65+
-void DartIsolate::DartIsolateGroupCleanupCallback(
66+
- std::shared_ptr<DartIsolate>* isolate_group_data) {
67+
- delete isolate_group_data;
68+
+// |Dart_IsolateCleanupCallback|
69+
+void DartIsolate::DartIsolateCleanupCallback(
70+
+ std::shared_ptr<DartIsolate>* embedder_isolate) {
71+
+ delete embedder_isolate;
72+
}
73+
74+
fml::RefPtr<const DartSnapshot> DartIsolate::GetIsolateSnapshot() const {
75+
diff --git a/runtime/dart_isolate.h b/runtime/dart_isolate.h
76+
index 453810b1b..407852dc2 100644
77+
--- a/runtime/dart_isolate.h
78+
+++ b/runtime/dart_isolate.h
79+
@@ -156,8 +156,8 @@ class DartIsolate : public UIDartState {
80+
81+
void OnShutdownCallback();
82+
83+
- // |Dart_IsolateGroupCreateCallback|
84+
- static Dart_Isolate DartIsolateGroupCreateCallback(
85+
+ // |Dart_IsolateCreateCallback|
86+
+ static Dart_Isolate DartIsolateCreateCallback(
87+
const char* advisory_script_uri,
88+
const char* advisory_script_entrypoint,
89+
const char* package_root,
90+
@@ -186,12 +186,11 @@ class DartIsolate : public UIDartState {
91+
92+
// |Dart_IsolateShutdownCallback|
93+
static void DartIsolateShutdownCallback(
94+
- std::shared_ptr<DartIsolate>* isolate_group_data,
95+
- std::shared_ptr<DartIsolate>* isolate_data);
96+
+ std::shared_ptr<DartIsolate>* embedder_isolate);
97+
98+
- // |Dart_IsolateGroupCleanupCallback|
99+
- static void DartIsolateGroupCleanupCallback(
100+
- std::shared_ptr<DartIsolate>* isolate_group_data);
101+
+ // |Dart_IsolateCleanupCallback|
102+
+ static void DartIsolateCleanupCallback(
103+
+ std::shared_ptr<DartIsolate>* embedder_isolate);
104+
105+
FML_DISALLOW_COPY_AND_ASSIGN(DartIsolate);
106+
};
107+
diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc
108+
index 555d0c9ee..903e74b15 100644
109+
--- a/runtime/dart_vm.cc
110+
+++ b/runtime/dart_vm.cc
111+
@@ -366,13 +366,12 @@ DartVM::DartVM(std::shared_ptr<const DartVMData> vm_data,
112+
params.vm_snapshot_data = vm_data_->GetVMSnapshot().GetDataMapping();
113+
params.vm_snapshot_instructions =
114+
vm_data_->GetVMSnapshot().GetInstructionsMapping();
115+
- params.create_group = reinterpret_cast<decltype(params.create_group)>(
116+
- DartIsolate::DartIsolateGroupCreateCallback);
117+
- params.shutdown_isolate =
118+
- reinterpret_cast<decltype(params.shutdown_isolate)>(
119+
- DartIsolate::DartIsolateShutdownCallback);
120+
- params.cleanup_group = reinterpret_cast<decltype(params.cleanup_group)>(
121+
- DartIsolate::DartIsolateGroupCleanupCallback);
122+
+ params.create = reinterpret_cast<decltype(params.create)>(
123+
+ DartIsolate::DartIsolateCreateCallback);
124+
+ params.shutdown = reinterpret_cast<decltype(params.shutdown)>(
125+
+ DartIsolate::DartIsolateShutdownCallback);
126+
+ params.cleanup = reinterpret_cast<decltype(params.cleanup)>(
127+
+ DartIsolate::DartIsolateCleanupCallback);
128+
params.thread_exit = ThreadExitCallback;
129+
params.get_service_assets = GetVMServiceAssetsArchiveCallback;
130+
params.entropy_source = dart::bin::GetEntropy;
131+
diff --git a/shell/platform/fuchsia/dart/dart_component_controller.cc b/shell/platform/fuchsia/dart/dart_component_controller.cc
132+
index c8e7cc5ab..1c4f71050 100644
133+
--- a/shell/platform/fuchsia/dart/dart_component_controller.cc
134+
+++ b/shell/platform/fuchsia/dart/dart_component_controller.cc
135+
@@ -324,13 +324,12 @@ bool DartComponentController::CreateIsolate(
136+
auto state = new std::shared_ptr<tonic::DartState>(new tonic::DartState(
137+
namespace_fd, [this](Dart_Handle result) { MessageEpilogue(result); }));
138+
139+
- isolate_ = Dart_CreateIsolateGroup(
140+
+ isolate_ = Dart_CreateIsolate(
141+
url_.c_str(), label_.c_str(), isolate_snapshot_data,
142+
isolate_snapshot_instructions, shared_snapshot_data,
143+
- shared_snapshot_instructions, nullptr /* flags */,
144+
- state /* isolate_group_data */, state /* isolate_data */, &error);
145+
+ shared_snapshot_instructions, nullptr /* flags */, state, &error);
146+
if (!isolate_) {
147+
- FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolateGroup failed: %s", error);
148+
+ FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolate failed: %s", error);
149+
return false;
150+
}
151+
152+
diff --git a/shell/platform/fuchsia/dart/dart_runner.cc b/shell/platform/fuchsia/dart/dart_runner.cc
153+
index b9ded3ac4..200500d2c 100644
154+
--- a/shell/platform/fuchsia/dart/dart_runner.cc
155+
+++ b/shell/platform/fuchsia/dart/dart_runner.cc
156+
@@ -61,13 +61,13 @@ const char* kDartVMArgs[] = {
157+
// clang-format on
158+
};
159+
160+
-Dart_Isolate IsolateGroupCreateCallback(const char* uri,
161+
- const char* name,
162+
- const char* package_root,
163+
- const char* package_config,
164+
- Dart_IsolateFlags* flags,
165+
- void* callback_data,
166+
- char** error) {
167+
+Dart_Isolate IsolateCreateCallback(const char* uri,
168+
+ const char* name,
169+
+ const char* package_root,
170+
+ const char* package_config,
171+
+ Dart_IsolateFlags* flags,
172+
+ void* callback_data,
173+
+ char** error) {
174+
if (std::string(uri) == DART_VM_SERVICE_ISOLATE_NAME) {
175+
#if defined(DART_PRODUCT)
176+
*error = strdup("The service isolate is not implemented in product mode");
177+
@@ -81,7 +81,7 @@ Dart_Isolate IsolateGroupCreateCallback(const char* uri,
178+
return NULL;
179+
}
180+
181+
-void IsolateShutdownCallback(void* isolate_group_data, void* isolate_data) {
182+
+void IsolateShutdownCallback(void* callback_data) {
183+
// The service isolate (and maybe later the kernel isolate) doesn't have an
184+
// async loop.
185+
auto dispatcher = async_get_default_dispatcher();
186+
@@ -92,8 +92,8 @@ void IsolateShutdownCallback(void* isolate_group_data, void* isolate_data) {
187+
}
188+
}
189+
190+
-void IsolateGroupCleanupCallback(void* isolate_group_data) {
191+
- delete static_cast<std::shared_ptr<tonic::DartState>*>(isolate_group_data);
192+
+void IsolateCleanupCallback(void* callback_data) {
193+
+ delete static_cast<std::shared_ptr<tonic::DartState>*>(callback_data);
194+
}
195+
196+
void RunApplication(
197+
@@ -167,9 +167,9 @@ DartRunner::DartRunner() : context_(sys::ComponentContext::Create()) {
198+
params.vm_snapshot_data = vm_snapshot_data_.address();
199+
params.vm_snapshot_instructions = vm_snapshot_instructions_.address();
200+
#endif
201+
- params.create_group = IsolateGroupCreateCallback;
202+
- params.shutdown_isolate = IsolateShutdownCallback;
203+
- params.cleanup_group = IsolateGroupCleanupCallback;
204+
+ params.create = IsolateCreateCallback;
205+
+ params.shutdown = IsolateShutdownCallback;
206+
+ params.cleanup = IsolateCleanupCallback;
207+
params.entropy_source = EntropySource;
208+
#if !defined(DART_PRODUCT)
209+
params.get_service_assets = GetVMServiceAssetsArchiveCallback;
210+
diff --git a/shell/platform/fuchsia/dart/service_isolate.cc b/shell/platform/fuchsia/dart/service_isolate.cc
211+
index 5287d638f..2e6eda265 100644
212+
--- a/shell/platform/fuchsia/dart/service_isolate.cc
213+
+++ b/shell/platform/fuchsia/dart/service_isolate.cc
214+
@@ -123,14 +123,14 @@ Dart_Isolate CreateServiceIsolate(const char* uri,
215+
#endif
216+
217+
auto state = new std::shared_ptr<tonic::DartState>(new tonic::DartState());
218+
- Dart_Isolate isolate = Dart_CreateIsolateGroup(
219+
+ Dart_Isolate isolate = Dart_CreateIsolate(
220+
uri, DART_VM_SERVICE_ISOLATE_NAME, mapped_isolate_snapshot_data.address(),
221+
mapped_isolate_snapshot_instructions.address(),
222+
mapped_shared_snapshot_data.address(),
223+
- mapped_shared_snapshot_instructions.address(), nullptr /* flags */,
224+
- state /* isolate_group_data */, state /* isolate_data */, error);
225+
+ mapped_shared_snapshot_instructions.address(), nullptr /* flags */, state,
226+
+ error);
227+
if (!isolate) {
228+
- FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolateGroup failed: %s", *error);
229+
+ FX_LOGF(ERROR, LOG_TAG, "Dart_CreateIsolate failed: %s", *error);
230+
return nullptr;
231+
}
232+

0 commit comments

Comments
 (0)