Version 2.12.0-39.0.dev
Merge commit '55bb15a8cbbe7c5ff2242d74c5e18370ba9b6922' into 'dev'
diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
index 9af2bd6..5190afd 100644
--- a/runtime/vm/kernel_isolate.cc
+++ b/runtime/vm/kernel_isolate.cc
@@ -140,17 +140,19 @@
if (FLAG_trace_kernel) {
OS::PrintErr(DART_KERNEL_ISOLATE_NAME ": ShutdownIsolate\n");
}
- Isolate* I = reinterpret_cast<Isolate*>(parameter);
+ KernelIsolate::SetLoadPort(ILLEGAL_PORT);
+ Dart_EnterIsolate(reinterpret_cast<Dart_Isolate>(parameter));
{
- // Print the error if there is one. This may execute dart code to
- // print the exception object, so we need to use a StartIsolateScope.
- ASSERT(Isolate::Current() == NULL);
- StartIsolateScope start_scope(I);
- Thread* T = Thread::Current();
- ASSERT(I == T->isolate());
- I->WaitForOutstandingSpawns();
+ auto T = Thread::Current();
+ TransitionNativeToVM transition(T);
StackZone zone(T);
HandleScope handle_scope(T);
+
+ auto I = T->isolate();
+ ASSERT(KernelIsolate::IsKernelIsolate(I));
+
+ // Print the error if there is one. This may execute dart code to
+ // print the exception object, so we need to use a StartIsolateScope.
Error& error = Error::Handle(Z);
error = T->sticky_error();
if (!error.IsNull() && !error.IsUnwindError()) {
@@ -162,14 +164,8 @@
OS::PrintErr(DART_KERNEL_ISOLATE_NAME ": Error: %s\n",
error.ToErrorCString());
}
- Dart::RunShutdownCallback();
}
-
- ASSERT(KernelIsolate::IsKernelIsolate(I));
- KernelIsolate::SetLoadPort(ILLEGAL_PORT);
-
- // Shut the isolate down.
- Dart::ShutdownIsolate(I);
+ Dart_ShutdownIsolate();
if (FLAG_trace_kernel) {
OS::PrintErr(DART_KERNEL_ISOLATE_NAME ": Shutdown.\n");
}
diff --git a/runtime/vm/service_isolate.cc b/runtime/vm/service_isolate.cc
index f785a65..ab07c2a 100644
--- a/runtime/vm/service_isolate.cc
+++ b/runtime/vm/service_isolate.cc
@@ -398,18 +398,18 @@
if (FLAG_trace_service) {
OS::PrintErr("vm-service: ShutdownIsolate\n");
}
- Isolate* I = reinterpret_cast<Isolate*>(parameter);
- ASSERT(ServiceIsolate::IsServiceIsolate(I));
+ Dart_EnterIsolate(reinterpret_cast<Dart_Isolate>(parameter));
{
- // Print the error if there is one. This may execute dart code to
- // print the exception object, so we need to use a StartIsolateScope.
- ASSERT(Isolate::Current() == NULL);
- StartIsolateScope start_scope(I);
- Thread* T = Thread::Current();
- ASSERT(I == T->isolate());
- I->WaitForOutstandingSpawns();
+ auto T = Thread::Current();
+ TransitionNativeToVM transition(T);
StackZone zone(T);
HandleScope handle_scope(T);
+
+ auto I = T->isolate();
+ ASSERT(ServiceIsolate::IsServiceIsolate(I));
+
+ // Print the error if there is one. This may execute dart code to
+ // print the exception object, so we need to use a StartIsolateScope.
Error& error = Error::Handle(Z);
error = T->sticky_error();
if (!error.IsNull() && !error.IsUnwindError()) {
@@ -421,11 +421,8 @@
OS::PrintErr(DART_VM_SERVICE_ISOLATE_NAME ": Error: %s\n",
error.ToErrorCString());
}
- Dart::RunShutdownCallback();
}
-
- // Shut the isolate down.
- Dart::ShutdownIsolate(I);
+ Dart_ShutdownIsolate();
if (FLAG_trace_service) {
OS::PrintErr(DART_VM_SERVICE_ISOLATE_NAME ": Shutdown.\n");
}
diff --git a/tools/VERSION b/tools/VERSION
index 77d848e..3e78050 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 38
+PRERELEASE 39
PRERELEASE_PATCH 0
\ No newline at end of file