blob: 4dbdd294be183b9c89592fb0402d71a410ae5714 [file] [log] [blame]
library #lib;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
import "dart:_internal" as _in;
[@vm.bytecode=
Bytecode {
Entry 3
CheckStack
Allocate CP#21
StoreLocal r2
Push r2
PushConstant CP#3
StoreFieldTOS CP#22
Push r2
PushConstant CP#3
StoreFieldTOS CP#24
Push r2
PushConstant CP#26
StoreFieldTOS CP#27
Push r2
PushConstant CP#0
StoreFieldTOS CP#29
Push r2
Push r0
StoreFieldTOS CP#1
ReturnTOS
}
ConstantPool {
[0] = ClosureFunction <anonymous closure> (dart.async::Future<dart.core::int> x) dart.async::Future<dart.core::Null> /* originally async */ ;
[1] = InstanceField dart.core::_Closure::_context
[2] = Reserved
[3] = Null
[4] = Type dart.async::Future<dart.core::int>
[5] = String 'x'
[6] = SubtypeTestCache
[7] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::Null]
[8] = ArgDesc num-args 1, num-type-args 0, names []
[9] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#8
[10] = Int 0
[11] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[12] = Int 1
[13] = ArgDesc num-args 4, num-type-args 0, names []
[14] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#13
[15] = ArgDesc num-args 2, num-type-args 0, names []
[16] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#15
[17] = Type dynamic
[18] = ArgDesc num-args 3, num-type-args 0, names []
[19] = ICData target-name 'completeError', arg-desc CP#18
[20] = EndClosureFunctionScope
[21] = Class dart.core::_Closure
[22] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[23] = Reserved
[24] = InstanceField dart.core::_Closure::_function_type_arguments
[25] = Reserved
[26] = EmptyTypeArguments
[27] = InstanceField dart.core::_Closure::_delayed_type_arguments
[28] = Reserved
[29] = InstanceField dart.core::_Closure::_function
[30] = Reserved
[31] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#8
[32] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#8
[33] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#8
[34] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[35] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
[36] = ICData get target-name 'future', arg-desc CP#8
[37] = EndClosureFunctionScope
}
Closure CP#11 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushConstant CP#10
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 7
Try #0 start:
Push r4
PushConstant CP#12
StoreContextVar 5
Push r4
Push r4
StoreContextVar 6
Push r4
LoadContextVar 0
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 8
PushConstant CP#14
IndirectStaticCall 4, CP#13
PopLocal r8
PushConstant CP#3
ReturnTOS
L4:
IfEqNull r2
Jump L2
Push r2
Push r3
Throw 1
L2:
Push r1
Drop1
Push r4
LoadContextVar 1
Push r4
LoadContextVar 2
PushConstant CP#16
IndirectStaticCall 2, CP#15
Drop1
PushConstant CP#3
ReturnTOS
Jump L3
Try #0 end:
Try #0 handler:
SetFrame 10
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 1
Push r8
Push r9
InstanceCall 3, CP#19
Drop1
Jump L3
L3:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 6
PopLocal r4
Jump L4
}
Closure CP#0 {
EntryFixed 2, 4
CheckStack
Push FP[-6]
LoadFieldTOS CP#1
PopLocal r0
AllocateContext 9
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
Push FP[-5]
PushConstant CP#3
PushConstant CP#3
PushConstant CP#4
PushConstant CP#5
AssertAssignable 0, CP#6
Drop1
Push r0
PushConstant CP#7
PushConstant CP#9
IndirectStaticCall 1, CP#8
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#10
StoreContextVar 5
Push r0
PushConstant CP#3
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
Push r0
Allocate CP#21
StoreLocal r3
Push r3
PushConstant CP#3
StoreFieldTOS CP#22
Push r3
PushConstant CP#3
StoreFieldTOS CP#24
Push r3
PushConstant CP#26
StoreFieldTOS CP#27
Push r3
PushConstant CP#11
StoreFieldTOS CP#29
Push r3
Push r0
StoreFieldTOS CP#1
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#31
IndirectStaticCall 1, CP#8
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#32
IndirectStaticCall 1, CP#8
StoreContextVar 3
Push r0
Push r0
LoadContextVar 8
PushConstant CP#33
IndirectStaticCall 1, CP#8
StoreContextVar 4
PushConstant CP#34
Push r0
LoadContextVar 8
PushConstant CP#35
IndirectStaticCall 2, CP#15
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#36
ReturnTOS
PushConstant CP#3
ReturnTOS
}
]static field (asy::Future<core::int>) asy::Future<core::Null> asyncInFieldInitializer = (asy::Future<core::int> x) asy::Future<core::Null> /* originally async */ {
final asy::Completer<core::Null> :async_completer = asy::Completer::sync<core::Null>();
asy::FutureOr<core::Null> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :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 {
#L1:
{
[yield] let dynamic #t1 = asy::_awaitHelper(x, :async_op_then, :async_op_error, :async_op) in null;
_in::unsafeCast<core::int>(:result);
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
};
[@vm.bytecode=
Bytecode {
Entry 7
CheckStack
AllocateContext 4
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 0
Push r0
PushConstant CP#3
StoreContextVar 1
PushConstant CP#3
PopLocal r2
PushConstant CP#3
PopLocal r3
PushConstant CP#3
PopLocal r4
Push r0
PushConstant CP#4
StoreContextVar 2
Push r0
PushConstant CP#3
StoreContextVar 3
Allocate CP#15
StoreLocal r6
Push r6
PushConstant CP#3
StoreFieldTOS CP#16
Push r6
PushConstant CP#3
StoreFieldTOS CP#18
Push r6
PushConstant CP#20
StoreFieldTOS CP#21
Push r6
PushConstant CP#5
StoreFieldTOS CP#23
Push r6
Push r0
StoreFieldTOS CP#6
PopLocal r5
Push r5
PushConstant CP#25
IndirectStaticCall 1, CP#1
PopLocal r2
Push r5
PushConstant CP#26
IndirectStaticCall 1, CP#1
PopLocal r3
Push r5
PushConstant CP#27
IndirectStaticCall 1, CP#1
PopLocal r4
PushConstant CP#28
Push r5
PushConstant CP#29
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 0
InstanceCall 1, CP#30
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
PushConstant CP#3
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[1] = ArgDesc num-args 1, num-type-args 0, names []
[2] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#1
[3] = Null
[4] = Int 0
[5] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[6] = InstanceField dart.core::_Closure::_context
[7] = Reserved
[8] = Int 42
[9] = ArgDesc num-args 2, num-type-args 0, names []
[10] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#9
[11] = Type dynamic
[12] = ArgDesc num-args 3, num-type-args 0, names []
[13] = ICData target-name 'completeError', arg-desc CP#12
[14] = EndClosureFunctionScope
[15] = Class dart.core::_Closure
[16] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[17] = Reserved
[18] = InstanceField dart.core::_Closure::_function_type_arguments
[19] = Reserved
[20] = EmptyTypeArguments
[21] = InstanceField dart.core::_Closure::_delayed_type_arguments
[22] = Reserved
[23] = InstanceField dart.core::_Closure::_function
[24] = Reserved
[25] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[26] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[27] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[28] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[29] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
[30] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#5 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 2
StoreLocal r5
PushConstant CP#4
IfNeStrictTOS
Jump L1
Push r4
PopLocal r6
Try #0 start:
Push r4
PushConstant CP#8
StoreContextVar 1
Jump L2
L2:
Push r4
LoadContextVar 0
Push r4
LoadContextVar 1
PushConstant CP#10
IndirectStaticCall 2, CP#9
Drop1
PushConstant CP#3
ReturnTOS
Jump L3
Try #0 end:
Try #0 handler:
SetFrame 10
Push r6
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 0
Push r8
Push r9
InstanceCall 3, CP#13
Drop1
Jump L3
L3:
PushConstant CP#3
ReturnTOS
L1:
Trap
}
]static method foo() asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :await_jump_var = 0;
dynamic :await_ctx_var;
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding
try {
#L2:
{
:return_value = 42;
break #L2;
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
[@vm.bytecode=
Bytecode {
Entry 4
CheckStack
AllocateContext 11
PopLocal r0
Push r0
Push FP[-6]
StoreContextVar 0
Push r0
Push FP[-5]
StoreContextVar 1
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 2
Push r0
PushConstant CP#3
StoreContextVar 3
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#3
StoreContextVar 5
Push r0
PushConstant CP#4
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
Push r0
PushConstant CP#3
StoreContextVar 8
Push r0
PushConstant CP#3
StoreContextVar 9
Push r0
Allocate CP#20
StoreLocal r3
Push r3
PushConstant CP#3
StoreFieldTOS CP#21
Push r3
PushConstant CP#3
StoreFieldTOS CP#23
Push r3
PushConstant CP#25
StoreFieldTOS CP#26
Push r3
PushConstant CP#5
StoreFieldTOS CP#28
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 10
Push r0
LoadContextVar 10
PushConstant CP#30
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 10
PushConstant CP#31
IndirectStaticCall 1, CP#1
StoreContextVar 4
Push r0
Push r0
LoadContextVar 10
PushConstant CP#32
IndirectStaticCall 1, CP#1
StoreContextVar 5
PushConstant CP#33
Push r0
LoadContextVar 10
PushConstant CP#34
IndirectStaticCall 2, CP#13
Drop1
Push r0
LoadContextVar 2
InstanceCall 1, CP#35
ReturnTOS
PushConstant CP#3
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[1] = ArgDesc num-args 1, num-type-args 0, names []
[2] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#1
[3] = Null
[4] = Int 0
[5] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[6] = InstanceField dart.core::_Closure::_context
[7] = Reserved
[8] = Int 1
[9] = ArgDesc num-args 4, num-type-args 0, names []
[10] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[11] = Int 2
[12] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[13] = ArgDesc num-args 2, num-type-args 0, names []
[14] = ICData target-name '+', arg-desc CP#13
[15] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#13
[16] = Type dynamic
[17] = ArgDesc num-args 3, num-type-args 0, names []
[18] = ICData target-name 'completeError', arg-desc CP#17
[19] = EndClosureFunctionScope
[20] = Class dart.core::_Closure
[21] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[22] = Reserved
[23] = InstanceField dart.core::_Closure::_function_type_arguments
[24] = Reserved
[25] = EmptyTypeArguments
[26] = InstanceField dart.core::_Closure::_delayed_type_arguments
[27] = Reserved
[28] = InstanceField dart.core::_Closure::_function
[29] = Reserved
[30] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[31] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[32] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[33] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[34] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
[35] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#5 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 6
StoreLocal r5
PushConstant CP#4
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 8
Try #0 start:
Push r4
PushConstant CP#8
StoreContextVar 6
Push r4
Push r4
StoreContextVar 7
Push r4
LoadContextVar 0
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
Push r4
LoadContextVar 10
PushConstant CP#10
IndirectStaticCall 4, CP#9
PopLocal r8
PushConstant CP#3
ReturnTOS
L6:
IfEqNull r2
Jump L2
Push r2
Push r3
Throw 1
L2:
Push r4
Push r1
StoreContextVar 9
Push r4
PushConstant CP#11
StoreContextVar 6
Push r4
Push r4
StoreContextVar 7
Push r4
LoadContextVar 1
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
Push r4
LoadContextVar 10
PushConstant CP#12
IndirectStaticCall 4, CP#9
PopLocal r9
PushConstant CP#3
ReturnTOS
L7:
IfEqNull r2
Jump L3
Push r2
Push r3
Throw 1
L3:
Push r4
Push r4
LoadContextVar 9
Push r1
InstanceCall 2, CP#14
StoreContextVar 3
Jump L4
L4:
Push r4
LoadContextVar 2
Push r4
LoadContextVar 3
PushConstant CP#15
IndirectStaticCall 2, CP#13
Drop1
PushConstant CP#3
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
SetFrame 10
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 8
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 2
Push r8
Push r9
InstanceCall 3, CP#18
Drop1
Jump L5
L5:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 7
PopLocal r4
Push r5
PushConstant CP#8
IfEqStrictTOS
Jump L6
Jump L7
}
]static method simpleAsyncAwait(asy::Future<core::int> a, asy::Future<core::int> b) asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
dynamic :async_temporary_0;
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding
try {
#L3:
{
[yield] let dynamic #t2 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
:async_temporary_0 = :result;
[yield] let dynamic #t3 = asy::_awaitHelper(b, :async_op_then, :async_op_error, :async_op) in null;
:return_value = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(_in::unsafeCast<core::int>(:result));
break #L3;
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
[@vm.bytecode=
Bytecode {
Entry 4
CheckStack
AllocateContext 11
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#4
StoreContextVar 5
Push r0
PushConstant CP#3
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
Push r0
PushConstant CP#3
StoreContextVar 8
Push r0
PushConstant CP#3
StoreContextVar 9
Push r0
Allocate CP#32
StoreLocal r3
Push r3
PushConstant CP#3
StoreFieldTOS CP#33
Push r3
PushConstant CP#3
StoreFieldTOS CP#35
Push r3
PushConstant CP#37
StoreFieldTOS CP#38
Push r3
PushConstant CP#5
StoreFieldTOS CP#40
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 10
Push r0
LoadContextVar 10
PushConstant CP#42
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 10
PushConstant CP#43
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 10
PushConstant CP#44
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#45
Push r0
LoadContextVar 10
PushConstant CP#46
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#47
ReturnTOS
PushConstant CP#3
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[1] = ArgDesc num-args 1, num-type-args 0, names []
[2] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#1
[3] = Null
[4] = Int 0
[5] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[6] = InstanceField dart.core::_Closure::_context
[7] = Reserved
[8] = Int 10
[9] = ArgDesc num-args 2, num-type-args 0, names []
[10] = ICData target-name '<', arg-desc CP#9
[11] = Bool true
[12] = ICData get target-name 'iterator', arg-desc CP#1
[13] = ICData target-name 'moveNext', arg-desc CP#1
[14] = ICData get target-name 'current', arg-desc CP#1
[15] = ICData target-name '+', arg-desc CP#9
[16] = Int 1
[17] = ArgDesc num-args 0, num-type-args 0, names []
[18] = StaticICData target '#lib::foo', arg-desc CP#17
[19] = ArgDesc num-args 4, num-type-args 0, names []
[20] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#19
[21] = ICData target-name '+', arg-desc CP#9
[22] = ICData target-name '+', arg-desc CP#9
[23] = ICData target-name '+', arg-desc CP#9
[24] = ICData target-name '<', arg-desc CP#9
[25] = ICData target-name '+', arg-desc CP#9
[26] = ICData target-name '+', arg-desc CP#9
[27] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#9
[28] = Type dynamic
[29] = ArgDesc num-args 3, num-type-args 0, names []
[30] = ICData target-name 'completeError', arg-desc CP#29
[31] = EndClosureFunctionScope
[32] = Class dart.core::_Closure
[33] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[34] = Reserved
[35] = InstanceField dart.core::_Closure::_function_type_arguments
[36] = Reserved
[37] = EmptyTypeArguments
[38] = InstanceField dart.core::_Closure::_delayed_type_arguments
[39] = Reserved
[40] = InstanceField dart.core::_Closure::_function
[41] = Reserved
[42] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[43] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[44] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[45] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[46] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
[47] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#5 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 7
CheckStack
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushConstant CP#4
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 7
Try #0 start:
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#4
StoreContextVar 0
AllocateContext 2
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#4
StoreContextVar 0
L6:
CheckStack
Push r4
LoadContextVar 0
PushConstant CP#8
InstanceCall 2, CP#10
AssertBoolean 0
PushConstant CP#11
IfNeStrictTOS
Jump L2
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
InstanceCall 1, CP#12
PopLocal r8
Push r4
Push r8
StoreContextVar 1
L5:
CheckStack
Push r4
LoadContextVar 1
StoreLocal r8
InstanceCall 1, CP#13
PushConstant CP#11
IfNeStrictTOS
Jump L3
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
Push r8
InstanceCall 1, CP#14
StoreContextVar 0
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
StoreContextVar 9
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextVar 0
Push r4
LoadContextVar 0
InstanceCall 2, CP#15
StoreContextVar 8
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
PushConstant CP#16
StoreContextVar 5
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
StoreContextVar 6
PushConstant CP#18
IndirectStaticCall 0, CP#17
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 3
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 4
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 10
PushConstant CP#20
IndirectStaticCall 4, CP#19
PopLocal r10
PushConstant CP#3
ReturnTOS
L11:
IfEqNull r2
Jump L4
Push r2
Push r3
Throw 1
L4:
Push r4
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 9
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 8
Push r1
InstanceCall 2, CP#21
InstanceCall 2, CP#22
StoreContextVar 0
Push r4
LoadContextParent
PopLocal r4
Jump L5
L3:
Push r4
CloneContext
PopLocal r4
Push r4
Push r4
LoadContextVar 0
PushConstant CP#16
InstanceCall 2, CP#23
StoreLocal r8
StoreContextVar 0
Push r8
Drop1
Jump L6
L2:
Push r4
LoadContextParent
PopLocal r4
PushConstant CP#4
PopLocal r8
L8:
CheckStack
Push r8
PushConstant CP#8
InstanceCall 2, CP#24
AssertBoolean 0
PushConstant CP#11
IfNeStrictTOS
Jump L7
Push r4
Push r4
LoadContextVar 0
Push r8
InstanceCall 2, CP#25
StoreContextVar 0
Push r8
PushConstant CP#16
InstanceCall 2, CP#26
StoreLocal r8
Drop1
Jump L8
L7:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
PopLocal r4
L9:
Push r4
LoadContextVar 1
Push r4
LoadContextVar 2
PushConstant CP#27
IndirectStaticCall 2, CP#9
Drop1
PushConstant CP#3
ReturnTOS
Jump L10
Try #0 end:
Try #0 handler:
SetFrame 11
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 1
Push r8
Push r9
InstanceCall 3, CP#30
Drop1
Jump L10
L10:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 6
PopLocal r4
Jump L11
}
]static method loops(core::List<core::int> list) asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
dynamic :async_temporary_0;
dynamic :async_temporary_1;
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding
try {
#L4:
{
core::int sum = 0;
for (core::int i = 0; i.{core::num::<}(10); i = i.{core::num::+}(1)) {
for (core::int j in list) {
:async_temporary_1 = sum;
:async_temporary_0 = i.{core::num::+}(j);
[yield] let dynamic #t4 = asy::_awaitHelper(self::foo(), :async_op_then, :async_op_error, :async_op) in null;
sum = _in::unsafeCast<core::int>(:async_temporary_1).{core::num::+}(_in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(_in::unsafeCast<core::int>(:result)));
}
}
for (core::int k = 0; k.{core::num::<}(10); k = k.{core::num::+}(1)) {
sum = sum.{core::num::+}(k);
}
:return_value = sum;
break #L4;
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
[@vm.bytecode=
Bytecode {
Entry 4
CheckStack
AllocateContext 16
PopLocal r0
Push r0
Push FP[-7]
StoreContextVar 0
Push r0
Push FP[-6]
StoreContextVar 1
Push r0
Push FP[-5]
StoreContextVar 2
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 4
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 5
Push r0
PushConstant CP#3
StoreContextVar 6
Push r0
PushConstant CP#4
StoreContextVar 7
Push r0
PushConstant CP#3
StoreContextVar 8
Push r0
PushConstant CP#3
StoreContextVar 9
Push r0
PushConstant CP#3
StoreContextVar 10
Push r0
PushConstant CP#3
StoreContextVar 11
Push r0
PushConstant CP#3
StoreContextVar 12
Push r0
PushConstant CP#3
StoreContextVar 13
Push r0
PushConstant CP#3
StoreContextVar 14
Push r0
Allocate CP#38
StoreLocal r3
Push r3
PushConstant CP#3
StoreFieldTOS CP#39
Push r3
PushConstant CP#3
StoreFieldTOS CP#41
Push r3
PushConstant CP#43
StoreFieldTOS CP#44
Push r3
PushConstant CP#5
StoreFieldTOS CP#46
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 15
Push r0
LoadContextVar 15
PushConstant CP#48
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 15
PushConstant CP#49
IndirectStaticCall 1, CP#1
StoreContextVar 5
Push r0
Push r0
LoadContextVar 15
PushConstant CP#50
IndirectStaticCall 1, CP#1
StoreContextVar 6
PushConstant CP#51
Push r0
LoadContextVar 15
PushConstant CP#52
IndirectStaticCall 2, CP#11
Drop1
Push r0
LoadContextVar 3
InstanceCall 1, CP#53
ReturnTOS
PushConstant CP#3
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[1] = ArgDesc num-args 1, num-type-args 0, names []
[2] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#1
[3] = Null
[4] = Int 0
[5] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[6] = InstanceField dart.core::_Closure::_context
[7] = Reserved
[8] = Int 1
[9] = ArgDesc num-args 4, num-type-args 0, names []
[10] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[11] = ArgDesc num-args 2, num-type-args 0, names []
[12] = ICData target-name '+', arg-desc CP#11
[13] = Type dynamic
[14] = Type dart.core::Error
[15] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#9
[16] = Bool true
[17] = Int 42
[18] = Int 2
[19] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[20] = ICData target-name '+', arg-desc CP#11
[21] = String 'fin'
[22] = StaticICData target 'dart.core::print', arg-desc CP#1
[23] = Int 3
[24] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[25] = ICData target-name '+', arg-desc CP#11
[26] = StaticICData target 'dart.core::print', arg-desc CP#1
[27] = Int 4
[28] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[29] = ICData target-name '+', arg-desc CP#11
[30] = StaticICData target 'dart.core::print', arg-desc CP#1
[31] = Int 5
[32] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[33] = ICData target-name '+', arg-desc CP#11
[34] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#11
[35] = ArgDesc num-args 3, num-type-args 0, names []
[36] = ICData target-name 'completeError', arg-desc CP#35
[37] = EndClosureFunctionScope
[38] = Class dart.core::_Closure
[39] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[40] = Reserved
[41] = InstanceField dart.core::_Closure::_function_type_arguments
[42] = Reserved
[43] = EmptyTypeArguments
[44] = InstanceField dart.core::_Closure::_delayed_type_arguments
[45] = Reserved
[46] = InstanceField dart.core::_Closure::_function
[47] = Reserved
[48] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[49] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[50] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[51] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[52] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#11
[53] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#5 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 10
CheckStack
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 7
StoreLocal r5
PushConstant CP#4
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 9
Try #0 start:
AllocateContext 2
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#8
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 10
Try #1 start:
Push r4
LoadContextParent
Push r4
StoreContextVar 11
Try #2 start:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushConstant CP#8
StoreContextVar 7
Push r4
LoadContextParent
Push r4
StoreContextVar 8
Push r4
LoadContextParent
LoadContextVar 0
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 15
PushConstant CP#10
IndirectStaticCall 4, CP#9
PopLocal r13
PushConstant CP#3
ReturnTOS
L13:
IfEqNull r2
Jump L2
Push r2
Push r3
Throw 1
L2:
Push r4
Push r4
LoadContextParent
LoadContextVar 14
Push r1
InstanceCall 2, CP#12
StoreContextVar 0
Jump L3
Try #2 end:
Try #2 handler:
SetFrame 14
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 11
PopLocal r4
MoveSpecial r10, exception
MoveSpecial r11, stackTrace
Push r4
LoadContextParent
Push r10
StoreContextVar 12
Push r4
LoadContextParent
Push r11
StoreContextVar 13
Push r4
Push r10
StoreContextVar 1
Push r4
LoadContextVar 1
PushConstant CP#3
PushConstant CP#3
PushConstant CP#14
InstanceCall 4, CP#15
AssertBoolean 0
PushConstant CP#16
IfNeStrictTOS
Jump L4
Push r4
LoadContextParent
PushConstant CP#17
StoreContextVar 4
Jump L5
L4:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushConstant CP#18
StoreContextVar 7
Push r4
LoadContextParent
Push r4
StoreContextVar 8
Push r4
LoadContextParent
LoadContextVar 1
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 15
PushConstant CP#19
IndirectStaticCall 4, CP#9
PopLocal r13
PushConstant CP#3
ReturnTOS
L14:
IfEqNull r2
Jump L6
Push r2
Push r3
Throw 1
L6:
Push r4
Push r4
LoadContextParent
LoadContextVar 14
Push r1
InstanceCall 2, CP#20
StoreContextVar 0
Push r4
LoadContextParent
LoadContextVar 12
Push r4
LoadContextParent
LoadContextVar 13
Throw 1
Drop1
Jump L3
L3:
Jump L7
Try #1 end:
Try #1 handler:
SetFrame 14
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 10
PopLocal r4
MoveSpecial r8, exception
MoveSpecial r9, stackTrace
Push r4
LoadContextParent
Push r8
StoreContextVar 12
Push r4
LoadContextParent
Push r9
StoreContextVar 13
PushConstant CP#21
PushConstant CP#22
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushConstant CP#23
StoreContextVar 7
Push r4
LoadContextParent
Push r4
StoreContextVar 8
Push r4
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 15
PushConstant CP#24
IndirectStaticCall 4, CP#9
PopLocal r12
PushConstant CP#3
ReturnTOS
L15:
IfEqNull r2
Jump L8
Push r2
Push r3
Throw 1
L8:
Push r4
Push r4
LoadContextParent
LoadContextVar 14
Push r1
InstanceCall 2, CP#25
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 4
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
LoadContextVar 12
Push r4
LoadContextParent
LoadContextVar 13
Throw 1
L5:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 10
PopLocal r4
PushConstant CP#21
PushConstant CP#26
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushConstant CP#27
StoreContextVar 7
Push r4
LoadContextParent
Push r4
StoreContextVar 8
Push r4
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 15
PushConstant CP#28
IndirectStaticCall 4, CP#9
PopLocal r12
PushConstant CP#3
ReturnTOS
L16:
IfEqNull r2
Jump L10
Push r2
Push r3
Throw 1
L10:
Push r4
Push r4
LoadContextParent
LoadContextVar 14
Push r1
InstanceCall 2, CP#29
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 4
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
PopLocal r4
Jump L9
L7:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 10
PopLocal r4
PushConstant CP#21
PushConstant CP#30
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushConstant CP#31
StoreContextVar 7
Push r4
LoadContextParent
Push r4
StoreContextVar 8
Push r4
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 15
PushConstant CP#32
IndirectStaticCall 4, CP#9
PopLocal r12
PushConstant CP#3
ReturnTOS
L17:
IfEqNull r2
Jump L11
Push r2
Push r3
Throw 1
L11:
Push r4
Push r4
LoadContextParent
LoadContextVar 14
Push r1
InstanceCall 2, CP#33
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 4
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
PopLocal r4
L9:
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
PushConstant CP#34
IndirectStaticCall 2, CP#11
Drop1
PushConstant CP#3
ReturnTOS
Jump L12
Try #0 end:
Try #0 handler:
SetFrame 14
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 9
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 3
Push r8
Push r9
InstanceCall 3, CP#36
Drop1
Jump L12
L12:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 8
PopLocal r4
Push r5
PushConstant CP#8
IfEqStrictTOS
Jump L13
Push r5
PushConstant CP#18
IfEqStrictTOS
Jump L14
Push r5
PushConstant CP#23
IfEqStrictTOS
Jump L15
Push r5
PushConstant CP#27
IfEqStrictTOS
Jump L16
Jump L17
}
]static method tryCatchRethrow(asy::Future<core::int> a, asy::Future<core::int> b, asy::Future<core::int> c) asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
dynamic :saved_try_context_var1;
dynamic :saved_try_context_var2;
dynamic :exception0;
dynamic :stack_trace0;
dynamic :async_temporary_0;
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding
try {
#L5:
{
core::int x = 1;
try
try {
:async_temporary_0 = x;
[yield] let dynamic #t5 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
x = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(_in::unsafeCast<core::int>(:result));
}
on dynamic catch(final dynamic e) {
if(e is core::Error) {
:return_value = 42;
break #L5;
}
:async_temporary_0 = x;
[yield] let dynamic #t6 = asy::_awaitHelper(b, :async_op_then, :async_op_error, :async_op) in null;
x = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(_in::unsafeCast<core::int>(:result));
rethrow;
}
finally {
core::print("fin");
:async_temporary_0 = x;
[yield] let dynamic #t7 = asy::_awaitHelper(c, :async_op_then, :async_op_error, :async_op) in null;
x = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(_in::unsafeCast<core::int>(:result));
:return_value = x;
break #L5;
}
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
[@vm.bytecode=
Bytecode {
Entry 4
CheckStack
AllocateContext 2
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
Push r0
PushConstant CP#0
StoreContextVar 1
Allocate CP#26
StoreLocal r3
Push r3
PushConstant CP#7
StoreFieldTOS CP#27
Push r3
PushConstant CP#7
StoreFieldTOS CP#29
Push r3
PushConstant CP#31
StoreFieldTOS CP#32
Push r3
PushConstant CP#1
StoreFieldTOS CP#34
Push r3
Push r0
StoreFieldTOS CP#2
PopLocal r2
Push r2
ReturnTOS
PushConstant CP#7
ReturnTOS
}
ConstantPool {
[0] = Int 3
[1] = ClosureFunction nested () dart.async::Future<dart.core::int> /* originally async */ ;
[2] = InstanceField dart.core::_Closure::_context
[3] = Reserved
[4] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[5] = ArgDesc num-args 1, num-type-args 0, names []
[6] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#5
[7] = Null
[8] = Int 0
[9] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[10] = Int 4
[11] = Int 5
[12] = Int 1
[13] = ArgDesc num-args 4, num-type-args 0, names []
[14] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#13
[15] = ArgDesc num-args 2, num-type-args 0, names []
[16] = ICData target-name '+', arg-desc CP#15
[17] = Type dynamic
[18] = String 'fin'
[19] = StaticICData target 'dart.core::print', arg-desc CP#5
[20] = StaticICData target 'dart.core::print', arg-desc CP#5
[21] = StaticICData target 'dart.core::print', arg-desc CP#5
[22] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#15
[23] = ArgDesc num-args 3, num-type-args 0, names []
[24] = ICData target-name 'completeError', arg-desc CP#23
[25] = EndClosureFunctionScope
[26] = Class dart.core::_Closure
[27] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[28] = Reserved
[29] = InstanceField dart.core::_Closure::_function_type_arguments
[30] = Reserved
[31] = EmptyTypeArguments
[32] = InstanceField dart.core::_Closure::_delayed_type_arguments
[33] = Reserved
[34] = InstanceField dart.core::_Closure::_function
[35] = Reserved
[36] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
[37] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
[38] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
[39] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[40] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
[41] = ICData get target-name 'future', arg-desc CP#5
[42] = EndClosureFunctionScope
}
Closure CP#9 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#7
LoadConstant r2, CP#7
LoadConstant r3, CP#7
Frame 8
CheckStack
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 4
StoreLocal r5
PushConstant CP#8
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 6
Try #0 start:
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#10
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 7
Try #1 start:
Push r4
LoadContextParent
LoadContextParent
PushConstant CP#11
StoreContextVar 1
Push r4
LoadContextParent
PushConstant CP#12
StoreContextVar 4
Push r4
LoadContextParent
Push r4
StoreContextVar 5
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
Push r4
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 3
Push r4
LoadContextParent
LoadContextVar 8
PushConstant CP#14
IndirectStaticCall 4, CP#13
PopLocal r11
PushConstant CP#7
ReturnTOS
L7:
IfEqNull r2
Jump L2
Push r2
Push r3
Throw 1
L2:
Push r4
Push r1
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 1
Push r4
LoadContextVar 0
InstanceCall 2, CP#16
StoreContextVar 1
Jump L3
Jump L4
Try #1 end:
Try #1 handler:
SetFrame 12
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
MoveSpecial r8, exception
MoveSpecial r9, stackTrace
PushConstant CP#18
PushConstant CP#19
IndirectStaticCall 1, CP#5
Drop1
Push r8
Push r9
Throw 1
L3:
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
PushConstant CP#18
PushConstant CP#20
IndirectStaticCall 1, CP#5
Drop1
Push r4
LoadContextParent
PopLocal r4
Jump L5
L4:
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
PushConstant CP#18
PushConstant CP#21
IndirectStaticCall 1, CP#5
Drop1
Push r4
LoadContextParent
PopLocal r4
L5:
Push r4
LoadContextVar 0
Push r4
LoadContextVar 1
PushConstant CP#22
IndirectStaticCall 2, CP#15
Drop1
PushConstant CP#7
ReturnTOS
Jump L6
Try #0 end:
Try #0 handler:
SetFrame 12
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 6
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 0
Push r8
Push r9
InstanceCall 3, CP#24
Drop1
Jump L6
L6:
PushConstant CP#7
ReturnTOS
L1:
Push r4
LoadContextVar 5
PopLocal r4
Jump L7
}
Closure CP#1 {
EntryFixed 1, 4
CheckStack
Push FP[-5]
LoadFieldTOS CP#2
PopLocal r0
AllocateContext 9
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#4
PushConstant CP#6
IndirectStaticCall 1, CP#5
StoreContextVar 0
Push r0
PushConstant CP#7
StoreContextVar 1
PushConstant CP#7
PopLocal r2
Push r0
PushConstant CP#7
StoreContextVar 2
Push r0
PushConstant CP#7
StoreContextVar 3
Push r0
PushConstant CP#8
StoreContextVar 4
Push r0
PushConstant CP#7
StoreContextVar 5
Push r0
PushConstant CP#7
StoreContextVar 6
Push r0
PushConstant CP#7
StoreContextVar 7
Push r0
Allocate CP#26
StoreLocal r3
Push r3
PushConstant CP#7
StoreFieldTOS CP#27
Push r3
PushConstant CP#7
StoreFieldTOS CP#29
Push r3
PushConstant CP#31
StoreFieldTOS CP#32
Push r3
PushConstant CP#9
StoreFieldTOS CP#34
Push r3
Push r0
StoreFieldTOS CP#2
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#36
IndirectStaticCall 1, CP#5
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#37
IndirectStaticCall 1, CP#5
StoreContextVar 2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#38
IndirectStaticCall 1, CP#5
StoreContextVar 3
PushConstant CP#39
Push r0
LoadContextVar 8
PushConstant CP#40
IndirectStaticCall 2, CP#15
Drop1
Push r0
LoadContextVar 0
InstanceCall 1, CP#41
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
PushConstant CP#7
ReturnTOS
}
]static method closure(asy::Future<core::int> a) dynamic {
core::int x = 3;
function nested() asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :await_jump_var = 0;
dynamic :await_ctx_var;
dynamic :saved_try_context_var0;
dynamic :saved_try_context_var1;
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding
try {
#L6:
{
core::int y = 4;
try {
x = 5;
[yield] let dynamic #t8 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
y = _in::unsafeCast<core::int>(:result);
:return_value = x.{core::num::+}(y);
break #L6;
}
finally {
core::print("fin");
}
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
return nested;
}
[@vm.bytecode=
Bytecode {
Entry 4
CheckStack
AllocateContext 9
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#4
StoreContextVar 5
Push r0
PushConstant CP#3
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
Push r0
Allocate CP#22
StoreLocal r3
Push r3
PushConstant CP#3
StoreFieldTOS CP#23
Push r3
PushConstant CP#3
StoreFieldTOS CP#25
Push r3
PushConstant CP#27
StoreFieldTOS CP#28
Push r3
PushConstant CP#5
StoreFieldTOS CP#30
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#32
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#33
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 8
PushConstant CP#34
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#35
Push r0
LoadContextVar 8
PushConstant CP#36
IndirectStaticCall 2, CP#12
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#37
ReturnTOS
PushConstant CP#3
ReturnTOS
}
ConstantPool {
[0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[1] = ArgDesc num-args 1, num-type-args 0, names []
[2] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#1
[3] = Null
[4] = Int 0
[5] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[6] = InstanceField dart.core::_Closure::_context
[7] = Reserved
[8] = Int 1
[9] = ArgDesc num-args 4, num-type-args 0, names []
[10] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#9
[11] = Int 42
[12] = ArgDesc num-args 2, num-type-args 0, names []
[13] = ICData target-name '==', arg-desc CP#12
[14] = Bool true
[15] = ArgDesc num-args 3, num-type-args 0, names []
[16] = StaticICData target 'dart.core::_AssertionError::_throwNew', arg-desc CP#15
[17] = Int 7
[18] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#12
[19] = Type dynamic
[20] = ICData target-name 'completeError', arg-desc CP#15
[21] = EndClosureFunctionScope
[22] = Class dart.core::_Closure
[23] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[24] = Reserved
[25] = InstanceField dart.core::_Closure::_function_type_arguments
[26] = Reserved
[27] = EmptyTypeArguments
[28] = InstanceField dart.core::_Closure::_delayed_type_arguments
[29] = Reserved
[30] = InstanceField dart.core::_Closure::_function
[31] = Reserved
[32] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[33] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[34] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[35] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[36] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#12
[37] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#5 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#3
LoadConstant r2, CP#3
LoadConstant r3, CP#3
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushConstant CP#4
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 7
Try #0 start:
JumpIfNoAsserts L2
Push r4
PushConstant CP#8
StoreContextVar 5
Push r4
Push r4
StoreContextVar 6
Push r4
LoadContextVar 0
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 8
PushConstant CP#10
IndirectStaticCall 4, CP#9
PopLocal r8
PushConstant CP#3
ReturnTOS
L6:
IfEqNull r2
Jump L3
Push r2
Push r3
Throw 1
L3:
JumpIfNoAsserts L2
Push r1
PushConstant CP#11
InstanceCall 2, CP#13
AssertBoolean 0
PushConstant CP#14
IfEqStrictTOS
Jump L2
PushConstant CP#4
PushConstant CP#4
PushConstant CP#3
PushConstant CP#16
IndirectStaticCall 3, CP#15
Drop1
L2:
Push r4
PushConstant CP#17
StoreContextVar 2
Jump L4
L4:
Push r4
LoadContextVar 1
Push r4
LoadContextVar 2
PushConstant CP#18
IndirectStaticCall 2, CP#12
Drop1
PushConstant CP#3
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
SetFrame 10
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 1
Push r8
Push r9
InstanceCall 3, CP#20
Drop1
Jump L5
L5:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 6
PopLocal r4
Jump L6
}
]static method testAssert(asy::Future<core::int> a) asy::Future<core::int> /* originally async */ {
final asy::Completer<core::int> :async_completer = asy::Completer::sync<core::int>();
asy::FutureOr<core::int> :return_value;
dynamic :async_stack_trace;
dynamic :async_op_then;
dynamic :async_op_error;
dynamic :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:
{
assert {
[yield] let dynamic #t9 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
assert(_in::unsafeCast<core::int>(:result).{core::num::==}(42));
}
:return_value = 7;
break #L7;
}
asy::_completeOnAsyncReturn(:async_completer, :return_value);
return;
}
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
:async_completer.{asy::Completer::completeError}(:exception, :stack_trace);
}
:async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
asy::Future::microtask<dynamic>(:async_op);
return :async_completer.{asy::Completer::future};
}
[@vm.bytecode=
Bytecode {
Entry 0
CheckStack
PushConstant CP#0
ReturnTOS
}
ConstantPool {
[0] = Null
}
]static method main() dynamic {}