library #lib; import self as self; import "dart:async" as asy; import "dart:core" as core; [@vm.bytecode= Bytecode { Entry 7 CheckStack AllocateContext 4 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#1 PushConstant CP#3 IndirectStaticCall 1, CP#2 StoreFieldTOS CP#4 Push r0 PushConstant CP#5 StoreFieldTOS CP#6 PushConstant CP#5 PopLocal r2 PushConstant CP#5 PopLocal r3 PushConstant CP#5 PopLocal r4 Push r0 PushConstant CP#7 StoreFieldTOS CP#8 Push r0 PushConstant CP#5 StoreFieldTOS CP#9 Allocate CP#19 StoreLocal r6 Push r6 PushConstant CP#5 StoreFieldTOS CP#20 Push r6 PushConstant CP#5 StoreFieldTOS CP#21 Push r6 PushConstant CP#10 StoreFieldTOS CP#22 Push r6 Push r0 StoreFieldTOS CP#11 PopLocal r5 Push r5 PushConstant CP#23 IndirectStaticCall 1, CP#2 StoreLocal r2 Drop1 Push r5 PushConstant CP#24 IndirectStaticCall 1, CP#2 StoreLocal r3 Drop1 Push r5 PushConstant CP#25 IndirectStaticCall 1, CP#2 StoreLocal r4 Drop1 PushConstant CP#26 Push r5 PushConstant CP#27 IndirectStaticCall 2, CP#13 Drop1 Push r0 LoadFieldTOS CP#4 InstanceCall1 1, CP#28 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#5 ReturnTOS } ConstantPool { [0] = ContextOffset parent [1] = TypeArgs [dart.core::int] [2] = ArgDesc num-args 1, num-type-args 0, names [] [3] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#2 [4] = ContextOffset var [3] [5] = Null [6] = ContextOffset var [2] [7] = Int 0 [8] = ContextOffset var [0] [9] = ContextOffset var [1] [10] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ; [11] = FieldOffset dart.core::_Closure::_context [12] = Int 42 [13] = ArgDesc num-args 2, num-type-args 0, names [] [14] = ICData target-name 'complete', 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] = FieldOffset dart.core::_Closure::_instantiator_type_arguments [21] = FieldOffset dart.core::_Closure::_function_type_arguments [22] = FieldOffset dart.core::_Closure::_function [23] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#2 [24] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#2 [25] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#2 [26] = TypeArgs [dynamic] [27] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#13 [28] = ICData get target-name 'future', arg-desc CP#2 } Closure CP#10 { EntryOptional 1, 3, 0 LoadConstant r1, CP#5 LoadConstant r2, CP#5 LoadConstant r3, CP#5 Frame 6 CheckStack Push r0 LoadFieldTOS CP#11 PopLocal r4 Push r4 LoadFieldTOS CP#8 StoreLocal r5 PushConstant CP#7 IfNeStrictNumTOS Jump L1 Push r4 PopLocal r6 Try #0 start: Push r4 PushConstant CP#12 StoreLocal r8 StoreFieldTOS CP#6 Push r8 Drop1 Jump L2 L2: Push r4 LoadFieldTOS CP#4 Push r4 LoadFieldTOS CP#6 InstanceCall1 2, CP#14 Drop1 PushConstant CP#5 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 LoadFieldTOS CP#4 Push r8 Push r9 InstanceCall1 3, CP#17 Drop1 Jump L3 L3: PushConstant CP#5 ReturnTOS L1: Trap } ]static method foo() → asy::Future /* originally async */ { final asy::Completer :async_completer = asy::Completer::sync(); asy::FutureOr :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 { #L1: { :return_value = 42; break #L1; } :async_completer.{asy::Completer::complete}(: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(:async_op); return :async_completer.{asy::Completer::future}; } [@vm.bytecode= Bytecode { Entry 4 CheckStack AllocateContext 2 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 Push FP[-6] StoreFieldTOS CP#1 Push r0 Push FP[-5] StoreFieldTOS CP#2 AllocateContext 9 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#3 PushConstant CP#5 IndirectStaticCall 1, CP#4 StoreFieldTOS CP#6 Push r0 PushConstant CP#7 StoreFieldTOS CP#8 PushConstant CP#7 PopLocal r2 Push r0 PushConstant CP#7 StoreFieldTOS CP#9 Push r0 PushConstant CP#7 StoreFieldTOS CP#10 Push r0 PushConstant CP#11 StoreFieldTOS CP#1 Push r0 PushConstant CP#7 StoreFieldTOS CP#2 Push r0 PushConstant CP#7 StoreFieldTOS CP#12 Push r0 PushConstant CP#7 StoreFieldTOS CP#13 Push r0 Allocate CP#29 StoreLocal r3 Push r3 PushConstant CP#7 StoreFieldTOS CP#30 Push r3 PushConstant CP#7 StoreFieldTOS CP#31 Push r3 PushConstant CP#14 StoreFieldTOS CP#32 Push r3 Push r0 StoreFieldTOS CP#15 StoreFieldTOS CP#17 Push r0 LoadFieldTOS CP#17 PushConstant CP#33 IndirectStaticCall 1, CP#4 StoreLocal r2 Drop1 Push r0 Push r0 LoadFieldTOS CP#17 PushConstant CP#34 IndirectStaticCall 1, CP#4 StoreLocal r3 StoreFieldTOS CP#9 Push r3 Drop1 Push r0 Push r0 LoadFieldTOS CP#17 PushConstant CP#35 IndirectStaticCall 1, CP#4 StoreLocal r3 StoreFieldTOS CP#10 Push r3 Drop1 PushConstant CP#36 Push r0 LoadFieldTOS CP#17 PushConstant CP#37 IndirectStaticCall 2, CP#22 Drop1 Push r0 LoadFieldTOS CP#6 InstanceCall1 1, CP#38 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#7 ReturnTOS } ConstantPool { [0] = ContextOffset parent [1] = ContextOffset var [0] [2] = ContextOffset var [1] [3] = TypeArgs [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] = ContextOffset var [8] [7] = Null [8] = ContextOffset var [7] [9] = ContextOffset var [3] [10] = ContextOffset var [4] [11] = Int 0 [12] = ContextOffset var [2] [13] = ContextOffset var [6] [14] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ; [15] = FieldOffset dart.core::_Closure::_context [16] = Int 1 [17] = ContextOffset var [5] [18] = ArgDesc num-args 4, num-type-args 0, names [] [19] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#18 [20] = Int 2 [21] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#18 [22] = ArgDesc num-args 2, num-type-args 0, names [] [23] = ICData target-name '+', arg-desc CP#22 [24] = ICData target-name 'complete', arg-desc CP#22 [25] = Type dynamic [26] = ArgDesc num-args 3, num-type-args 0, names [] [27] = ICData target-name 'completeError', arg-desc CP#26 [28] = EndClosureFunctionScope [29] = Class dart.core::_Closure [30] = FieldOffset dart.core::_Closure::_instantiator_type_arguments [31] = FieldOffset dart.core::_Closure::_function_type_arguments [32] = FieldOffset dart.core::_Closure::_function [33] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#4 [34] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4 [35] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4 [36] = TypeArgs [dynamic] [37] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#22 [38] = ICData get target-name 'future', arg-desc CP#4 } Closure CP#14 { EntryOptional 1, 3, 0 LoadConstant r1, CP#7 LoadConstant r2, CP#7 LoadConstant r3, CP#7 Frame 6 CheckStack Push r0 LoadFieldTOS CP#15 PopLocal r4 Push r4 LoadFieldTOS CP#1 StoreLocal r5 PushConstant CP#11 IfNeStrictNumTOS Jump L1 Push r4 Push r4 StoreFieldTOS CP#12 Try #0 start: Push r4 PushConstant CP#16 StoreFieldTOS CP#1 Push r4 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#1 Push r4 LoadFieldTOS CP#9 Push r4 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#17 PushConstant CP#19 IndirectStaticCall 4, CP#18 PopLocal r8 PushConstant CP#7 ReturnTOS L6: IfEqNull r2 Jump L2 Push r2 Push r3 Throw 1 L2: Push r4 Push r1 StoreLocal r8 StoreFieldTOS CP#13 Push r8 Drop1 Push r4 PushConstant CP#20 StoreFieldTOS CP#1 Push r4 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#2 Push r4 LoadFieldTOS CP#9 Push r4 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#17 PushConstant CP#21 IndirectStaticCall 4, CP#18 PopLocal r9 PushConstant CP#7 ReturnTOS L7: IfEqNull r2 Jump L3 Push r2 Push r3 Throw 1 L3: Push r4 Push r4 LoadFieldTOS CP#13 Push r1 InstanceCall1 2, CP#23 StoreLocal r8 StoreFieldTOS CP#8 Push r8 Drop1 Jump L4 L4: Push r4 LoadFieldTOS CP#6 Push r4 LoadFieldTOS CP#8 InstanceCall1 2, CP#24 Drop1 PushConstant CP#7 ReturnTOS Jump L5 Try #0 end: Try #0 handler: Push r0 LoadFieldTOS CP#15 PopLocal r4 Push r4 LoadFieldTOS CP#12 PopLocal r4 MoveSpecial r6, exception MoveSpecial r7, stackTrace Push r6 PopLocal r8 Push r7 PopLocal r9 Push r4 LoadFieldTOS CP#6 Push r8 Push r9 InstanceCall1 3, CP#27 Drop1 Jump L5 L5: PushConstant CP#7 ReturnTOS L1: Push r4 LoadFieldTOS CP#2 PopLocal r4 Push r5 PushConstant CP#16 IfEqStrictNumTOS Jump L6 Jump L7 } ]static method simpleAsyncAwait(asy::Future a, asy::Future b) → asy::Future /* originally async */ { final asy::Completer :async_completer = asy::Completer::sync(); asy::FutureOr :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 { #L2: { [yield] let dynamic #t1 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null; :async_temporary_0 = :result; [yield] let dynamic #t2 = asy::_awaitHelper(b, :async_op_then, :async_op_error, :async_op) in null; :return_value = :async_temporary_0.{core::num::+}(:result); break #L2; } :async_completer.{asy::Completer::complete}(: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(:async_op); return :async_completer.{asy::Completer::future}; } [@vm.bytecode= Bytecode { Entry 4 CheckStack AllocateContext 1 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 Push FP[-5] StoreFieldTOS CP#1 AllocateContext 10 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#2 PushConstant CP#4 IndirectStaticCall 1, CP#3 StoreFieldTOS CP#5 Push r0 PushConstant CP#6 StoreFieldTOS CP#7 PushConstant CP#6 PopLocal r2 Push r0 PushConstant CP#6 StoreFieldTOS CP#8 Push r0 PushConstant CP#6 StoreFieldTOS CP#9 Push r0 PushConstant CP#10 StoreFieldTOS CP#1 Push r0 PushConstant CP#6 StoreFieldTOS CP#11 Push r0 PushConstant CP#6 StoreFieldTOS CP#12 Push r0 PushConstant CP#6 StoreFieldTOS CP#13 Push r0 PushConstant CP#6 StoreFieldTOS CP#14 Push r0 Allocate CP#42 StoreLocal r3 Push r3 PushConstant CP#6 StoreFieldTOS CP#43 Push r3 PushConstant CP#6 StoreFieldTOS CP#44 Push r3 PushConstant CP#15 StoreFieldTOS CP#45 Push r3 Push r0 StoreFieldTOS CP#16 StoreFieldTOS CP#28 Push r0 LoadFieldTOS CP#28 PushConstant CP#46 IndirectStaticCall 1, CP#3 StoreLocal r2 Drop1 Push r0 Push r0 LoadFieldTOS CP#28 PushConstant CP#47 IndirectStaticCall 1, CP#3 StoreLocal r3 StoreFieldTOS CP#8 Push r3 Drop1 Push r0 Push r0 LoadFieldTOS CP#28 PushConstant CP#48 IndirectStaticCall 1, CP#3 StoreLocal r3 StoreFieldTOS CP#9 Push r3 Drop1 PushConstant CP#49 Push r0 LoadFieldTOS CP#28 PushConstant CP#50 IndirectStaticCall 2, CP#18 Drop1 Push r0 LoadFieldTOS CP#5 InstanceCall1 1, CP#51 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#6 ReturnTOS } ConstantPool { [0] = ContextOffset parent [1] = ContextOffset var [0] [2] = TypeArgs [dart.core::int] [3] = ArgDesc num-args 1, num-type-args 0, names [] [4] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#3 [5] = ContextOffset var [9] [6] = Null [7] = ContextOffset var [8] [8] = ContextOffset var [5] [9] = ContextOffset var [6] [10] = Int 0 [11] = ContextOffset var [1] [12] = ContextOffset var [4] [13] = ContextOffset var [3] [14] = ContextOffset var [2] [15] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ; [16] = FieldOffset dart.core::_Closure::_context [17] = Int 10 [18] = ArgDesc num-args 2, num-type-args 0, names [] [19] = ICData target-name '<', arg-desc CP#18 [20] = Bool true [21] = ICData get target-name 'iterator', arg-desc CP#3 [22] = ICData target-name 'moveNext', arg-desc CP#3 [23] = ICData get target-name 'current', arg-desc CP#3 [24] = ICData target-name '+', arg-desc CP#18 [25] = Int 1 [26] = ArgDesc num-args 0, num-type-args 0, names [] [27] = StaticICData target '#lib::foo', arg-desc CP#26 [28] = ContextOffset var [7] [29] = ArgDesc num-args 4, num-type-args 0, names [] [30] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#29 [31] = ICData target-name '+', arg-desc CP#18 [32] = ICData target-name '+', arg-desc CP#18 [33] = ICData target-name '+', arg-desc CP#18 [34] = ICData target-name '<', arg-desc CP#18 [35] = ICData target-name '+', arg-desc CP#18 [36] = ICData target-name '+', arg-desc CP#18 [37] = ICData target-name 'complete', arg-desc CP#18 [38] = Type dynamic [39] = ArgDesc num-args 3, num-type-args 0, names [] [40] = ICData target-name 'completeError', arg-desc CP#39 [41] = EndClosureFunctionScope [42] = Class dart.core::_Closure [43] = FieldOffset dart.core::_Closure::_instantiator_type_arguments [44] = FieldOffset dart.core::_Closure::_function_type_arguments [45] = FieldOffset dart.core::_Closure::_function [46] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#3 [47] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#3 [48] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#3 [49] = TypeArgs [dynamic] [50] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#18 [51] = ICData get target-name 'future', arg-desc CP#3 } Closure CP#15 { EntryOptional 1, 3, 0 LoadConstant r1, CP#6 LoadConstant r2, CP#6 LoadConstant r3, CP#6 Frame 7 CheckStack Push r0 LoadFieldTOS CP#16 PopLocal r4 Push r4 LoadFieldTOS CP#1 StoreLocal r5 PushConstant CP#10 IfNeStrictNumTOS Jump L1 Push r4 Push r4 StoreFieldTOS CP#12 Try #0 start: AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 PushConstant CP#10 StoreFieldTOS CP#1 AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 PushConstant CP#10 StoreFieldTOS CP#1 L6: CheckStack Push r4 LoadFieldTOS CP#1 PushConstant CP#17 InstanceCall1 2, CP#19 PushConstant CP#20 IfNeStrictTOS Jump L2 AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 InstanceCall1 1, CP#21 PopLocal r8 Push r4 Push r8 StoreFieldTOS CP#1 L5: CheckStack Push r4 LoadFieldTOS CP#1 StoreLocal r8 InstanceCall1 1, CP#22 PushConstant CP#20 IfNeStrictTOS Jump L3 AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 Push r8 InstanceCall1 1, CP#23 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 StoreLocal r9 StoreFieldTOS CP#14 Push r9 Drop1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 Push r4 LoadFieldTOS CP#1 InstanceCall1 2, CP#24 StoreLocal r9 StoreFieldTOS CP#13 Push r9 Drop1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 PushConstant CP#25 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#11 PushConstant CP#27 IndirectStaticCall 0, CP#26 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#8 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#9 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#28 PushConstant CP#30 IndirectStaticCall 4, CP#29 PopLocal r10 PushConstant CP#6 ReturnTOS L11: IfEqNull r2 Jump L4 Push r2 Push r3 Throw 1 L4: Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#14 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#13 Push r1 InstanceCall1 2, CP#31 InstanceCall1 2, CP#32 StoreLocal r9 StoreFieldTOS CP#1 Push r9 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L5 L3: Push r4 LoadFieldTOS CP#0 PopLocal r4 Push r4 CloneContext PopLocal r4 Push r4 Push r4 LoadFieldTOS CP#1 PushConstant CP#25 InstanceCall1 2, CP#33 StoreLocal r8 StoreFieldTOS CP#1 Push r8 Drop1 Jump L6 L2: Push r4 LoadFieldTOS CP#0 PopLocal r4 PushConstant CP#10 PopLocal r8 L8: CheckStack Push r8 PushConstant CP#17 InstanceCall1 2, CP#34 PushConstant CP#20 IfNeStrictTOS Jump L7 Push r4 Push r4 LoadFieldTOS CP#1 Push r8 InstanceCall1 2, CP#35 StoreLocal r9 StoreFieldTOS CP#1 Push r9 Drop1 Push r8 PushConstant CP#25 InstanceCall1 2, CP#36 StoreLocal r8 Drop1 Jump L8 L7: Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r8 StoreFieldTOS CP#7 Push r8 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L9 Push r4 LoadFieldTOS CP#0 PopLocal r4 L9: Push r4 LoadFieldTOS CP#5 Push r4 LoadFieldTOS CP#7 InstanceCall1 2, CP#37 Drop1 PushConstant CP#6 ReturnTOS Jump L10 Try #0 end: Try #0 handler: Push r0 LoadFieldTOS CP#16 PopLocal r4 Push r4 LoadFieldTOS CP#12 PopLocal r4 MoveSpecial r6, exception MoveSpecial r7, stackTrace Push r6 PopLocal r8 Push r7 PopLocal r9 Push r4 LoadFieldTOS CP#5 Push r8 Push r9 InstanceCall1 3, CP#40 Drop1 Jump L10 L10: PushConstant CP#6 ReturnTOS L1: Push r4 LoadFieldTOS CP#11 PopLocal r4 Jump L11 } ]static method loops(core::List list) → asy::Future /* originally async */ { final asy::Completer :async_completer = asy::Completer::sync(); asy::FutureOr :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 { #L3: { 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 #t3 = 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 #L3; } :async_completer.{asy::Completer::complete}(: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(:async_op); return :async_completer.{asy::Completer::future}; } [@vm.bytecode= Bytecode { Entry 4 CheckStack AllocateContext 3 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 Push FP[-7] StoreFieldTOS CP#1 Push r0 Push FP[-6] StoreFieldTOS CP#2 Push r0 Push FP[-5] StoreFieldTOS CP#3 AllocateContext 13 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#4 PushConstant CP#6 IndirectStaticCall 1, CP#5 StoreFieldTOS CP#7 Push r0 PushConstant CP#8 StoreFieldTOS CP#9 PushConstant CP#8 PopLocal r2 Push r0 PushConstant CP#8 StoreFieldTOS CP#10 Push r0 PushConstant CP#8 StoreFieldTOS CP#11 Push r0 PushConstant CP#12 StoreFieldTOS CP#1 Push r0 PushConstant CP#8 StoreFieldTOS CP#2 Push r0 PushConstant CP#8 StoreFieldTOS CP#13 Push r0 PushConstant CP#8 StoreFieldTOS CP#14 Push r0 PushConstant CP#8 StoreFieldTOS CP#15 Push r0 PushConstant CP#8 StoreFieldTOS CP#16 Push r0 PushConstant CP#8 StoreFieldTOS CP#17 Push r0 PushConstant CP#8 StoreFieldTOS CP#3 Push r0 Allocate CP#51 StoreLocal r3 Push r3 PushConstant CP#8 StoreFieldTOS CP#52 Push r3 PushConstant CP#8 StoreFieldTOS CP#53 Push r3 PushConstant CP#18 StoreFieldTOS CP#54 Push r3 Push r0 StoreFieldTOS CP#19 StoreFieldTOS CP#21 Push r0 LoadFieldTOS CP#21 PushConstant CP#55 IndirectStaticCall 1, CP#5 StoreLocal r2 Drop1 Push r0 Push r0 LoadFieldTOS CP#21 PushConstant CP#56 IndirectStaticCall 1, CP#5 StoreLocal r3 StoreFieldTOS CP#10 Push r3 Drop1 Push r0 Push r0 LoadFieldTOS CP#21 PushConstant CP#57 IndirectStaticCall 1, CP#5 StoreLocal r3 StoreFieldTOS CP#11 Push r3 Drop1 PushConstant CP#58 Push r0 LoadFieldTOS CP#21 PushConstant CP#59 IndirectStaticCall 2, CP#24 Drop1 Push r0 LoadFieldTOS CP#7 InstanceCall1 1, CP#60 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#8 ReturnTOS } ConstantPool { [0] = ContextOffset parent [1] = ContextOffset var [0] [2] = ContextOffset var [1] [3] = ContextOffset var [2] [4] = TypeArgs [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] = ContextOffset var [12] [8] = Null [9] = ContextOffset var [9] [10] = ContextOffset var [6] [11] = ContextOffset var [7] [12] = Int 0 [13] = ContextOffset var [3] [14] = ContextOffset var [4] [15] = ContextOffset var [5] [16] = ContextOffset var [10] [17] = ContextOffset var [11] [18] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ; [19] = FieldOffset dart.core::_Closure::_context [20] = Int 1 [21] = ContextOffset var [8] [22] = ArgDesc num-args 4, num-type-args 0, names [] [23] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [24] = ArgDesc num-args 2, num-type-args 0, names [] [25] = ICData target-name '+', arg-desc CP#24 [26] = Type dynamic [27] = Type dart.core::Error [28] = ICData target-name 'dart.core::_instanceOf', arg-desc CP#22 [29] = Bool true [30] = Int 42 [31] = Int 2 [32] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [33] = ICData target-name '+', arg-desc CP#24 [34] = String 'fin' [35] = StaticICData target 'dart.core::print', arg-desc CP#5 [36] = Int 3 [37] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [38] = ICData target-name '+', arg-desc CP#24 [39] = StaticICData target 'dart.core::print', arg-desc CP#5 [40] = Int 4 [41] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [42] = ICData target-name '+', arg-desc CP#24 [43] = StaticICData target 'dart.core::print', arg-desc CP#5 [44] = Int 5 [45] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [46] = ICData target-name '+', arg-desc CP#24 [47] = ICData target-name 'complete', arg-desc CP#24 [48] = ArgDesc num-args 3, num-type-args 0, names [] [49] = ICData target-name 'completeError', arg-desc CP#48 [50] = EndClosureFunctionScope [51] = Class dart.core::_Closure [52] = FieldOffset dart.core::_Closure::_instantiator_type_arguments [53] = FieldOffset dart.core::_Closure::_function_type_arguments [54] = FieldOffset dart.core::_Closure::_function [55] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#5 [56] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#5 [57] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#5 [58] = TypeArgs [dynamic] [59] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#24 [60] = ICData get target-name 'future', arg-desc CP#5 } Closure CP#18 { EntryOptional 1, 3, 0 LoadConstant r1, CP#8 LoadConstant r2, CP#8 LoadConstant r3, CP#8 Frame 10 CheckStack Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#1 StoreLocal r5 PushConstant CP#12 IfNeStrictNumTOS Jump L1 Push r4 Push r4 StoreFieldTOS CP#13 Try #0 start: AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 PushConstant CP#20 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#14 Try #1 start: Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#15 Try #2 start: Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r12 StoreFieldTOS CP#3 Push r12 Drop1 Push r4 LoadFieldTOS CP#0 PushConstant CP#20 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#23 IndirectStaticCall 4, CP#22 PopLocal r13 PushConstant CP#8 ReturnTOS L13: IfEqNull r2 Jump L2 Push r2 Push r3 Throw 1 L2: Push r4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r1 InstanceCall1 2, CP#25 StoreLocal r12 StoreFieldTOS CP#1 Push r12 Drop1 Jump L3 Try #2 end: Try #2 handler: Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#15 PopLocal r4 MoveSpecial r10, exception MoveSpecial r11, stackTrace Push r4 LoadFieldTOS CP#0 Push r10 StoreFieldTOS CP#16 Push r4 LoadFieldTOS CP#0 Push r11 StoreFieldTOS CP#17 AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 Push r10 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#1 PushConstant CP#8 PushConstant CP#8 PushConstant CP#27 InstanceCall1 4, CP#28 PushConstant CP#29 IfNeStrictTOS Jump L4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 PushConstant CP#30 StoreLocal r12 StoreFieldTOS CP#9 Push r12 Drop1 Jump L5 L4: Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#1 StoreLocal r12 StoreFieldTOS CP#3 Push r12 Drop1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 PushConstant CP#31 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#32 IndirectStaticCall 4, CP#22 PopLocal r13 PushConstant CP#8 ReturnTOS L14: IfEqNull r2 Jump L6 Push r2 Push r3 Throw 1 L6: Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r1 InstanceCall1 2, CP#33 StoreLocal r12 StoreFieldTOS CP#1 Push r12 Drop1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#16 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#17 Throw 1 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L3 L3: Jump L7 Try #1 end: Try #1 handler: Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#14 PopLocal r4 MoveSpecial r8, exception MoveSpecial r9, stackTrace Push r4 LoadFieldTOS CP#0 Push r8 StoreFieldTOS CP#16 Push r4 LoadFieldTOS CP#0 Push r9 StoreFieldTOS CP#17 PushConstant CP#34 PushConstant CP#35 IndirectStaticCall 1, CP#5 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#3 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PushConstant CP#36 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#37 IndirectStaticCall 4, CP#22 PopLocal r12 PushConstant CP#8 ReturnTOS L15: IfEqNull r2 Jump L8 Push r2 Push r3 Throw 1 L8: Push r4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r1 InstanceCall1 2, CP#38 StoreLocal r10 StoreFieldTOS CP#1 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#9 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L9 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#16 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#17 Throw 1 L5: Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#14 PopLocal r4 PushConstant CP#34 PushConstant CP#39 IndirectStaticCall 1, CP#5 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#3 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PushConstant CP#40 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#41 IndirectStaticCall 4, CP#22 PopLocal r12 PushConstant CP#8 ReturnTOS L16: IfEqNull r2 Jump L10 Push r2 Push r3 Throw 1 L10: Push r4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r1 InstanceCall1 2, CP#42 StoreLocal r10 StoreFieldTOS CP#1 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#9 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L9 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L9 L7: Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#14 PopLocal r4 PushConstant CP#34 PushConstant CP#43 IndirectStaticCall 1, CP#5 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#3 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PushConstant CP#44 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#2 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#10 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#45 IndirectStaticCall 4, CP#22 PopLocal r12 PushConstant CP#8 ReturnTOS L17: IfEqNull r2 Jump L11 Push r2 Push r3 Throw 1 L11: Push r4 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#3 Push r1 InstanceCall1 2, CP#46 StoreLocal r10 StoreFieldTOS CP#1 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#1 StoreLocal r10 StoreFieldTOS CP#9 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L9 Push r4 LoadFieldTOS CP#0 PopLocal r4 L9: Push r4 LoadFieldTOS CP#7 Push r4 LoadFieldTOS CP#9 InstanceCall1 2, CP#47 Drop1 PushConstant CP#8 ReturnTOS Jump L12 Try #0 end: Try #0 handler: Push r0 LoadFieldTOS CP#19 PopLocal r4 Push r4 LoadFieldTOS CP#13 PopLocal r4 MoveSpecial r6, exception MoveSpecial r7, stackTrace Push r6 PopLocal r8 Push r7 PopLocal r9 Push r4 LoadFieldTOS CP#7 Push r8 Push r9 InstanceCall1 3, CP#49 Drop1 Jump L12 L12: PushConstant CP#8 ReturnTOS L1: Push r4 LoadFieldTOS CP#2 PopLocal r4 Push r5 PushConstant CP#20 IfEqStrictNumTOS Jump L13 Push r5 PushConstant CP#31 IfEqStrictNumTOS Jump L14 Push r5 PushConstant CP#36 IfEqStrictNumTOS Jump L15 Push r5 PushConstant CP#40 IfEqStrictNumTOS Jump L16 Jump L17 } ]static method tryCatchRethrow(asy::Future a, asy::Future b, asy::Future c) → asy::Future /* originally async */ { final asy::Completer :async_completer = asy::Completer::sync(); asy::FutureOr :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 { #L4: { core::int x = 1; try try { :async_temporary_0 = x; [yield] let dynamic #t4 = 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 #L4; } :async_temporary_0 = x; [yield] let dynamic #t5 = 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 #t6 = asy::_awaitHelper(c, :async_op_then, :async_op_error, :async_op) in null; x = :async_temporary_0.{core::num::+}(:result); :return_value = x; break #L4; } } :async_completer.{asy::Completer::complete}(: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(:async_op); return :async_completer.{asy::Completer::future}; } [@vm.bytecode= Bytecode { Entry 4 CheckStack AllocateContext 1 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 Push FP[-5] StoreFieldTOS CP#1 AllocateContext 1 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#2 StoreFieldTOS CP#1 Allocate CP#35 StoreLocal r3 Push r3 PushConstant CP#9 StoreFieldTOS CP#36 Push r3 PushConstant CP#9 StoreFieldTOS CP#37 Push r3 PushConstant CP#3 StoreFieldTOS CP#38 Push r3 Push r0 StoreFieldTOS CP#4 PopLocal r2 Push r2 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#9 ReturnTOS } ConstantPool { [0] = ContextOffset parent [1] = ContextOffset var [0] [2] = Int 3 [3] = ClosureFunction nested () → dart.async::Future /* originally async */ ; [4] = FieldOffset dart.core::_Closure::_context [5] = TypeArgs [dart.core::int] [6] = ArgDesc num-args 1, num-type-args 0, names [] [7] = StaticICData target 'dart.async::Completer::sync', arg-desc CP#6 [8] = ContextOffset var [8] [9] = Null [10] = ContextOffset var [7] [11] = ContextOffset var [4] [12] = ContextOffset var [5] [13] = Int 0 [14] = ContextOffset var [1] [15] = ContextOffset var [2] [16] = ContextOffset var [3] [17] = ClosureFunction :async_op ([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding ; [18] = Int 4 [19] = Int 5 [20] = Int 1 [21] = ContextOffset var [6] [22] = ArgDesc num-args 4, num-type-args 0, names [] [23] = StaticICData target 'dart.async::_awaitHelper', arg-desc CP#22 [24] = ArgDesc num-args 2, num-type-args 0, names [] [25] = ICData target-name '+', arg-desc CP#24 [26] = Type dynamic [27] = String 'fin' [28] = StaticICData target 'dart.core::print', arg-desc CP#6 [29] = StaticICData target 'dart.core::print', arg-desc CP#6 [30] = StaticICData target 'dart.core::print', arg-desc CP#6 [31] = ICData target-name 'complete', arg-desc CP#24 [32] = ArgDesc num-args 3, num-type-args 0, names [] [33] = ICData target-name 'completeError', arg-desc CP#32 [34] = EndClosureFunctionScope [35] = Class dart.core::_Closure [36] = FieldOffset dart.core::_Closure::_instantiator_type_arguments [37] = FieldOffset dart.core::_Closure::_function_type_arguments [38] = FieldOffset dart.core::_Closure::_function [39] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#6 [40] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#6 [41] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#6 [42] = TypeArgs [dynamic] [43] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#24 [44] = ICData get target-name 'future', arg-desc CP#6 [45] = EndClosureFunctionScope } Closure CP#17 { EntryOptional 1, 3, 0 LoadConstant r1, CP#9 LoadConstant r2, CP#9 LoadConstant r3, CP#9 Frame 8 CheckStack Push r0 LoadFieldTOS CP#4 PopLocal r4 Push r4 LoadFieldTOS CP#1 StoreLocal r5 PushConstant CP#13 IfNeStrictNumTOS Jump L1 Push r4 Push r4 StoreFieldTOS CP#15 Try #0 start: AllocateContext 1 StoreLocal r5 Push r5 Push r4 StoreFieldTOS CP#0 PopLocal r4 Push r4 PushConstant CP#18 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#16 Try #1 start: Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 PushConstant CP#19 StoreLocal r10 StoreFieldTOS CP#1 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 PushConstant CP#20 StoreFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 Push r4 StoreFieldTOS CP#14 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#11 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#12 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#21 PushConstant CP#23 IndirectStaticCall 4, CP#22 PopLocal r11 PushConstant CP#9 ReturnTOS L6: Push r4 Push r1 StoreLocal r10 StoreFieldTOS CP#1 Push r10 Drop1 Push r4 LoadFieldTOS CP#0 Push r4 LoadFieldTOS CP#0 LoadFieldTOS CP#0 LoadFieldTOS CP#1 Push r4 LoadFieldTOS CP#1 InstanceCall1 2, CP#25 StoreLocal r10 StoreFieldTOS CP#10 Push r10 Drop1 Jump L2 Jump L3 Try #1 end: Try #1 handler: Push r0 LoadFieldTOS CP#4 PopLocal r4 Push r4 LoadFieldTOS CP#16 PopLocal r4 MoveSpecial r8, exception MoveSpecial r9, stackTrace PushConstant CP#27 PushConstant CP#28 IndirectStaticCall 1, CP#6 Drop1 Push r8 Push r9 Throw 1 L2: Push r0 LoadFieldTOS CP#4 PopLocal r4 Push r4 LoadFieldTOS CP#16 PopLocal r4 PushConstant CP#27 PushConstant CP#29 IndirectStaticCall 1, CP#6 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 Jump L4 L3: Push r0 LoadFieldTOS CP#4 PopLocal r4 Push r4 LoadFieldTOS CP#16 PopLocal r4 PushConstant CP#27 PushConstant CP#30 IndirectStaticCall 1, CP#6 Drop1 Push r4 LoadFieldTOS CP#0 PopLocal r4 L4: Push r4 LoadFieldTOS CP#8 Push r4 LoadFieldTOS CP#10 InstanceCall1 2, CP#31 Drop1 PushConstant CP#9 ReturnTOS Jump L5 Try #0 end: Try #0 handler: Push r0 LoadFieldTOS CP#4 PopLocal r4 Push r4 LoadFieldTOS CP#15 PopLocal r4 MoveSpecial r6, exception MoveSpecial r7, stackTrace Push r6 PopLocal r8 Push r7 PopLocal r9 Push r4 LoadFieldTOS CP#8 Push r8 Push r9 InstanceCall1 3, CP#33 Drop1 Jump L5 L5: PushConstant CP#9 ReturnTOS L1: Push r4 LoadFieldTOS CP#14 PopLocal r4 Jump L6 } Closure CP#3 { Entry 4 CheckStack Push FP[-5] LoadFieldTOS CP#4 PopLocal r0 AllocateContext 9 StoreLocal r1 Push r1 Push r0 StoreFieldTOS CP#0 PopLocal r0 Push r0 PushConstant CP#5 PushConstant CP#7 IndirectStaticCall 1, CP#6 StoreFieldTOS CP#8 Push r0 PushConstant CP#9 StoreFieldTOS CP#10 PushConstant CP#9 PopLocal r2 Push r0 PushConstant CP#9 StoreFieldTOS CP#11 Push r0 PushConstant CP#9 StoreFieldTOS CP#12 Push r0 PushConstant CP#13 StoreFieldTOS CP#1 Push r0 PushConstant CP#9 StoreFieldTOS CP#14 Push r0 PushConstant CP#9 StoreFieldTOS CP#15 Push r0 PushConstant CP#9 StoreFieldTOS CP#16 Push r0 Allocate CP#35 StoreLocal r3 Push r3 PushConstant CP#9 StoreFieldTOS CP#36 Push r3 PushConstant CP#9 StoreFieldTOS CP#37 Push r3 PushConstant CP#17 StoreFieldTOS CP#38 Push r3 Push r0 StoreFieldTOS CP#4 StoreFieldTOS CP#21 Push r0 LoadFieldTOS CP#21 PushConstant CP#39 IndirectStaticCall 1, CP#6 StoreLocal r2 Drop1 Push r0 Push r0 LoadFieldTOS CP#21 PushConstant CP#40 IndirectStaticCall 1, CP#6 StoreLocal r3 StoreFieldTOS CP#11 Push r3 Drop1 Push r0 Push r0 LoadFieldTOS CP#21 PushConstant CP#41 IndirectStaticCall 1, CP#6 StoreLocal r3 StoreFieldTOS CP#12 Push r3 Drop1 PushConstant CP#42 Push r0 LoadFieldTOS CP#21 PushConstant CP#43 IndirectStaticCall 2, CP#24 Drop1 Push r0 LoadFieldTOS CP#8 InstanceCall1 1, CP#44 ReturnTOS Push r0 LoadFieldTOS CP#0 PopLocal r0 PushConstant CP#9 ReturnTOS } ]static method closure(asy::Future a) → dynamic { core::int x = 3; function nested() → asy::Future /* originally async */ { final asy::Completer :async_completer = asy::Completer::sync(); asy::FutureOr :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 { #L5: { core::int y = 4; try { x = 5; [yield] let dynamic #t7 = asy::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null; y = :result; :return_value = x.{core::num::+}(y); break #L5; } finally { core::print("fin"); } } :async_completer.{asy::Completer::complete}(: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(:async_op); return :async_completer.{asy::Completer::future}; } return nested; } [@vm.bytecode= Bytecode { Entry 0 CheckStack PushConstant CP#0 ReturnTOS } ConstantPool { [0] = Null } ]static method main() → dynamic {}