2d36c85ff8
All existing embedders have been opted into --lazy-async-stacks, the VM also uses it as it's default in all configurations. After this CL, any user of --causal-async-stacks will get an error message when trying to use it. => In any such case, please simply remove the flag. TEST=Exhaustive CQ. Bug: https://github.com/dart-lang/sdk/issues/37668 Change-Id: Ia440afcf2dba464aa8b8cf381b93bbac8eb9f8dc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/172564 Commit-Queue: Clement Skau <cskau@google.com> Reviewed-by: Clement Skau <cskau@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
426 lines
18 KiB
Plaintext
426 lines
18 KiB
Plaintext
main = #lib::main;
|
|
[@vm.loading-units.metadata=LoadingUnitsMetadata(
|
|
LoadingUnit(id=1, parent=0,
|
|
#lib
|
|
dart:_http
|
|
dart:core
|
|
dart:cli
|
|
dart:io
|
|
dart:nativewrappers
|
|
dart:_builtin
|
|
dart:_vmservice
|
|
dart:vmservice_io
|
|
dart:typed_data
|
|
dart:mirrors
|
|
dart:math
|
|
dart:isolate
|
|
dart:_internal
|
|
dart:ffi
|
|
dart:developer
|
|
dart:convert
|
|
dart:collection
|
|
dart:async
|
|
#pkg/vm/testcases/transformations/deferred_loading/c.dart
|
|
#pkg/vm/testcases/transformations/deferred_loading/b.dart
|
|
#pkg/vm/testcases/transformations/deferred_loading/a.dart
|
|
)
|
|
LoadingUnit(id=2, parent=1,
|
|
#pkg/vm/testcases/transformations/deferred_loading/g.dart
|
|
#pkg/vm/testcases/transformations/deferred_loading/h.dart
|
|
)
|
|
LoadingUnit(id=3, parent=1,
|
|
#pkg/vm/testcases/transformations/deferred_loading/f.dart
|
|
)
|
|
LoadingUnit(id=4, parent=1,
|
|
#pkg/vm/testcases/transformations/deferred_loading/d.dart
|
|
#pkg/vm/testcases/transformations/deferred_loading/e.dart
|
|
)
|
|
LoadingUnit(id=5, parent=3,
|
|
#pkg/vm/testcases/transformations/deferred_loading/i.dart
|
|
)
|
|
LoadingUnit(id=6, parent=5,
|
|
#pkg/vm/testcases/transformations/deferred_loading/j.dart
|
|
)
|
|
)]library j from "#pkg/vm/testcases/transformations/deferred_loading/j.dart" as j {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/a.dart" as a;
|
|
|
|
static method j() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L1:
|
|
{
|
|
dart.core::print("J");
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library h from "#pkg/vm/testcases/transformations/deferred_loading/h.dart" as h {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" as g;
|
|
|
|
static method h() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L2:
|
|
{
|
|
dart.core::print("H");
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library i from "#pkg/vm/testcases/transformations/deferred_loading/i.dart" as i {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/j.dart" deferred as j;
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b;
|
|
|
|
static method i() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L3:
|
|
{
|
|
dart.core::print("I");
|
|
[yield] let dynamic #t1 = dart.async::_awaitHelper(LoadLibrary(j), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t2 = CheckLibraryIsLoaded(j) in j::j();
|
|
break #L3;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library g from "#pkg/vm/testcases/transformations/deferred_loading/g.dart" as g {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/h.dart" as h;
|
|
|
|
static method g() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L4:
|
|
{
|
|
dart.core::print("G");
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library f from "#pkg/vm/testcases/transformations/deferred_loading/f.dart" as f {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" deferred as g;
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/i.dart" deferred as i;
|
|
|
|
static method f() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L5:
|
|
{
|
|
dart.core::print("F");
|
|
[yield] let dynamic #t3 = dart.async::_awaitHelper(LoadLibrary(g), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t4 = CheckLibraryIsLoaded(g) in g::g();
|
|
break #L5;
|
|
[yield] let dynamic #t5 = dart.async::_awaitHelper(LoadLibrary(i), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t6 = CheckLibraryIsLoaded(i) in i::i();
|
|
break #L5;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library e from "#pkg/vm/testcases/transformations/deferred_loading/e.dart" as e {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" deferred as g;
|
|
|
|
static method e() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L6:
|
|
{
|
|
dart.core::print("E");
|
|
[yield] let dynamic #t7 = dart.async::_awaitHelper(LoadLibrary(g), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t8 = CheckLibraryIsLoaded(g) in g::g();
|
|
break #L6;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library c from "#pkg/vm/testcases/transformations/deferred_loading/c.dart" as c {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b;
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/f.dart" deferred as f;
|
|
|
|
static method c() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L7:
|
|
{
|
|
dart.core::print("C");
|
|
[yield] let dynamic #t9 = dart.async::_awaitHelper(LoadLibrary(f), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t10 = CheckLibraryIsLoaded(f) in f::f();
|
|
break #L7;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library d from "#pkg/vm/testcases/transformations/deferred_loading/d.dart" as d {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/e.dart" as e;
|
|
|
|
static method d() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L8:
|
|
{
|
|
dart.core::print("D");
|
|
:return_value = e::e();
|
|
break #L8;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library b from "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/c.dart" as c;
|
|
|
|
static method b() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L9:
|
|
{
|
|
dart.core::print("B");
|
|
:return_value = c::c();
|
|
break #L9;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library a from "#pkg/vm/testcases/transformations/deferred_loading/a.dart" as a {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/d.dart" deferred as d;
|
|
|
|
static method a() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L10:
|
|
{
|
|
dart.core::print("A");
|
|
[yield] let dynamic #t11 = dart.async::_awaitHelper(LoadLibrary(d), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
:return_value = let final dynamic #t12 = CheckLibraryIsLoaded(d) in d::d();
|
|
break #L10;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|
|
library #lib from "#lib" as #lib {
|
|
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/a.dart";
|
|
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart";
|
|
|
|
static method main() → dynamic /* originally async */ {
|
|
final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
|
|
dart.core::bool* :is_sync = false;
|
|
FutureOr<dynamic>* :return_value;
|
|
(dynamic) →* dynamic :async_op_then;
|
|
(dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
|
|
dart.core::int* :await_jump_var = 0;
|
|
dynamic :await_ctx_var;
|
|
dynamic :saved_try_context_var0;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L11:
|
|
{
|
|
[yield] let dynamic #t13 = dart.async::_awaitHelper(a::a(), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
[yield] let dynamic #t14 = dart.async::_awaitHelper(b::b(), :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
|
|
dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
|
|
}
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
[@vm.call-site-attributes.metadata=receiverType:dynamic Function([dynamic, dynamic, dart.core::StackTrace*])*] :async_op.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
}
|