blob: 8267a0de4cc6b2bee13c13788f4771adb12910cb [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#19
StoreLocal r2
Push r2
PushNull
StoreFieldTOS CP#20
Push r2
PushNull
StoreFieldTOS CP#22
Push r2
PushConstant CP#24
StoreFieldTOS CP#25
Push r2
PushConstant CP#0
StoreFieldTOS CP#27
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] = Type dart.async::Future<dart.core::int>
[4] = String 'x'
[5] = SubtypeTestCache
[6] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::Null]
[7] = ArgDesc num-args 1, num-type-args 0, names []
[8] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#7
[9] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[10] = Null
[11] = ArgDesc num-args 4, num-type-args 0, names []
[12] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#11
[13] = ArgDesc num-args 2, num-type-args 0, names []
[14] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#13
[15] = Type dynamic
[16] = ArgDesc num-args 3, num-type-args 0, names []
[17] = ICData target-name 'completeError', arg-desc CP#16
[18] = EndClosureFunctionScope
[19] = Class dart.core::_Closure
[20] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[21] = Reserved
[22] = InstanceField dart.core::_Closure::_function_type_arguments
[23] = Reserved
[24] = EmptyTypeArguments
[25] = InstanceField dart.core::_Closure::_delayed_type_arguments
[26] = Reserved
[27] = InstanceField dart.core::_Closure::_function
[28] = Reserved
[29] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#7
[30] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#7
[31] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#7
[32] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[33] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13
[34] = ICData get target-name 'future', arg-desc CP#7
[35] = EndClosureFunctionScope
}
Closure CP#9 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#10
LoadConstant r2, CP#10
LoadConstant r3, CP#10
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushInt 0
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 7
Try #0 start:
Push r4
PushInt 1
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#12
IndirectStaticCall 4, CP#11
PopLocal r8
PushNull
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#14
IndirectStaticCall 2, CP#13
Drop1
PushNull
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#17
Drop1
Jump L3
L3:
PushNull
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]
PushNull
PushNull
PushConstant CP#3
PushConstant CP#4
AssertAssignable 0, CP#5
Drop1
Push r0
PushConstant CP#6
PushConstant CP#8
IndirectStaticCall 1, CP#7
StoreContextVar 1
Push r0
PushNull
StoreContextVar 2
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 3
Push r0
PushNull
StoreContextVar 4
Push r0
PushInt 0
StoreContextVar 5
Push r0
PushNull
StoreContextVar 6
Push r0
PushNull
StoreContextVar 7
Push r0
Allocate CP#19
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#20
Push r3
PushNull
StoreFieldTOS CP#22
Push r3
PushConstant CP#24
StoreFieldTOS CP#25
Push r3
PushConstant CP#9
StoreFieldTOS CP#27
Push r3
Push r0
StoreFieldTOS CP#1
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#29
IndirectStaticCall 1, CP#7
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#30
IndirectStaticCall 1, CP#7
StoreContextVar 3
Push r0
Push r0
LoadContextVar 8
PushConstant CP#31
IndirectStaticCall 1, CP#7
StoreContextVar 4
PushConstant CP#32
Push r0
LoadContextVar 8
PushConstant CP#33
IndirectStaticCall 2, CP#13
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#34
ReturnTOS
PushNull
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
PushNull
StoreContextVar 1
PushNull
PopLocal r2
PushNull
PopLocal r3
PushNull
PopLocal r4
Push r0
PushInt 0
StoreContextVar 2
Push r0
PushNull
StoreContextVar 3
Allocate CP#13
StoreLocal r6
Push r6
PushNull
StoreFieldTOS CP#14
Push r6
PushNull
StoreFieldTOS CP#16
Push r6
PushConstant CP#18
StoreFieldTOS CP#19
Push r6
PushConstant CP#3
StoreFieldTOS CP#21
Push r6
Push r0
StoreFieldTOS CP#5
PopLocal r5
Push r5
PushConstant CP#23
IndirectStaticCall 1, CP#1
PopLocal r2
Push r5
PushConstant CP#24
IndirectStaticCall 1, CP#1
PopLocal r3
Push r5
PushConstant CP#25
IndirectStaticCall 1, CP#1
PopLocal r4
PushConstant CP#26
Push r5
PushConstant CP#27
IndirectStaticCall 2, CP#7
Drop1
Push r0
LoadContextVar 0
InstanceCall 1, CP#28
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
PushNull
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] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[4] = Null
[5] = InstanceField dart.core::_Closure::_context
[6] = Reserved
[7] = ArgDesc num-args 2, num-type-args 0, names []
[8] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#7
[9] = Type dynamic
[10] = ArgDesc num-args 3, num-type-args 0, names []
[11] = ICData target-name 'completeError', arg-desc CP#10
[12] = EndClosureFunctionScope
[13] = Class dart.core::_Closure
[14] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[15] = Reserved
[16] = InstanceField dart.core::_Closure::_function_type_arguments
[17] = Reserved
[18] = EmptyTypeArguments
[19] = InstanceField dart.core::_Closure::_delayed_type_arguments
[20] = Reserved
[21] = InstanceField dart.core::_Closure::_function
[22] = Reserved
[23] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[24] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[25] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[26] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[27] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#7
[28] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#3 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#4
LoadConstant r2, CP#4
LoadConstant r3, CP#4
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#5
PopLocal r4
Push r4
LoadContextVar 2
StoreLocal r5
PushInt 0
IfNeStrictTOS
Jump L1
Push r4
PopLocal r6
Try #0 start:
Push r4
PushInt 42
StoreContextVar 1
Jump L2
L2:
Push r4
LoadContextVar 0
Push r4
LoadContextVar 1
PushConstant CP#8
IndirectStaticCall 2, CP#7
Drop1
PushNull
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#11
Drop1
Jump L3
L3:
PushNull
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
PushNull
StoreContextVar 3
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 4
Push r0
PushNull
StoreContextVar 5
Push r0
PushInt 0
StoreContextVar 6
Push r0
PushNull
StoreContextVar 7
Push r0
PushNull
StoreContextVar 8
Push r0
PushNull
StoreContextVar 9
Push r0
Allocate CP#17
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#18
Push r3
PushNull
StoreFieldTOS CP#20
Push r3
PushConstant CP#22
StoreFieldTOS CP#23
Push r3
PushConstant CP#3
StoreFieldTOS CP#25
Push r3
Push r0
StoreFieldTOS CP#5
StoreContextVar 10
Push r0
LoadContextVar 10
PushConstant CP#27
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 10
PushConstant CP#28
IndirectStaticCall 1, CP#1
StoreContextVar 4
Push r0
Push r0
LoadContextVar 10
PushConstant CP#29
IndirectStaticCall 1, CP#1
StoreContextVar 5
PushConstant CP#30
Push r0
LoadContextVar 10
PushConstant CP#31
IndirectStaticCall 2, CP#10
Drop1
Push r0
LoadContextVar 2
InstanceCall 1, CP#32
ReturnTOS
PushNull
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] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[4] = Null
[5] = InstanceField dart.core::_Closure::_context
[6] = Reserved
[7] = ArgDesc num-args 4, num-type-args 0, names []
[8] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[9] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[10] = ArgDesc num-args 2, num-type-args 0, names []
[11] = ICData target-name '+', arg-desc CP#10
[12] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#10
[13] = Type dynamic
[14] = ArgDesc num-args 3, num-type-args 0, names []
[15] = ICData target-name 'completeError', arg-desc CP#14
[16] = EndClosureFunctionScope
[17] = Class dart.core::_Closure
[18] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[19] = Reserved
[20] = InstanceField dart.core::_Closure::_function_type_arguments
[21] = Reserved
[22] = EmptyTypeArguments
[23] = InstanceField dart.core::_Closure::_delayed_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#10
[32] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#3 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#4
LoadConstant r2, CP#4
LoadConstant r3, CP#4
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#5
PopLocal r4
Push r4
LoadContextVar 6
StoreLocal r5
PushInt 0
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 8
Try #0 start:
Push r4
PushInt 1
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#8
IndirectStaticCall 4, CP#7
PopLocal r8
PushNull
ReturnTOS
L6:
IfEqNull r2
Jump L2
Push r2
Push r3
Throw 1
L2:
Push r4
Push r1
StoreContextVar 9
Push r4
PushInt 2
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#9
IndirectStaticCall 4, CP#7
PopLocal r9
PushNull
ReturnTOS
L7:
IfEqNull r2
Jump L3
Push r2
Push r3
Throw 1
L3:
Push r4
Push r4
LoadContextVar 9
Push r1
InstanceCall 2, CP#11
StoreContextVar 3
Jump L4
L4:
Push r4
LoadContextVar 2
Push r4
LoadContextVar 3
PushConstant CP#12
IndirectStaticCall 2, CP#10
Drop1
PushNull
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
SetFrame 10
Push r0
LoadFieldTOS CP#5
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#15
Drop1
Jump L5
L5:
PushNull
ReturnTOS
L1:
Push r4
LoadContextVar 7
PopLocal r4
Push r5
PushInt 1
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
PushNull
StoreContextVar 2
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 3
Push r0
PushNull
StoreContextVar 4
Push r0
PushInt 0
StoreContextVar 5
Push r0
PushNull
StoreContextVar 6
Push r0
PushNull
StoreContextVar 7
Push r0
PushNull
StoreContextVar 8
Push r0
PushNull
StoreContextVar 9
Push r0
Allocate CP#28
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#29
Push r3
PushNull
StoreFieldTOS CP#31
Push r3
PushConstant CP#33
StoreFieldTOS CP#34
Push r3
PushConstant CP#3
StoreFieldTOS CP#36
Push r3
Push r0
StoreFieldTOS CP#5
StoreContextVar 10
Push r0
LoadContextVar 10
PushConstant CP#38
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 10
PushConstant CP#39
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 10
PushConstant CP#40
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#41
Push r0
LoadContextVar 10
PushConstant CP#42
IndirectStaticCall 2, CP#7
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#43
ReturnTOS
PushNull
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] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[4] = Null
[5] = InstanceField dart.core::_Closure::_context
[6] = Reserved
[7] = ArgDesc num-args 2, num-type-args 0, names []
[8] = ICData target-name '<', arg-desc CP#7
[9] = ICData get target-name 'iterator', arg-desc CP#1
[10] = ICData target-name 'moveNext', arg-desc CP#1
[11] = ICData get target-name 'current', arg-desc CP#1
[12] = ICData target-name '+', arg-desc CP#7
[13] = ArgDesc num-args 0, num-type-args 0, names []
[14] = StaticICData target '#lib::foo', arg-desc CP#13
[15] = ArgDesc num-args 4, num-type-args 0, names []
[16] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#15
[17] = ICData target-name '+', arg-desc CP#7
[18] = ICData target-name '+', arg-desc CP#7
[19] = ICData target-name '+', arg-desc CP#7
[20] = ICData target-name '<', arg-desc CP#7
[21] = ICData target-name '+', arg-desc CP#7
[22] = ICData target-name '+', arg-desc CP#7
[23] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#7
[24] = Type dynamic
[25] = ArgDesc num-args 3, num-type-args 0, names []
[26] = ICData target-name 'completeError', arg-desc CP#25
[27] = EndClosureFunctionScope
[28] = Class dart.core::_Closure
[29] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[30] = Reserved
[31] = InstanceField dart.core::_Closure::_function_type_arguments
[32] = Reserved
[33] = EmptyTypeArguments
[34] = InstanceField dart.core::_Closure::_delayed_type_arguments
[35] = Reserved
[36] = InstanceField dart.core::_Closure::_function
[37] = Reserved
[38] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[39] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[40] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[41] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[42] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#7
[43] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#3 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#4
LoadConstant r2, CP#4
LoadConstant r3, CP#4
Frame 7
CheckStack
Push r0
LoadFieldTOS CP#5
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushInt 0
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
PushInt 0
StoreContextVar 0
AllocateContext 2
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
PushInt 0
StoreContextVar 0
L6:
CheckStack
Push r4
LoadContextVar 0
PushInt 10
InstanceCall 2, CP#8
AssertBoolean 0
PushTrue
IfNeStrictTOS
Jump L2
Push r4
LoadContextParent
LoadContextParent
LoadContextVar 0
InstanceCall 1, CP#9
PopLocal r8
Push r4
Push r8
StoreContextVar 1
L5:
CheckStack
Push r4
LoadContextVar 1
StoreLocal r8
InstanceCall 1, CP#10
PushTrue
IfNeStrictTOS
Jump L3
AllocateContext 1
StoreLocal r5
Push r5
Push r4
StoreContextParent
PopLocal r4
Push r4
Push r8
InstanceCall 1, CP#11
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#12
StoreContextVar 8
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
PushInt 1
StoreContextVar 5
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
Push r4
StoreContextVar 6
PushConstant CP#14
IndirectStaticCall 0, CP#13
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 3
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 4
Push r4
LoadContextParent
LoadContextParent
LoadContextParent
LoadContextVar 10
PushConstant CP#16
IndirectStaticCall 4, CP#15
PopLocal r10
PushNull
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#17
InstanceCall 2, CP#18
StoreContextVar 0
Push r4
LoadContextParent
PopLocal r4
Jump L5
L3:
Push r4
CloneContext
PopLocal r4
Push r4
Push r4
LoadContextVar 0
PushInt 1
InstanceCall 2, CP#19
StoreLocal r8
StoreContextVar 0
Push r8
Drop1
Jump L6
L2:
Push r4
LoadContextParent
PopLocal r4
PushInt 0
PopLocal r8
L8:
CheckStack
Push r8
PushInt 10
InstanceCall 2, CP#20
AssertBoolean 0
PushTrue
IfNeStrictTOS
Jump L7
Push r4
Push r4
LoadContextVar 0
Push r8
InstanceCall 2, CP#21
StoreContextVar 0
Push r8
PushInt 1
InstanceCall 2, CP#22
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#23
IndirectStaticCall 2, CP#7
Drop1
PushNull
ReturnTOS
Jump L10
Try #0 end:
Try #0 handler:
SetFrame 11
Push r0
LoadFieldTOS CP#5
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#26
Drop1
Jump L10
L10:
PushNull
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
PushNull
StoreContextVar 4
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 5
Push r0
PushNull
StoreContextVar 6
Push r0
PushInt 0
StoreContextVar 7
Push r0
PushNull
StoreContextVar 8
Push r0
PushNull
StoreContextVar 9
Push r0
PushNull
StoreContextVar 10
Push r0
PushNull
StoreContextVar 11
Push r0
PushNull
StoreContextVar 12
Push r0
PushNull
StoreContextVar 13
Push r0
PushNull
StoreContextVar 14
Push r0
Allocate CP#30
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#31
Push r3
PushNull
StoreFieldTOS CP#33
Push r3
PushConstant CP#35
StoreFieldTOS CP#36
Push r3
PushConstant CP#3
StoreFieldTOS CP#38
Push r3
Push r0
StoreFieldTOS CP#5
StoreContextVar 15
Push r0
LoadContextVar 15
PushConstant CP#40
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 15
PushConstant CP#41
IndirectStaticCall 1, CP#1
StoreContextVar 5
Push r0
Push r0
LoadContextVar 15
PushConstant CP#42
IndirectStaticCall 1, CP#1
StoreContextVar 6
PushConstant CP#43
Push r0
LoadContextVar 15
PushConstant CP#44
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 3
InstanceCall 1, CP#45
ReturnTOS
PushNull
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] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[4] = Null
[5] = InstanceField dart.core::_Closure::_context
[6] = Reserved
[7] = ArgDesc num-args 4, num-type-args 0, names []
[8] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[9] = ArgDesc num-args 2, num-type-args 0, names []
[10] = ICData target-name '+', arg-desc CP#9
[11] = Type dynamic
[12] = Type dart.core::Error
[13] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#7
[14] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[15] = ICData target-name '+', arg-desc CP#9
[16] = String 'fin'
[17] = StaticICData target 'dart.core::print', arg-desc CP#1
[18] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[19] = ICData target-name '+', arg-desc CP#9
[20] = StaticICData target 'dart.core::print', arg-desc CP#1
[21] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[22] = ICData target-name '+', arg-desc CP#9
[23] = StaticICData target 'dart.core::print', arg-desc CP#1
[24] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[25] = ICData target-name '+', arg-desc CP#9
[26] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#9
[27] = ArgDesc num-args 3, num-type-args 0, names []
[28] = ICData target-name 'completeError', arg-desc CP#27
[29] = EndClosureFunctionScope
[30] = Class dart.core::_Closure
[31] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[32] = Reserved
[33] = InstanceField dart.core::_Closure::_function_type_arguments
[34] = Reserved
[35] = EmptyTypeArguments
[36] = InstanceField dart.core::_Closure::_delayed_type_arguments
[37] = Reserved
[38] = InstanceField dart.core::_Closure::_function
[39] = Reserved
[40] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#1
[41] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#1
[42] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#1
[43] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[44] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#9
[45] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#3 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#4
LoadConstant r2, CP#4
LoadConstant r3, CP#4
Frame 10
CheckStack
Push r0
LoadFieldTOS CP#5
PopLocal r4
Push r4
LoadContextVar 7
StoreLocal r5
PushInt 0
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
PushInt 1
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
PushInt 1
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#8
IndirectStaticCall 4, CP#7
PopLocal r13
PushNull
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#10
StoreContextVar 0
Jump L3
Try #2 end:
Try #2 handler:
SetFrame 14
Push r0
LoadFieldTOS CP#5
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
PushNull
PushNull
PushConstant CP#12
InstanceCall 4, CP#13
AssertBoolean 0
PushTrue
IfNeStrictTOS
Jump L4
Push r4
LoadContextParent
PushInt 42
StoreContextVar 4
Jump L5
L4:
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushInt 2
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#14
IndirectStaticCall 4, CP#7
PopLocal r13
PushNull
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#15
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#5
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#16
PushConstant CP#17
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushInt 3
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#18
IndirectStaticCall 4, CP#7
PopLocal r12
PushNull
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#19
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#5
PopLocal r4
Push r4
LoadContextVar 10
PopLocal r4
PushConstant CP#16
PushConstant CP#20
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushInt 4
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#21
IndirectStaticCall 4, CP#7
PopLocal r12
PushNull
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#22
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#5
PopLocal r4
Push r4
LoadContextVar 10
PopLocal r4
PushConstant CP#16
PushConstant CP#23
IndirectStaticCall 1, CP#1
Drop1
Push r4
LoadContextParent
Push r4
LoadContextVar 0
StoreContextVar 14
Push r4
LoadContextParent
PushInt 5
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#7
PopLocal r12
PushNull
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#25
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#26
IndirectStaticCall 2, CP#9
Drop1
PushNull
ReturnTOS
Jump L12
Try #0 end:
Try #0 handler:
SetFrame 14
Push r0
LoadFieldTOS CP#5
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#28
Drop1
Jump L12
L12:
PushNull
ReturnTOS
L1:
Push r4
LoadContextVar 8
PopLocal r4
Push r5
PushInt 1
IfEqStrictTOS
Jump L13
Push r5
PushInt 2
IfEqStrictTOS
Jump L14
Push r5
PushInt 3
IfEqStrictTOS
Jump L15
Push r5
PushInt 4
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
PushInt 3
StoreContextVar 1
Allocate CP#21
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#22
Push r3
PushNull
StoreFieldTOS CP#24
Push r3
PushConstant CP#26
StoreFieldTOS CP#27
Push r3
PushConstant CP#0
StoreFieldTOS CP#29
Push r3
Push r0
StoreFieldTOS CP#1
PopLocal r2
Push r2
ReturnTOS
PushNull
ReturnTOS
}
ConstantPool {
[0] = ClosureFunction nested () dart.async::Future<dart.core::int> /* originally async */ ;
[1] = InstanceField dart.core::_Closure::_context
[2] = Reserved
[3] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
[4] = ArgDesc num-args 1, num-type-args 0, names []
[5] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#4
[6] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[7] = Null
[8] = ArgDesc num-args 4, num-type-args 0, names []
[9] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#8
[10] = ArgDesc num-args 2, num-type-args 0, names []
[11] = ICData target-name '+', arg-desc CP#10
[12] = Type dynamic
[13] = String 'fin'
[14] = StaticICData target 'dart.core::print', arg-desc CP#4
[15] = StaticICData target 'dart.core::print', arg-desc CP#4
[16] = StaticICData target 'dart.core::print', arg-desc CP#4
[17] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#10
[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#4
[32] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4
[33] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4
[34] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
[35] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#10
[36] = ICData get target-name 'future', arg-desc CP#4
[37] = EndClosureFunctionScope
}
Closure CP#6 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#7
LoadConstant r2, CP#7
LoadConstant r3, CP#7
Frame 8
CheckStack
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 4
StoreLocal r5
PushInt 0
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
PushInt 4
StoreContextVar 0
Push r4
LoadContextParent
Push r4
StoreContextVar 7
Try #1 start:
Push r4
LoadContextParent
LoadContextParent
PushInt 5
StoreContextVar 1
Push r4
LoadContextParent
PushInt 1
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#9
IndirectStaticCall 4, CP#8
PopLocal r11
PushNull
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#11
StoreContextVar 1
Jump L3
Jump L4
Try #1 end:
Try #1 handler:
SetFrame 12
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
MoveSpecial r8, exception
MoveSpecial r9, stackTrace
PushConstant CP#13
PushConstant CP#14
IndirectStaticCall 1, CP#4
Drop1
Push r8
Push r9
Throw 1
L3:
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
PushConstant CP#13
PushConstant CP#15
IndirectStaticCall 1, CP#4
Drop1
Push r4
LoadContextParent
PopLocal r4
Jump L5
L4:
Push r0
LoadFieldTOS CP#1
PopLocal r4
Push r4
LoadContextVar 7
PopLocal r4
PushConstant CP#13
PushConstant CP#16
IndirectStaticCall 1, CP#4
Drop1
Push r4
LoadContextParent
PopLocal r4
L5:
Push r4
LoadContextVar 0
Push r4
LoadContextVar 1
PushConstant CP#17
IndirectStaticCall 2, CP#10
Drop1
PushNull
ReturnTOS
Jump L6
Try #0 end:
Try #0 handler:
SetFrame 12
Push r0
LoadFieldTOS CP#1
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#19
Drop1
Jump L6
L6:
PushNull
ReturnTOS
L1:
Push r4
LoadContextVar 5
PopLocal r4
Jump L7
}
Closure CP#0 {
EntryFixed 1, 4
CheckStack
Push FP[-5]
LoadFieldTOS CP#1
PopLocal r0
AllocateContext 9
StoreLocal r1
Push r1
Push r0
StoreContextParent
PopLocal r0
Push r0
PushConstant CP#3
PushConstant CP#5
IndirectStaticCall 1, CP#4
StoreContextVar 0
Push r0
PushNull
StoreContextVar 1
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 2
Push r0
PushNull
StoreContextVar 3
Push r0
PushInt 0
StoreContextVar 4
Push r0
PushNull
StoreContextVar 5
Push r0
PushNull
StoreContextVar 6
Push r0
PushNull
StoreContextVar 7
Push r0
Allocate CP#21
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#22
Push r3
PushNull
StoreFieldTOS CP#24
Push r3
PushConstant CP#26
StoreFieldTOS CP#27
Push r3
PushConstant CP#6
StoreFieldTOS CP#29
Push r3
Push r0
StoreFieldTOS CP#1
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#31
IndirectStaticCall 1, CP#4
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#32
IndirectStaticCall 1, CP#4
StoreContextVar 2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#33
IndirectStaticCall 1, CP#4
StoreContextVar 3
PushConstant CP#34
Push r0
LoadContextVar 8
PushConstant CP#35
IndirectStaticCall 2, CP#10
Drop1
Push r0
LoadContextVar 0
InstanceCall 1, CP#36
ReturnTOS
Push r0
LoadContextParent
PopLocal r0
PushNull
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
PushNull
StoreContextVar 2
PushNull
PopLocal r2
Push r0
PushNull
StoreContextVar 3
Push r0
PushNull
StoreContextVar 4
Push r0
PushInt 0
StoreContextVar 5
Push r0
PushNull
StoreContextVar 6
Push r0
PushNull
StoreContextVar 7
Push r0
Allocate CP#17
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#18
Push r3
PushNull
StoreFieldTOS CP#20
Push r3
PushConstant CP#22
StoreFieldTOS CP#23
Push r3
PushConstant CP#3
StoreFieldTOS CP#25
Push r3
Push r0
StoreFieldTOS CP#5
StoreContextVar 8
Push r0
LoadContextVar 8
PushConstant CP#27
IndirectStaticCall 1, CP#1
PopLocal r2
Push r0
Push r0
LoadContextVar 8
PushConstant CP#28
IndirectStaticCall 1, CP#1
StoreContextVar 3
Push r0
Push r0
LoadContextVar 8
PushConstant CP#29
IndirectStaticCall 1, CP#1
StoreContextVar 4
PushConstant CP#30
Push r0
LoadContextVar 8
PushConstant CP#31
IndirectStaticCall 2, CP#9
Drop1
Push r0
LoadContextVar 1
InstanceCall 1, CP#32
ReturnTOS
PushNull
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] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) dynamic yielding ;
[4] = Null
[5] = InstanceField dart.core::_Closure::_context
[6] = Reserved
[7] = ArgDesc num-args 4, num-type-args 0, names []
[8] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#7
[9] = ArgDesc num-args 2, num-type-args 0, names []
[10] = ICData target-name '==', arg-desc CP#9
[11] = ArgDesc num-args 3, num-type-args 0, names []
[12] = StaticICData target 'dart.core::_AssertionError::_throwNew', arg-desc CP#11
[13] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#9
[14] = Type dynamic
[15] = ICData target-name 'completeError', arg-desc CP#11
[16] = EndClosureFunctionScope
[17] = Class dart.core::_Closure
[18] = InstanceField dart.core::_Closure::_instantiator_type_arguments
[19] = Reserved
[20] = InstanceField dart.core::_Closure::_function_type_arguments
[21] = Reserved
[22] = EmptyTypeArguments
[23] = InstanceField dart.core::_Closure::_delayed_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#9
[32] = ICData get target-name 'future', arg-desc CP#1
}
Closure CP#3 {
EntryOptional 1, 3, 0
LoadConstant r1, CP#4
LoadConstant r2, CP#4
LoadConstant r3, CP#4
Frame 6
CheckStack
Push r0
LoadFieldTOS CP#5
PopLocal r4
Push r4
LoadContextVar 5
StoreLocal r5
PushInt 0
IfNeStrictTOS
Jump L1
Push r4
Push r4
StoreContextVar 7
Try #0 start:
JumpIfNoAsserts L2
Push r4
PushInt 1
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#8
IndirectStaticCall 4, CP#7
PopLocal r8
PushNull
ReturnTOS
L6:
IfEqNull r2
Jump L3
Push r2
Push r3
Throw 1
L3:
JumpIfNoAsserts L2
Push r1
PushInt 42
InstanceCall 2, CP#10
AssertBoolean 0
PushTrue
IfEqStrictTOS
Jump L2
PushInt 0
PushInt 0
PushNull
PushConstant CP#12
IndirectStaticCall 3, CP#11
Drop1
L2:
Push r4
PushInt 7
StoreContextVar 2
Jump L4
L4:
Push r4
LoadContextVar 1
Push r4
LoadContextVar 2
PushConstant CP#13
IndirectStaticCall 2, CP#9
Drop1
PushNull
ReturnTOS
Jump L5
Try #0 end:
Try #0 handler:
SetFrame 10
Push r0
LoadFieldTOS CP#5
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#15
Drop1
Jump L5
L5:
PushNull
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
PushNull
ReturnTOS
}
ConstantPool {
}
]static method main() dynamic {}