68de477535
Corresponding VM changes: https://dart-review.googlesource.com/c/sdk/+/101062 On a large app, size of bytecode instructions: Before: 12115384 After: 6282376 (-48.1%) Total size of the app: Before: 29790240 After: 23681504 (-20.5%) Change-Id: Idd8f97e991236c25d663d1bcf18a51a53e73a2b7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99400 Reviewed-by: Ryan Macnak <rmacnak@google.com>
2489 lines
72 KiB
Plaintext
2489 lines
72 KiB
Plaintext
main = #lib::main;
|
|
[@vm.bytecode=
|
|
ComponentBytecodeMetadata {
|
|
|
|
Bytecode (version: stable)
|
|
Main library: #lib
|
|
|
|
}
|
|
] [@vm.bytecode=
|
|
MembersBytecodeMetadata {
|
|
|
|
Members {
|
|
Field 'asyncInFieldInitializer', type = FunctionType (dart:async::Future < dart:core::int >) -> dart:async::Future < dart:core::Null >, getter = 'get:asyncInFieldInitializer', reflectable, static
|
|
initializer
|
|
Bytecode {
|
|
Entry 3
|
|
CheckStack 0
|
|
AllocateClosure CP#0
|
|
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 0
|
|
[1] = InstanceField dart:core::_Closure::_context (field)
|
|
[2] = Reserved
|
|
[3] = Type dart:async::Future < dart:core::int >
|
|
[4] = ObjectRef 'x'
|
|
[5] = SubtypeTestCache
|
|
[6] = Class dart:async::_AsyncAwaitCompleter
|
|
[7] = ObjectRef < dart:core::Null >
|
|
[8] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = ClosureFunction 1
|
|
[11] = ObjectRef null
|
|
[12] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[13] = Reserved
|
|
[14] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[15] = Reserved
|
|
[16] = Type dynamic
|
|
[17] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[18] = Reserved
|
|
[19] = EndClosureFunctionScope
|
|
[20] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[21] = Reserved
|
|
[22] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[23] = Reserved
|
|
[24] = EmptyTypeArguments
|
|
[25] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[26] = Reserved
|
|
[27] = InstanceField dart:core::_Closure::_function (field)
|
|
[28] = Reserved
|
|
[29] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[30] = Reserved
|
|
[31] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[32] = Reserved
|
|
[33] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[34] = Reserved
|
|
[35] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[36] = ICData dynamic target-name 'start', arg-desc CP#35
|
|
[37] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[38] = Reserved
|
|
[39] = EndClosureFunctionScope
|
|
}
|
|
Closure #lib::asyncInFieldInitializer (field)::'<anonymous closure>' (dart:async::Future < dart:core::int > x) -> dart:async::Future < dart:core::Null >
|
|
ClosureCode {
|
|
EntryFixed 2, 4
|
|
CheckStack 0
|
|
Push FP[-6]
|
|
LoadFieldTOS CP#1
|
|
PopLocal r0
|
|
AllocateContext 0, 9
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 0
|
|
Push FP[-5]
|
|
PushConstant CP#3
|
|
PushNull
|
|
PushNull
|
|
PushConstant CP#4
|
|
AssertAssignable 0, CP#5
|
|
Drop1
|
|
Push r0
|
|
PushConstant CP#7
|
|
PushConstant CP#6
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#8, 1
|
|
Drop1
|
|
StoreContextVar 0, 1
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 2
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 7
|
|
Push r0
|
|
AllocateClosure CP#10
|
|
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#10
|
|
StoreFieldTOS CP#27
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#1
|
|
StoreContextVar 0, 8
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#29, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#31, 1
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#33, 1
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DynamicCall CP#36, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
InterfaceCall CP#37, 1
|
|
ReturnTOS
|
|
|
|
}
|
|
|
|
Closure #lib::asyncInFieldInitializer (field)::Closure/0::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#11
|
|
LoadConstant r2, CP#11
|
|
LoadConstant r3, CP#11
|
|
Frame 6
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 5
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 7
|
|
Try #0 start:
|
|
Push r4
|
|
PushInt 1
|
|
StoreContextVar 0, 5
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 6
|
|
Push r4
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextVar 0, 3
|
|
Push r4
|
|
LoadContextVar 0, 4
|
|
Push r4
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#12, 4
|
|
PopLocal r8
|
|
PushNull
|
|
ReturnTOS
|
|
L4:
|
|
Push r2
|
|
JumpIfNull L2
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L2:
|
|
Push r1
|
|
Drop1
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
DirectCall CP#14, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 10
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 7
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#17, 3
|
|
Drop1
|
|
Jump L3
|
|
L3:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 0, 6
|
|
PopLocal r4
|
|
Jump L4
|
|
|
|
}
|
|
|
|
|
|
Function 'foo', static, reflectable, async
|
|
parameters [] (required: 0)
|
|
return-type dart:async::Future < dart:core::int >
|
|
|
|
|
|
Bytecode {
|
|
Entry 7
|
|
CheckStack 0
|
|
AllocateContext 0, 4
|
|
PopLocal r0
|
|
Push r0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 1
|
|
PushNull
|
|
PopLocal r3
|
|
PushNull
|
|
PopLocal r4
|
|
PushNull
|
|
PopLocal r5
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 2
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 3
|
|
AllocateClosure CP#4
|
|
StoreLocal r2
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#14
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#16
|
|
Push r2
|
|
PushConstant CP#18
|
|
StoreFieldTOS CP#19
|
|
Push r2
|
|
PushConstant CP#4
|
|
StoreFieldTOS CP#21
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#6
|
|
PopLocal r6
|
|
Push r6
|
|
DirectCall CP#23, 1
|
|
PopLocal r3
|
|
Push r6
|
|
DirectCall CP#25, 1
|
|
PopLocal r4
|
|
Push r6
|
|
DirectCall CP#27, 1
|
|
PopLocal r5
|
|
Push r0
|
|
LoadContextVar 0, 0
|
|
Push r6
|
|
DynamicCall CP#30, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 0
|
|
InterfaceCall CP#31, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class dart:async::_AsyncAwaitCompleter
|
|
[1] = ObjectRef < dart:core::int >
|
|
[2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ClosureFunction 0
|
|
[5] = ObjectRef null
|
|
[6] = InstanceField dart:core::_Closure::_context (field)
|
|
[7] = Reserved
|
|
[8] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = Type dynamic
|
|
[11] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[12] = Reserved
|
|
[13] = EndClosureFunctionScope
|
|
[14] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[15] = Reserved
|
|
[16] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[17] = Reserved
|
|
[18] = EmptyTypeArguments
|
|
[19] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[20] = Reserved
|
|
[21] = InstanceField dart:core::_Closure::_function (field)
|
|
[22] = Reserved
|
|
[23] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[24] = Reserved
|
|
[25] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[26] = Reserved
|
|
[27] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[28] = Reserved
|
|
[29] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[30] = ICData dynamic target-name 'start', arg-desc CP#29
|
|
[31] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[32] = Reserved
|
|
}
|
|
Closure #lib::foo::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#5
|
|
LoadConstant r2, CP#5
|
|
LoadConstant r3, CP#5
|
|
Frame 6
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
PopLocal r6
|
|
Try #0 start:
|
|
Push r4
|
|
PushInt 42
|
|
StoreContextVar 0, 1
|
|
Jump L2
|
|
L2:
|
|
Push r4
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
DirectCall CP#8, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 10
|
|
Push r6
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 0
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#11, 3
|
|
Drop1
|
|
Jump L3
|
|
L3:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Trap
|
|
|
|
}
|
|
|
|
|
|
Function 'simpleAsyncAwait', static, reflectable, async
|
|
parameters [dart:async::Future < dart:core::int > 'a', dart:async::Future < dart:core::int > 'b'] (required: 2)
|
|
return-type dart:async::Future < dart:core::int >
|
|
|
|
|
|
Bytecode {
|
|
Entry 4
|
|
CheckStack 0
|
|
AllocateContext 0, 11
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-6]
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 1
|
|
Push r0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
StoreContextVar 0, 2
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 3
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 7
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 8
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 9
|
|
Push r0
|
|
AllocateClosure CP#4
|
|
StoreLocal r2
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#18
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#20
|
|
Push r2
|
|
PushConstant CP#22
|
|
StoreFieldTOS CP#23
|
|
Push r2
|
|
PushConstant CP#4
|
|
StoreFieldTOS CP#25
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#6
|
|
StoreContextVar 0, 10
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#27, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#29, 1
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#31, 1
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
LoadContextVar 0, 2
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DynamicCall CP#34, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 2
|
|
InterfaceCall CP#35, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class dart:async::_AsyncAwaitCompleter
|
|
[1] = ObjectRef < dart:core::int >
|
|
[2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ClosureFunction 0
|
|
[5] = ObjectRef null
|
|
[6] = InstanceField dart:core::_Closure::_context (field)
|
|
[7] = Reserved
|
|
[8] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = InterfaceCall 'dart:core::num::+', ArgDesc num-args 2, num-type-args 0, names []
|
|
[11] = Reserved
|
|
[12] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[13] = Reserved
|
|
[14] = Type dynamic
|
|
[15] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[16] = Reserved
|
|
[17] = EndClosureFunctionScope
|
|
[18] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[19] = Reserved
|
|
[20] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[21] = Reserved
|
|
[22] = EmptyTypeArguments
|
|
[23] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[24] = Reserved
|
|
[25] = InstanceField dart:core::_Closure::_function (field)
|
|
[26] = Reserved
|
|
[27] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[28] = Reserved
|
|
[29] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[30] = Reserved
|
|
[31] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[32] = Reserved
|
|
[33] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[34] = ICData dynamic target-name 'start', arg-desc CP#33
|
|
[35] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[36] = Reserved
|
|
}
|
|
Closure #lib::simpleAsyncAwait::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#5
|
|
LoadConstant r2, CP#5
|
|
LoadConstant r3, CP#5
|
|
Frame 6
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 6
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Try #0 start:
|
|
Push r4
|
|
PushInt 1
|
|
StoreContextVar 0, 6
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextVar 0, 4
|
|
Push r4
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#8, 4
|
|
PopLocal r8
|
|
PushNull
|
|
ReturnTOS
|
|
L6:
|
|
Push r2
|
|
JumpIfNull L2
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L2:
|
|
Push r4
|
|
Push r1
|
|
StoreContextVar 0, 9
|
|
Push r4
|
|
PushInt 2
|
|
StoreContextVar 0, 6
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextVar 0, 4
|
|
Push r4
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#8, 4
|
|
PopLocal r9
|
|
PushNull
|
|
ReturnTOS
|
|
L7:
|
|
Push r2
|
|
JumpIfNull L3
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L3:
|
|
Push r4
|
|
Push r4
|
|
LoadContextVar 0, 9
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 0, 3
|
|
Jump L4
|
|
L4:
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
Push r4
|
|
LoadContextVar 0, 3
|
|
DirectCall CP#12, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 10
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 8
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#15, 3
|
|
Drop1
|
|
Jump L5
|
|
L5:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 0, 7
|
|
PopLocal r4
|
|
Push r5
|
|
PushInt 1
|
|
JumpIfEqStrict L6
|
|
Jump L7
|
|
|
|
}
|
|
|
|
|
|
Function 'loops', static, reflectable, async
|
|
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
|
|
return-type dart:async::Future < dart:core::int >
|
|
|
|
|
|
Bytecode {
|
|
Entry 4
|
|
CheckStack 0
|
|
AllocateContext 0, 11
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
StoreContextVar 0, 1
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 2
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 7
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 8
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 9
|
|
Push r0
|
|
AllocateClosure CP#4
|
|
StoreLocal r2
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#26
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#28
|
|
Push r2
|
|
PushConstant CP#30
|
|
StoreFieldTOS CP#31
|
|
Push r2
|
|
PushConstant CP#4
|
|
StoreFieldTOS CP#33
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#6
|
|
StoreContextVar 0, 10
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#35, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#37, 1
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#39, 1
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
Push r0
|
|
LoadContextVar 0, 10
|
|
DynamicCall CP#42, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
InterfaceCall CP#43, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class dart:async::_AsyncAwaitCompleter
|
|
[1] = ObjectRef < dart:core::int >
|
|
[2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ClosureFunction 0
|
|
[5] = ObjectRef null
|
|
[6] = InstanceField dart:core::_Closure::_context (field)
|
|
[7] = Reserved
|
|
[8] = InterfaceCall 'dart:core::Iterable::get:iterator', ArgDesc num-args 1, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = InterfaceCall 'dart:core::Iterator::moveNext', ArgDesc num-args 1, num-type-args 0, names []
|
|
[11] = Reserved
|
|
[12] = InterfaceCall 'dart:core::Iterator::get:current', ArgDesc num-args 1, num-type-args 0, names []
|
|
[13] = Reserved
|
|
[14] = DirectCall '#lib::foo', ArgDesc num-args 0, num-type-args 0, names []
|
|
[15] = Reserved
|
|
[16] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[17] = Reserved
|
|
[18] = InterfaceCall 'dart:core::num::+', ArgDesc num-args 2, num-type-args 0, names []
|
|
[19] = Reserved
|
|
[20] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[21] = Reserved
|
|
[22] = Type dynamic
|
|
[23] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[24] = Reserved
|
|
[25] = EndClosureFunctionScope
|
|
[26] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[27] = Reserved
|
|
[28] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[29] = Reserved
|
|
[30] = EmptyTypeArguments
|
|
[31] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[32] = Reserved
|
|
[33] = InstanceField dart:core::_Closure::_function (field)
|
|
[34] = Reserved
|
|
[35] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[36] = Reserved
|
|
[37] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[38] = Reserved
|
|
[39] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[40] = Reserved
|
|
[41] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[42] = ICData dynamic target-name 'start', arg-desc CP#41
|
|
[43] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[44] = Reserved
|
|
}
|
|
Closure #lib::loops::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#5
|
|
LoadConstant r2, CP#5
|
|
LoadConstant r3, CP#5
|
|
Frame 7
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 5
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 7
|
|
Try #0 start:
|
|
AllocateContext 1, 1
|
|
StoreLocal r5
|
|
Push r5
|
|
Push r4
|
|
StoreContextParent
|
|
PopLocal r4
|
|
Push r4
|
|
PushInt 0
|
|
StoreContextVar 1, 0
|
|
AllocateContext 2, 2
|
|
StoreLocal r5
|
|
Push r5
|
|
Push r4
|
|
StoreContextParent
|
|
PopLocal r4
|
|
Push r4
|
|
PushInt 0
|
|
StoreContextVar 2, 0
|
|
L6:
|
|
CheckStack 1
|
|
Push r4
|
|
LoadContextVar 2, 0
|
|
PushInt 10
|
|
CompareIntLt
|
|
JumpIfFalse L2
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 0
|
|
InterfaceCall CP#8, 1
|
|
PopLocal r8
|
|
Push r4
|
|
Push r8
|
|
StoreContextVar 2, 1
|
|
L5:
|
|
CheckStack 2
|
|
Push r4
|
|
LoadContextVar 2, 1
|
|
StoreLocal r8
|
|
InterfaceCall CP#10, 1
|
|
JumpIfFalse L3
|
|
AllocateContext 3, 1
|
|
StoreLocal r5
|
|
Push r5
|
|
Push r4
|
|
StoreContextParent
|
|
PopLocal r4
|
|
Push r4
|
|
Push r8
|
|
InterfaceCall CP#12, 1
|
|
StoreContextVar 3, 0
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 9
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 2, 0
|
|
Push r4
|
|
LoadContextVar 3, 0
|
|
AddInt
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
PushInt 1
|
|
StoreContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 6
|
|
DirectCall CP#14, 0
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 3
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 10
|
|
DirectCall CP#16, 4
|
|
PopLocal r10
|
|
PushNull
|
|
ReturnTOS
|
|
L11:
|
|
Push r2
|
|
JumpIfNull L4
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L4:
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 9
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 8
|
|
Push r1
|
|
InterfaceCall CP#18, 2
|
|
InterfaceCall CP#18, 2
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L5
|
|
L3:
|
|
Push r4
|
|
CloneContext 2, 2
|
|
PopLocal r4
|
|
Push r4
|
|
Push r4
|
|
LoadContextVar 2, 0
|
|
PushInt 1
|
|
AddInt
|
|
StoreLocal r8
|
|
StoreContextVar 2, 0
|
|
Push r8
|
|
Drop1
|
|
Jump L6
|
|
L2:
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
PushInt 0
|
|
PopLocal r8
|
|
L8:
|
|
CheckStack 1
|
|
Push r8
|
|
PushInt 10
|
|
CompareIntLt
|
|
JumpIfFalse L7
|
|
Push r4
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
Push r8
|
|
AddInt
|
|
StoreContextVar 1, 0
|
|
Push r8
|
|
PushInt 1
|
|
AddInt
|
|
StoreLocal r8
|
|
Drop1
|
|
Jump L8
|
|
L7:
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 2
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L9
|
|
L9:
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
DirectCall CP#20, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 11
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 7
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#23, 3
|
|
Drop1
|
|
Jump L10
|
|
L10:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 0, 6
|
|
PopLocal r4
|
|
Jump L11
|
|
|
|
}
|
|
|
|
|
|
Function 'tryCatchRethrow', static, reflectable, async
|
|
parameters [dart:async::Future < dart:core::int > 'a', dart:async::Future < dart:core::int > 'b', dart:async::Future < dart:core::int > 'c'] (required: 3)
|
|
return-type dart:async::Future < dart:core::int >
|
|
|
|
|
|
Bytecode {
|
|
Entry 4
|
|
CheckStack 0
|
|
AllocateContext 0, 18
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-7]
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
Push FP[-6]
|
|
StoreContextVar 0, 1
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 2
|
|
Push r0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 4
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 7
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 8
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 9
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 10
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 11
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 12
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 13
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 14
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 15
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 16
|
|
Push r0
|
|
AllocateClosure CP#4
|
|
StoreLocal r2
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#24
|
|
Push r2
|
|
PushNull
|
|
StoreFieldTOS CP#26
|
|
Push r2
|
|
PushConstant CP#28
|
|
StoreFieldTOS CP#29
|
|
Push r2
|
|
PushConstant CP#4
|
|
StoreFieldTOS CP#31
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#6
|
|
StoreContextVar 0, 17
|
|
Push r0
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#33, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#35, 1
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#37, 1
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
LoadContextVar 0, 3
|
|
Push r0
|
|
LoadContextVar 0, 17
|
|
DynamicCall CP#40, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 3
|
|
InterfaceCall CP#41, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class dart:async::_AsyncAwaitCompleter
|
|
[1] = ObjectRef < dart:core::int >
|
|
[2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ClosureFunction 0
|
|
[5] = ObjectRef null
|
|
[6] = InstanceField dart:core::_Closure::_context (field)
|
|
[7] = Reserved
|
|
[8] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = InterfaceCall 'dart:core::num::+', ArgDesc num-args 2, num-type-args 0, names []
|
|
[11] = Reserved
|
|
[12] = Type dynamic
|
|
[13] = Type dart:core::Error
|
|
[14] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names []
|
|
[15] = Reserved
|
|
[16] = ObjectRef 'fin'
|
|
[17] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
|
|
[18] = Reserved
|
|
[19] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[20] = Reserved
|
|
[21] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[22] = Reserved
|
|
[23] = EndClosureFunctionScope
|
|
[24] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[25] = Reserved
|
|
[26] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[27] = Reserved
|
|
[28] = EmptyTypeArguments
|
|
[29] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[30] = Reserved
|
|
[31] = InstanceField dart:core::_Closure::_function (field)
|
|
[32] = Reserved
|
|
[33] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[34] = Reserved
|
|
[35] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[36] = Reserved
|
|
[37] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[38] = Reserved
|
|
[39] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[40] = ICData dynamic target-name 'start', arg-desc CP#39
|
|
[41] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[42] = Reserved
|
|
}
|
|
Closure #lib::tryCatchRethrow::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#5
|
|
LoadConstant r2, CP#5
|
|
LoadConstant r3, CP#5
|
|
Frame 10
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 7
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 9
|
|
Try #0 start:
|
|
AllocateContext 1, 2
|
|
StoreLocal r5
|
|
Push r5
|
|
Push r4
|
|
StoreContextParent
|
|
PopLocal r4
|
|
Push r4
|
|
PushInt 1
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 10
|
|
Try #1 start:
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 11
|
|
Try #2 start:
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 14
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 1
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 6
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#8, 4
|
|
PopLocal r13
|
|
PushNull
|
|
ReturnTOS
|
|
L13:
|
|
Push r2
|
|
JumpIfNull L2
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L2:
|
|
Push r4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 14
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 1, 0
|
|
Jump L3
|
|
Try #2 end:
|
|
Try #2 handler:
|
|
SetFrame 14
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 11
|
|
PopLocal r4
|
|
MoveSpecial exception, r10
|
|
MoveSpecial stackTrace, r11
|
|
Push r4
|
|
LoadContextParent
|
|
Push r10
|
|
StoreContextVar 0, 12
|
|
Push r4
|
|
LoadContextParent
|
|
Push r11
|
|
StoreContextVar 0, 13
|
|
Push r4
|
|
Push r10
|
|
StoreContextVar 1, 1
|
|
Push r4
|
|
LoadContextVar 1, 1
|
|
PushConstant CP#13
|
|
InterfaceCall CP#14, 2
|
|
JumpIfFalse L4
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 42
|
|
StoreContextVar 0, 4
|
|
Jump L5
|
|
L4:
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 15
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 2
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 6
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#8, 4
|
|
PopLocal r13
|
|
PushNull
|
|
ReturnTOS
|
|
L14:
|
|
Push r2
|
|
JumpIfNull L6
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L6:
|
|
Push r4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 15
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 12
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 13
|
|
Throw 1
|
|
L3:
|
|
Jump L7
|
|
Try #1 end:
|
|
Try #1 handler:
|
|
SetFrame 14
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 10
|
|
PopLocal r4
|
|
MoveSpecial exception, r8
|
|
MoveSpecial stackTrace, r9
|
|
Push r4
|
|
LoadContextParent
|
|
Push r8
|
|
StoreContextVar 0, 12
|
|
Push r4
|
|
LoadContextParent
|
|
Push r9
|
|
StoreContextVar 0, 13
|
|
PushConstant CP#16
|
|
DirectCall CP#17, 1
|
|
Drop1
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 16
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 3
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 2
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 6
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#8, 4
|
|
PopLocal r12
|
|
PushNull
|
|
ReturnTOS
|
|
L15:
|
|
Push r2
|
|
JumpIfNull L8
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L8:
|
|
Push r4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 16
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 4
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L9
|
|
L5:
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 10
|
|
PopLocal r4
|
|
PushConstant CP#16
|
|
DirectCall CP#17, 1
|
|
Drop1
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 16
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 4
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 2
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 6
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#8, 4
|
|
PopLocal r12
|
|
PushNull
|
|
ReturnTOS
|
|
L16:
|
|
Push r2
|
|
JumpIfNull L10
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L10:
|
|
Push r4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 16
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 4
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L9
|
|
L7:
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 10
|
|
PopLocal r4
|
|
PushConstant CP#16
|
|
DirectCall CP#17, 1
|
|
Drop1
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 16
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 5
|
|
StoreContextVar 0, 7
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 0, 8
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 2
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 6
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 17
|
|
DirectCall CP#8, 4
|
|
PopLocal r12
|
|
PushNull
|
|
ReturnTOS
|
|
L17:
|
|
Push r2
|
|
JumpIfNull L11
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L11:
|
|
Push r4
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 0, 16
|
|
Push r1
|
|
InterfaceCall CP#10, 2
|
|
StoreContextVar 1, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
StoreContextVar 0, 4
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L9
|
|
L9:
|
|
Push r4
|
|
LoadContextVar 0, 3
|
|
Push r4
|
|
LoadContextVar 0, 4
|
|
DirectCall CP#19, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 14
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 9
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 3
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#21, 3
|
|
Drop1
|
|
Jump L12
|
|
L12:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 0, 8
|
|
PopLocal r4
|
|
Push r5
|
|
PushInt 1
|
|
JumpIfEqStrict L13
|
|
Push r5
|
|
PushInt 2
|
|
JumpIfEqStrict L14
|
|
Push r5
|
|
PushInt 3
|
|
JumpIfEqStrict L15
|
|
Push r5
|
|
PushInt 4
|
|
JumpIfEqStrict L16
|
|
Jump L17
|
|
|
|
}
|
|
|
|
|
|
Function 'closure', static, reflectable, debuggable
|
|
parameters [dart:async::Future < dart:core::int > 'a'] (required: 1)
|
|
return-type dynamic
|
|
|
|
|
|
Bytecode {
|
|
Entry 4
|
|
CheckStack 0
|
|
AllocateContext 0, 2
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
PushInt 3
|
|
StoreContextVar 0, 1
|
|
AllocateClosure CP#0
|
|
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#0
|
|
StoreFieldTOS CP#27
|
|
Push r3
|
|
Push r0
|
|
StoreFieldTOS CP#1
|
|
PopLocal r2
|
|
Push r2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ClosureFunction 0
|
|
[1] = InstanceField dart:core::_Closure::_context (field)
|
|
[2] = Reserved
|
|
[3] = Class dart:async::_AsyncAwaitCompleter
|
|
[4] = ObjectRef < dart:core::int >
|
|
[5] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[6] = Reserved
|
|
[7] = ClosureFunction 1
|
|
[8] = ObjectRef null
|
|
[9] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[10] = Reserved
|
|
[11] = Type dynamic
|
|
[12] = ObjectRef 'fin'
|
|
[13] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
|
|
[14] = Reserved
|
|
[15] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[16] = Reserved
|
|
[17] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[18] = Reserved
|
|
[19] = EndClosureFunctionScope
|
|
[20] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[21] = Reserved
|
|
[22] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[23] = Reserved
|
|
[24] = EmptyTypeArguments
|
|
[25] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[26] = Reserved
|
|
[27] = InstanceField dart:core::_Closure::_function (field)
|
|
[28] = Reserved
|
|
[29] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[30] = Reserved
|
|
[31] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[32] = Reserved
|
|
[33] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[34] = Reserved
|
|
[35] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[36] = ICData dynamic target-name 'start', arg-desc CP#35
|
|
[37] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[38] = Reserved
|
|
[39] = EndClosureFunctionScope
|
|
}
|
|
Closure #lib::closure::'nested' () -> dart:async::Future < dart:core::int >
|
|
ClosureCode {
|
|
EntryFixed 1, 4
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
LoadFieldTOS CP#1
|
|
PopLocal r0
|
|
AllocateContext 1, 9
|
|
StoreLocal r1
|
|
Push r1
|
|
Push r0
|
|
StoreContextParent
|
|
PopLocal r0
|
|
Push r0
|
|
PushConstant CP#4
|
|
PushConstant CP#3
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#5, 1
|
|
Drop1
|
|
StoreContextVar 1, 0
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 1
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 2
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 3
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 1, 4
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 5
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 6
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 1, 7
|
|
Push r0
|
|
AllocateClosure CP#7
|
|
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#7
|
|
StoreFieldTOS CP#27
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#1
|
|
StoreContextVar 1, 8
|
|
Push r0
|
|
LoadContextVar 1, 8
|
|
DirectCall CP#29, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 1, 8
|
|
DirectCall CP#31, 1
|
|
StoreContextVar 1, 2
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 1, 8
|
|
DirectCall CP#33, 1
|
|
StoreContextVar 1, 3
|
|
Push r0
|
|
LoadContextVar 1, 0
|
|
Push r0
|
|
LoadContextVar 1, 8
|
|
DynamicCall CP#36, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 1, 0
|
|
InterfaceCall CP#37, 1
|
|
ReturnTOS
|
|
|
|
}
|
|
|
|
Closure #lib::closure::Closure/0::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#8
|
|
LoadConstant r2, CP#8
|
|
LoadConstant r3, CP#8
|
|
Frame 8
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 1, 4
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 1, 6
|
|
Try #0 start:
|
|
AllocateContext 2, 1
|
|
StoreLocal r5
|
|
Push r5
|
|
Push r4
|
|
StoreContextParent
|
|
PopLocal r4
|
|
Push r4
|
|
PushInt 4
|
|
StoreContextVar 2, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 1, 7
|
|
Try #1 start:
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
PushInt 5
|
|
StoreContextVar 0, 1
|
|
Push r4
|
|
LoadContextParent
|
|
PushInt 1
|
|
StoreContextVar 1, 4
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
StoreContextVar 1, 5
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 1, 2
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 1, 3
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextVar 1, 8
|
|
DirectCall CP#9, 4
|
|
PopLocal r11
|
|
PushNull
|
|
ReturnTOS
|
|
L6:
|
|
Push r2
|
|
JumpIfNull L2
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L2:
|
|
Push r4
|
|
Push r1
|
|
StoreContextVar 2, 0
|
|
Push r4
|
|
LoadContextParent
|
|
Push r4
|
|
LoadContextParent
|
|
LoadContextParent
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextVar 2, 0
|
|
AddInt
|
|
StoreContextVar 1, 1
|
|
Jump L3
|
|
Try #1 end:
|
|
Try #1 handler:
|
|
SetFrame 12
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 1, 7
|
|
PopLocal r4
|
|
MoveSpecial exception, r8
|
|
MoveSpecial stackTrace, r9
|
|
PushConstant CP#12
|
|
DirectCall CP#13, 1
|
|
Drop1
|
|
Push r8
|
|
Push r9
|
|
Throw 1
|
|
L3:
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 1, 7
|
|
PopLocal r4
|
|
PushConstant CP#12
|
|
DirectCall CP#13, 1
|
|
Drop1
|
|
Push r4
|
|
LoadContextParent
|
|
PopLocal r4
|
|
Jump L4
|
|
L4:
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
Push r4
|
|
LoadContextVar 1, 1
|
|
DirectCall CP#15, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 12
|
|
Push r0
|
|
LoadFieldTOS CP#1
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 1, 6
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 1, 0
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#17, 3
|
|
Drop1
|
|
Jump L5
|
|
L5:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 1, 5
|
|
PopLocal r4
|
|
Jump L6
|
|
|
|
}
|
|
|
|
|
|
Function 'testAssert', static, reflectable, async
|
|
parameters [dart:async::Future < dart:core::int > 'a'] (required: 1)
|
|
return-type dart:async::Future < dart:core::int >
|
|
|
|
|
|
Bytecode {
|
|
Entry 4
|
|
CheckStack 0
|
|
AllocateContext 0, 9
|
|
PopLocal r0
|
|
Push r0
|
|
Push FP[-5]
|
|
StoreContextVar 0, 0
|
|
Push r0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r2
|
|
Push r2
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
StoreContextVar 0, 1
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 2
|
|
PushNull
|
|
PopLocal r3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
PushInt 0
|
|
StoreContextVar 0, 5
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 6
|
|
Push r0
|
|
PushNull
|
|
StoreContextVar 0, 7
|
|
Push r0
|
|
AllocateClosure CP#4
|
|
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#4
|
|
StoreFieldTOS CP#27
|
|
Push r2
|
|
Push r0
|
|
StoreFieldTOS CP#6
|
|
StoreContextVar 0, 8
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#29, 1
|
|
PopLocal r3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#31, 1
|
|
StoreContextVar 0, 3
|
|
Push r0
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#33, 1
|
|
StoreContextVar 0, 4
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
Push r0
|
|
LoadContextVar 0, 8
|
|
DynamicCall CP#36, 2
|
|
Drop1
|
|
Push r0
|
|
LoadContextVar 0, 1
|
|
InterfaceCall CP#37, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class dart:async::_AsyncAwaitCompleter
|
|
[1] = ObjectRef < dart:core::int >
|
|
[2] = DirectCall 'dart:async::_AsyncAwaitCompleter:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ClosureFunction 0
|
|
[5] = ObjectRef null
|
|
[6] = InstanceField dart:core::_Closure::_context (field)
|
|
[7] = Reserved
|
|
[8] = DirectCall 'dart:async::_awaitHelper', ArgDesc num-args 4, num-type-args 0, names []
|
|
[9] = Reserved
|
|
[10] = InterfaceCall 'dart:core::num::==', ArgDesc num-args 2, num-type-args 0, names []
|
|
[11] = Reserved
|
|
[12] = DirectCall 'dart:core::_AssertionError::_throwNew', ArgDesc num-args 3, num-type-args 0, names []
|
|
[13] = Reserved
|
|
[14] = DirectCall 'dart:async::_completeOnAsyncReturn', ArgDesc num-args 2, num-type-args 0, names []
|
|
[15] = Reserved
|
|
[16] = Type dynamic
|
|
[17] = InterfaceCall 'dart:async::Completer::completeError', ArgDesc num-args 3, num-type-args 0, names []
|
|
[18] = Reserved
|
|
[19] = EndClosureFunctionScope
|
|
[20] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
|
|
[21] = Reserved
|
|
[22] = InstanceField dart:core::_Closure::_function_type_arguments (field)
|
|
[23] = Reserved
|
|
[24] = EmptyTypeArguments
|
|
[25] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
|
|
[26] = Reserved
|
|
[27] = InstanceField dart:core::_Closure::_function (field)
|
|
[28] = Reserved
|
|
[29] = DirectCall 'dart:async::_asyncStackTraceHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[30] = Reserved
|
|
[31] = DirectCall 'dart:async::_asyncThenWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[32] = Reserved
|
|
[33] = DirectCall 'dart:async::_asyncErrorWrapperHelper', ArgDesc num-args 1, num-type-args 0, names []
|
|
[34] = Reserved
|
|
[35] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
|
|
[36] = ICData dynamic target-name 'start', arg-desc CP#35
|
|
[37] = InterfaceCall 'dart:async::Completer::get:future', ArgDesc num-args 1, num-type-args 0, names []
|
|
[38] = Reserved
|
|
}
|
|
Closure #lib::testAssert::':async_op' ([ dynamic :result, dynamic :exception, dynamic :stack_trace ]) -> dynamic
|
|
ClosureCode {
|
|
EntryOptional 1, 3, 0
|
|
LoadConstant r1, CP#5
|
|
LoadConstant r2, CP#5
|
|
LoadConstant r3, CP#5
|
|
Frame 6
|
|
CheckStack 0
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 5
|
|
StoreLocal r5
|
|
PushInt 0
|
|
JumpIfNeStrict L1
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 7
|
|
Try #0 start:
|
|
JumpIfNoAsserts L2
|
|
Push r4
|
|
PushInt 1
|
|
StoreContextVar 0, 5
|
|
Push r4
|
|
Push r4
|
|
StoreContextVar 0, 6
|
|
Push r4
|
|
LoadContextVar 0, 0
|
|
Push r4
|
|
LoadContextVar 0, 3
|
|
Push r4
|
|
LoadContextVar 0, 4
|
|
Push r4
|
|
LoadContextVar 0, 8
|
|
DirectCall CP#8, 4
|
|
PopLocal r8
|
|
PushNull
|
|
ReturnTOS
|
|
L6:
|
|
Push r2
|
|
JumpIfNull L3
|
|
Push r2
|
|
Push r3
|
|
Throw 1
|
|
L3:
|
|
JumpIfNoAsserts L2
|
|
Push r1
|
|
PushInt 42
|
|
InterfaceCall CP#10, 2
|
|
AssertBoolean 0
|
|
JumpIfTrue L2
|
|
PushInt 0
|
|
PushInt 0
|
|
PushNull
|
|
DirectCall CP#12, 3
|
|
Drop1
|
|
L2:
|
|
Push r4
|
|
PushInt 7
|
|
StoreContextVar 0, 2
|
|
Jump L4
|
|
L4:
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r4
|
|
LoadContextVar 0, 2
|
|
DirectCall CP#14, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
Try #0 end:
|
|
Try #0 handler:
|
|
SetFrame 10
|
|
Push r0
|
|
LoadFieldTOS CP#6
|
|
PopLocal r4
|
|
Push r4
|
|
LoadContextVar 0, 7
|
|
PopLocal r4
|
|
MoveSpecial exception, r6
|
|
MoveSpecial stackTrace, r7
|
|
Push r6
|
|
PopLocal r8
|
|
Push r7
|
|
PopLocal r9
|
|
Push r4
|
|
LoadContextVar 0, 1
|
|
Push r8
|
|
Push r9
|
|
InterfaceCall CP#17, 3
|
|
Drop1
|
|
Jump L5
|
|
L5:
|
|
PushNull
|
|
ReturnTOS
|
|
L1:
|
|
Push r4
|
|
LoadContextVar 0, 6
|
|
PopLocal r4
|
|
Jump L6
|
|
|
|
}
|
|
|
|
|
|
Function 'main', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
]library #lib from "#lib" as #lib {
|
|
|
|
import "dart:async";
|
|
|
|
static field (dart.async::Future<dart.core::int>) → dart.async::Future<dart.core::Null> asyncInFieldInitializer = (dart.async::Future<dart.core::int> x) → dart.async::Future<dart.core::Null> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::Null> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::Null>();
|
|
dart.async::FutureOr<dart.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 = dart.async::_awaitHelper(x, :async_op_then, :async_op_error, :async_op) in null;
|
|
:result;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
};
|
|
static method foo() → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
static method simpleAsyncAwait(dart.async::Future<dart.core::int> a, dart.async::Future<dart.core::int> b) → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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 = dart.async::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
|
|
:async_temporary_0 = :result;
|
|
[yield] let dynamic #t3 = dart.async::_awaitHelper(b, :async_op_then, :async_op_error, :async_op) in null;
|
|
:return_value = :async_temporary_0.{dart.core::num::+}(:result);
|
|
break #L3;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
static method loops(dart.core::List<dart.core::int> list) → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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:
|
|
{
|
|
dart.core::int sum = 0;
|
|
for (dart.core::int i = 0; i.{dart.core::num::<}(10); i = i.{dart.core::num::+}(1)) {
|
|
for (dart.core::int j in list) {
|
|
:async_temporary_1 = sum;
|
|
:async_temporary_0 = i.{dart.core::num::+}(j);
|
|
[yield] let dynamic #t4 = dart.async::_awaitHelper(#lib::foo(), :async_op_then, :async_op_error, :async_op) in null;
|
|
sum = :async_temporary_1.{dart.core::num::+}(:async_temporary_0.{dart.core::num::+}(:result));
|
|
}
|
|
}
|
|
for (dart.core::int k = 0; k.{dart.core::num::<}(10); k = k.{dart.core::num::+}(1)) {
|
|
sum = sum.{dart.core::num::+}(k);
|
|
}
|
|
:return_value = sum;
|
|
break #L4;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
static method tryCatchRethrow(dart.async::Future<dart.core::int> a, dart.async::Future<dart.core::int> b, dart.async::Future<dart.core::int> c) → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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;
|
|
dynamic :async_temporary_1;
|
|
dynamic :async_temporary_2;
|
|
function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L5:
|
|
{
|
|
dart.core::int x = 1;
|
|
try
|
|
try {
|
|
:async_temporary_0 = x;
|
|
[yield] let dynamic #t5 = dart.async::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
|
|
x = :async_temporary_0.{dart.core::num::+}(:result);
|
|
}
|
|
on dynamic catch(final dynamic e) {
|
|
if(e is dart.core::Error) {
|
|
:return_value = 42;
|
|
break #L5;
|
|
}
|
|
:async_temporary_1 = x;
|
|
[yield] let dynamic #t6 = dart.async::_awaitHelper(b, :async_op_then, :async_op_error, :async_op) in null;
|
|
x = :async_temporary_1.{dart.core::num::+}(:result);
|
|
rethrow;
|
|
}
|
|
finally {
|
|
dart.core::print("fin");
|
|
:async_temporary_2 = x;
|
|
[yield] let dynamic #t7 = dart.async::_awaitHelper(c, :async_op_then, :async_op_error, :async_op) in null;
|
|
x = :async_temporary_2.{dart.core::num::+}(:result);
|
|
:return_value = x;
|
|
break #L5;
|
|
}
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
static method closure(dart.async::Future<dart.core::int> a) → dynamic {
|
|
dart.core::int x = 3;
|
|
function nested() → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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:
|
|
{
|
|
dart.core::int y = 4;
|
|
try {
|
|
x = 5;
|
|
[yield] let dynamic #t8 = dart.async::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
|
|
y = :result;
|
|
:return_value = x.{dart.core::num::+}(y);
|
|
break #L6;
|
|
}
|
|
finally {
|
|
dart.core::print("fin");
|
|
}
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
return nested;
|
|
}
|
|
static method testAssert(dart.async::Future<dart.core::int> a) → dart.async::Future<dart.core::int> /* originally async */ {
|
|
final dart.async::_AsyncAwaitCompleter<dart.core::int> :async_completer = new dart.async::_AsyncAwaitCompleter::•<dart.core::int>();
|
|
dart.async::FutureOr<dart.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 = dart.async::_awaitHelper(a, :async_op_then, :async_op_error, :async_op) in null;
|
|
assert(:result.{dart.core::num::==}(42));
|
|
}
|
|
:return_value = 7;
|
|
break #L7;
|
|
}
|
|
dart.async::_completeOnAsyncReturn(:async_completer, :return_value);
|
|
return;
|
|
}
|
|
on dynamic catch(dynamic :exception, dynamic :stack_trace) {
|
|
:async_completer.{dart.async::Completer::completeError}(:exception, :stack_trace);
|
|
}
|
|
:async_stack_trace = dart.async::_asyncStackTraceHelper(:async_op);
|
|
:async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
|
|
:async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
|
|
:async_completer.start(:async_op);
|
|
return :async_completer.{dart.async::Completer::future};
|
|
}
|
|
static method main() → dynamic {}
|
|
}
|