library #lib; import self as self; import "dart:async" as asy; import "dart:core" as core; [@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 (dart.async::Future x) → dart.async::Future /* originally async */ ; [1] = InstanceField dart.core::_Closure::_context [2] = Reserved [3] = Type dart.async::Future [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) → asy::Future asyncInFieldInitializer = (asy::Future x) → 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; 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(: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 /* 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 { #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(: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 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 { #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(: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 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 { #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(: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 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 { #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(: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 /* 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 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 { #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(: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 a) → 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; 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(:async_op); return :async_completer.{asy::Completer::future}; } [@vm.bytecode= Bytecode { Entry 0 CheckStack PushNull ReturnTOS } ConstantPool { } ]static method main() → dynamic {}