blob: acc535fdd86eafaaf00489737ba2f53d6a0b817d [file] [log] [blame]
library #lib;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
[@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#0
StoreFieldTOS CP#26
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] = InstanceField dart.core::_Closure::_function
[27] = Reserved
[28] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#8
[29] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#8
[30] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#8
[31] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[32] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
[33] = ICData get target-name 'future', arg-desc CP#8
[34] = 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 0
StoreLocal r5
PushConstant CP#10
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 2
Try #0 start:
Push r4
PushConstant CP#12
StoreContextVar 0
Push r4
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextVar 0
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
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 6
Push r4
LoadContextVar 7
PushConstant CP#16
IndirectStaticCall 2, CP#15
Drop1
PushConstant CP#3
ReturnTOS
Jump L3
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 2
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 6
Push r8
Push r9
InstanceCall1 3, CP#19
Drop1
Jump L3
L3:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 1
PopLocal r4
Jump L4
}
Closure CP#0 {
Entry 4
CheckStack
Push FP[-6]
LoadFieldTOS CP#1
PopLocal r0
AllocateContext 1
StoreLocal r1
Push r1
Push r0
StoreContextParent
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
AllocateContext 8
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#7
PushConstant CP#9
IndirectStaticCall 1, CP#8
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
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 0
Push r0
PushConstant CP#3
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
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#11
StoreFieldTOS CP#26
Push r3
Push r0
StoreFieldTOS CP#1
StoreContextVar 5
Push r0
LoadContextVar 5
PushConstant CP#28
IndirectStaticCall 1, CP#8
PopLocal r2
Push r0
Push r0
LoadContextVar 5
PushConstant CP#29
IndirectStaticCall 1, CP#8
StoreContextVar 3
Push r0
Push r0
LoadContextVar 5
PushConstant CP#30
IndirectStaticCall 1, CP#8
StoreContextVar 4
PushConstant CP#31
Push r0
LoadContextVar 5
PushConstant CP#32
IndirectStaticCall 2, CP#15
Drop1
Push r0
LoadContextVar 6
InstanceCall1 1, CP#33
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
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;
: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
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 2
PushConstant CP#3
PopLocal r2
PushConstant CP#3
PopLocal r3
PushConstant CP#3
PopLocal r4
Push r0
PushConstant CP#4
StoreContextVar 0
Push r0
PushConstant CP#3
StoreContextVar 1
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#5
StoreFieldTOS CP#20
Push r6
Push r0
StoreFieldTOS CP#6
PopLocal r5
Push r5
PushConstant CP#22
IndirectStaticCall 1, CP#1
PopLocal r2
Push r5
PushConstant CP#23
IndirectStaticCall 1, CP#1
PopLocal r3
Push r5
PushConstant CP#24
IndirectStaticCall 1, CP#1
PopLocal r4
PushConstant CP#25
Push r5
PushConstant CP#26
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 3
InstanceCall1 1, CP#27
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] = InstanceField dart.core::_Closure::_function
[21] = Reserved
[22] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[23] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[24] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[25] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[26] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
[27] = 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 0
StoreLocal r5
PushConstant CP#4
IfNeStrictNumTOS
Jump L1
Push r4
PopLocal r6
Try #0 start:
Push r4
PushConstant CP#8
StoreContextVar 2
Jump L2
L2:
Push r4
LoadContextVar 3
Push r4
LoadContextVar 2
PushConstant CP#10
IndirectStaticCall 2, CP#9
Drop1
PushConstant CP#3
ReturnTOS
Jump L3
Try #0 end:
Try #0 handler:
Push r6
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 3
Push r8
Push r9
InstanceCall1 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 2
PopLocal r0
Push r0
Push FP[-6]
StoreContextVar 0
Push r0
Push FP[-5]
StoreContextVar 1
AllocateContext 9
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 8
Push r0
PushConstant CP#3
StoreContextVar 7
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 0
Push r0
PushConstant CP#3
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
Push r0
PushConstant CP#3
StoreContextVar 6
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#5
StoreFieldTOS CP#25
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 5
Push r0
LoadContextVar 5
PushConstant CP#27
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 5
PushConstant CP#28
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 5
PushConstant CP#29
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#30
Push r0
LoadContextVar 5
PushConstant CP#31
IndirectStaticCall 2, CP#13
Drop1
Push r0
LoadContextVar 8
InstanceCall1 1, CP#32
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 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] = InstanceField dart.core::_Closure::_function
[26] = Reserved
[27] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[28] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[29] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[30] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[31] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
[32] = 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 0
StoreLocal r5
PushConstant CP#4
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 2
Try #0 start:
Push r4
PushConstant CP#8
StoreContextVar 0
Push r4
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextVar 0
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
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 6
Push r4
PushConstant CP#11
StoreContextVar 0
Push r4
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextVar 1
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
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 6
Push r1
InstanceCall1 2, CP#14
StoreContextVar 7
Jump L4
L4:
Push r4
LoadContextVar 8
Push r4
LoadContextVar 7
PushConstant CP#15
IndirectStaticCall 2, CP#13
Drop1
PushConstant CP#3
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 2
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 8
Push r8
Push r9
InstanceCall1 3, CP#18
Drop1
Jump L5
L5:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 1
PopLocal r4
Push r5
PushConstant CP#8
IfEqStrictNumTOS
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 = :async_temporary_0.{core::num::+}(: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 1
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
AllocateContext 10
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 9
Push r0
PushConstant CP#3
StoreContextVar 8
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 0
Push r0
PushConstant CP#3
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#3
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 2
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#5
StoreFieldTOS CP#37
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 7
Push r0
LoadContextVar 7
PushConstant CP#39
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 7
PushConstant CP#40
IndirectStaticCall 1, CP#1
StoreContextVar 5
Push r0
Push r0
LoadContextVar 7
PushConstant CP#41
IndirectStaticCall 1, CP#1
StoreContextVar 6
PushConstant CP#42
Push r0
LoadContextVar 7
PushConstant CP#43
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 9
InstanceCall1 1, CP#44
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 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] = InstanceField dart.core::_Closure::_function
[38] = Reserved
[39] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[40] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[41] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[42] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[43] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
[44] = 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 0
StoreLocal r5
PushConstant CP#4
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 4
Try #0 start:
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#4
StoreContextVar 0
AllocateContext 1
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
InstanceCall1 2, CP#10
AssertBoolean 0
PushConstant CP#11
IfNeStrictTOS
Jump L2
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 0
InstanceCall1 1, CP#12
PopLocal r8
Push r4
Push r8
StoreContextVar 0
L5:
CheckStack
Push r4
LoadContextVar 0
StoreLocal r8
InstanceCall1 1, CP#13
PushConstant CP#11
IfNeStrictTOS
Jump L3
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
Push r8
InstanceCall1 1, CP#14
StoreContextVar 0
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
Push r4
LoadContextVar 0
InstanceCall1 2, CP#15
StoreContextVar 3
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
PushConstant CP#16
StoreContextVar 0
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
StoreContextVar 1
PushConstant CP#18
IndirectStaticCall 0, CP#17
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 7
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
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 3
Push r1
InstanceCall1 2, CP#21
InstanceCall1 2, CP#22
StoreContextVar 0
Push r4
LoadContextParent
PopLocal r4
Jump L5
L3:
Push r4
LoadContextParent
PopLocal r4
Push r4
CloneContext
PopLocal r4
Push r4
Push r4
LoadContextVar 0
PushConstant CP#16
InstanceCall1 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
InstanceCall1 2, CP#24
AssertBoolean 0
PushConstant CP#11
IfNeStrictTOS
Jump L7
Push r4
Push r4
LoadContextVar 0
Push r8
InstanceCall1 2, CP#25
StoreContextVar 0
Push r8
PushConstant CP#16
InstanceCall1 2, CP#26
StoreLocal r8
Drop1
Jump L8
L7:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 8
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
PopLocal r4
L9:
Push r4
LoadContextVar 9
Push r4
LoadContextVar 8
PushConstant CP#27
IndirectStaticCall 2, CP#9
Drop1
PushConstant CP#3
ReturnTOS
Jump L10
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 4
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 9
Push r8
Push r9
InstanceCall1 3, CP#30
Drop1
Jump L10
L10:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 1
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 = :async_temporary_1.{core::num::+}(:async_temporary_0.{core::num::+}(: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 3
PopLocal r0
Push r0
Push FP[-7]
StoreContextVar 0
Push r0
Push FP[-6]
StoreContextVar 1
Push r0
Push FP[-5]
StoreContextVar 2
AllocateContext 13
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 12
Push r0
PushConstant CP#3
StoreContextVar 9
PushConstant CP#3
PopLocal r2
Push r0
PushConstant CP#3
StoreContextVar 6
Push r0
PushConstant CP#3
StoreContextVar 7
Push r0
PushConstant CP#4
StoreContextVar 0
Push r0
PushConstant CP#3
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 3
Push r0
PushConstant CP#3
StoreContextVar 4
Push r0
PushConstant CP#3
StoreContextVar 5
Push r0
PushConstant CP#3
StoreContextVar 10
Push r0
PushConstant CP#3
StoreContextVar 11
Push r0
PushConstant CP#3
StoreContextVar 2
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#5
StoreFieldTOS CP#43
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#45
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#46
IndirectStaticCall 1, CP#1
StoreContextVar 6
Push r0
Push r0
LoadContextVar 8
PushConstant CP#47
IndirectStaticCall 1, CP#1
StoreContextVar 7
PushConstant CP#48
Push r0
LoadContextVar 8
PushConstant CP#49
IndirectStaticCall 2, CP#11
Drop1
Push r0
LoadContextVar 12
InstanceCall1 1, CP#50
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 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] = InstanceField dart.core::_Closure::_function
[44] = Reserved
[45] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[46] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[47] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[48] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[49] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#11
[50] = 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 0
StoreLocal r5
PushConstant CP#4
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 3
Try #0 start:
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushConstant CP#8
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 4
Try #1 start:
Push r4
LoadContextParent
Push r4
StoreContextVar 5
Try #2 start:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
PushConstant CP#8
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 7
Push r4
LoadContextParent
LoadContextVar 8
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 2
Push r1
InstanceCall1 2, CP#12
StoreContextVar 0
Jump L3
Try #2 end:
Try #2 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 5
PopLocal r4
MoveSpecial r10, exception
MoveSpecial r11, stackTrace
Push r4
LoadContextParent
Push r10
StoreContextVar 10
Push r4
LoadContextParent
Push r11
StoreContextVar 11
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
Push r10
StoreContextVar 0
Push r4
LoadContextVar 0
PushConstant CP#3
PushConstant CP#3
PushConstant CP#14
InstanceCall1 4, CP#15
AssertBoolean 0
PushConstant CP#16
IfNeStrictTOS
Jump L4
Push r4
LoadContextParent
LoadContextParent
PushConstant CP#17
StoreContextVar 9
Jump L5
L4:
Push r4
LoadContextParent
LoadContextParent
Push r4
LoadContextParent
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
LoadContextParent
PushConstant CP#18
StoreContextVar 0
Push r4
LoadContextParent
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 7
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 8
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
LoadContextParent
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 2
Push r1
InstanceCall1 2, CP#20
StoreContextVar 0
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 10
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 11
Throw 1
Drop1
Push r4
LoadContextParent
PopLocal r4
Jump L3
L3:
Jump L7
Try #1 end:
Try #1 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 4
PopLocal r4
MoveSpecial r8, exception
MoveSpecial r9, stackTrace
Push r4
LoadContextParent
Push r8
StoreContextVar 10
Push r4
LoadContextParent
Push r9
StoreContextVar 11
PushConstant CP#21
PushConstant CP#22
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
PushConstant CP#23
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 7
Push r4
LoadContextParent
LoadContextVar 8
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 2
Push r1
InstanceCall1 2, CP#25
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 9
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
LoadContextVar 10
Push r4
LoadContextParent
LoadContextVar 11
Throw 1
L5:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 4
PopLocal r4
PushConstant CP#21
PushConstant CP#26
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
PushConstant CP#27
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 7
Push r4
LoadContextParent
LoadContextVar 8
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 2
Push r1
InstanceCall1 2, CP#29
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 9
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 4
PopLocal r4
PushConstant CP#21
PushConstant CP#30
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 2
Push r4
LoadContextParent
PushConstant CP#31
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 2
Push r4
LoadContextParent
LoadContextVar 6
Push r4
LoadContextParent
LoadContextVar 7
Push r4
LoadContextParent
LoadContextVar 8
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 2
Push r1
InstanceCall1 2, CP#33
StoreContextVar 0
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 9
Push r4
LoadContextParent
PopLocal r4
Jump L9
Push r4
LoadContextParent
PopLocal r4
L9:
Push r4
LoadContextVar 12
Push r4
LoadContextVar 9
PushConstant CP#34
IndirectStaticCall 2, CP#11
Drop1
PushConstant CP#3
ReturnTOS
Jump L12
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 3
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 12
Push r8
Push r9
InstanceCall1 3, CP#36
Drop1
Jump L12
L12:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 1
PopLocal r4
Push r5
PushConstant CP#8
IfEqStrictNumTOS
Jump L13
Push r5
PushConstant CP#18
IfEqStrictNumTOS
Jump L14
Push r5
PushConstant CP#23
IfEqStrictNumTOS
Jump L15
Push r5
PushConstant CP#27
IfEqStrictNumTOS
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 = :async_temporary_0.{core::num::+}(: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 = :async_temporary_0.{core::num::+}(: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 = :async_temporary_0.{core::num::+}(: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 1
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
AllocateContext 1
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
StoreContextVar 0
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#1
StoreFieldTOS CP#31
Push r3
Push r0
StoreFieldTOS CP#2
PopLocal r2
Push r2
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
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] = InstanceField dart.core::_Closure::_function
[32] = Reserved
[33] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5
[34] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5
[35] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5
[36] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[37] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
[38] = ICData get target-name 'future', arg-desc CP#5
[39] = 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 0
StoreLocal r5
PushConstant CP#8
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 2
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 3
Try #1 start:
Push r4
LoadContextParent
LoadContextParent
PushConstant CP#11
StoreContextVar 0
Push r4
LoadContextParent
PushConstant CP#12
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 0
Push r4
LoadContextParent
LoadContextVar 4
Push r4
LoadContextParent
LoadContextVar 5
Push r4
LoadContextParent
LoadContextVar 6
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 0
Push r4
LoadContextVar 0
InstanceCall1 2, CP#16
StoreContextVar 7
Jump L3
Jump L4
Try #1 end:
Try #1 handler:
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 3
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 3
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 3
PopLocal r4
PushConstant CP#18
PushConstant CP#21
IndirectStaticCall 1, CP#5
Drop1
Push r4
LoadContextParent
PopLocal r4
L5:
Push r4
LoadContextVar 8
Push r4
LoadContextVar 7
PushConstant CP#22
IndirectStaticCall 2, CP#15
Drop1
PushConstant CP#7
ReturnTOS
Jump L6
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#2
PopLocal r4
Push r4
LoadContextVar 2
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 8
Push r8
Push r9
InstanceCall1 3, CP#24
Drop1
Jump L6
L6:
PushConstant CP#7
ReturnTOS
L1:
Push r4
LoadContextVar 1
PopLocal r4
Jump L7
}
Closure CP#1 {
Entry 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 8
Push r0
PushConstant CP#7
StoreContextVar 7
PushConstant CP#7
PopLocal r2
Push r0
PushConstant CP#7
StoreContextVar 4
Push r0
PushConstant CP#7
StoreContextVar 5
Push r0
PushConstant CP#8
StoreContextVar 0
Push r0
PushConstant CP#7
StoreContextVar 1
Push r0
PushConstant CP#7
StoreContextVar 2
Push r0
PushConstant CP#7
StoreContextVar 3
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#9
StoreFieldTOS CP#31
Push r3
Push r0
StoreFieldTOS CP#2
StoreContextVar 6
Push r0
LoadContextVar 6
PushConstant CP#33
IndirectStaticCall 1, CP#5
PopLocal r2
Push r0
Push r0
LoadContextVar 6
PushConstant CP#34
IndirectStaticCall 1, CP#5
StoreContextVar 4
Push r0
Push r0
LoadContextVar 6
PushConstant CP#35
IndirectStaticCall 1, CP#5
StoreContextVar 5
PushConstant CP#36
Push r0
LoadContextVar 6
PushConstant CP#37
IndirectStaticCall 2, CP#15
Drop1
Push r0
LoadContextVar 8
InstanceCall1 1, CP#38
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 = :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 1
PopLocal r0
Push r0
Push FP[-5]
StoreContextVar 0
AllocateContext 8
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#0
PushConstant CP#2
IndirectStaticCall 1, CP#1
StoreContextVar 7
Push r0
PushConstant CP#3
StoreContextVar 6
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 0
Push r0
PushConstant CP#3
StoreContextVar 1
Push r0
PushConstant CP#3
StoreContextVar 2
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#5
StoreFieldTOS CP#27
Push r3
Push r0
StoreFieldTOS CP#6
StoreContextVar 5
Push r0
LoadContextVar 5
PushConstant CP#29
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 5
PushConstant CP#30
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 5
PushConstant CP#31
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#32
Push r0
LoadContextVar 5
PushConstant CP#33
IndirectStaticCall 2, CP#12
Drop1
Push r0
LoadContextVar 7
InstanceCall1 1, CP#34
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 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] = InstanceField dart.core::_Closure::_function
[28] = Reserved
[29] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[30] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[31] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[32] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[33] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#12
[34] = 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 0
StoreLocal r5
PushConstant CP#4
IfNeStrictNumTOS
Jump L1
Push r4
Push r4
StoreContextVar 2
Try #0 start:
JumpIfNoAsserts L2
Push r4
PushConstant CP#8
StoreContextVar 0
Push r4
Push r4
StoreContextVar 1
Push r4
LoadContextParent
LoadContextVar 0
Push r4
LoadContextVar 3
Push r4
LoadContextVar 4
Push r4
LoadContextVar 5
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
InstanceCall1 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
L2:
Push r4
PushConstant CP#17
StoreContextVar 6
Jump L4
L4:
Push r4
LoadContextVar 7
Push r4
LoadContextVar 6
PushConstant CP#18
IndirectStaticCall 2, CP#12
Drop1
PushConstant CP#3
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
Push r0
LoadFieldTOS CP#6
PopLocal r4
Push r4
LoadContextVar 2
PopLocal r4
MoveSpecial r6, exception
MoveSpecial r7, stackTrace
Push r6
PopLocal r8
Push r7
PopLocal r9
Push r4
LoadContextVar 7
Push r8
Push r9
InstanceCall1 3, CP#20
Drop1
Jump L5
L5:
PushConstant CP#3
ReturnTOS
L1:
Push r4
LoadContextVar 1
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(: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 {}