main = #lib::main; [@vm.bytecode= BytecodeMetadata { Bytecode (version: stable) Main library: #lib Library '#lib' name '#lib' script '#lib' Class '', script = '#lib' Function 'simpleClosure', static, reflectable, debuggable parameters [] (required: 0) return-type dart:core::int Bytecode { Entry 4 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 PushInt 5 StoreContextVar 0, 0 AllocateClosure CP#0 StoreLocal r3 Push r3 PushNull StoreFieldTOS CP#7 Push r3 PushNull StoreFieldTOS CP#9 Push r3 PushConstant CP#11 StoreFieldTOS CP#12 Push r3 PushConstant CP#0 StoreFieldTOS CP#14 Push r3 Push r0 StoreFieldTOS CP#1 PopLocal r2 Push r2 PushInt 3 DynamicCall CP#17, 2 Drop1 Push r0 LoadContextVar 0, 0 ReturnTOS } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = Type dart:core::int [4] = ObjectRef 'y' [5] = SubtypeTestCache [6] = EndClosureFunctionScope [7] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [8] = Reserved [9] = InstanceField dart:core::_Closure::_function_type_arguments (field) [10] = Reserved [11] = EmptyTypeArguments [12] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [13] = Reserved [14] = InstanceField dart:core::_Closure::_function (field) [15] = Reserved [16] = ObjectRef ArgDesc num-args 2, num-type-args 0, names [] [17] = ICData dynamic target-name 'call', arg-desc CP#16 } Closure #lib::simpleClosure::'' (dart:core::int y) -> dart:core::Null ClosureCode { EntryFixed 2, 3 CheckStack 0 Push FP[-6] LoadFieldTOS CP#1 PopLocal r0 Push FP[-5] PushConstant CP#3 PushNull PushNull PushConstant CP#4 AssertAssignable 1, CP#5 Drop1 Push r0 Push r0 LoadContextVar 0, 0 Push FP[-5] AddInt StoreContextVar 0, 0 PushNull ReturnTOS } Function 'callWithArgs', static, reflectable, debuggable type-params parameters [] (required: 0) return-type void Bytecode { Entry 2 CheckStack 0 CheckFunctionTypeArgs 8, r0 PushConstant CP#0 StoreLocal r1 Push r1 PushInt 8 CreateArrayTOS StoreLocal r1 Push r1 PushInt 0 PushNull Push r0 InstantiateType CP#1 StoreIndexedTOS Push r1 PushInt 1 PushNull Push r0 InstantiateType CP#2 StoreIndexedTOS Push r1 PushInt 2 PushNull Push r0 InstantiateType CP#3 StoreIndexedTOS Push r1 PushInt 3 PushNull Push r0 InstantiateType CP#4 StoreIndexedTOS Push r1 PushInt 4 PushNull Push r0 InstantiateType CP#5 StoreIndexedTOS Push r1 PushInt 5 PushNull Push r0 InstantiateType CP#6 StoreIndexedTOS Push r1 PushInt 6 PushNull Push r0 InstantiateType CP#7 StoreIndexedTOS Push r1 PushInt 7 PushNull Push r0 InstantiateType CP#8 StoreIndexedTOS DirectCall CP#9, 2 DirectCall CP#11, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = ObjectRef < dart:core::Type > [1] = Type #lib::callWithArgs::TypeParam/0 [2] = Type #lib::callWithArgs::TypeParam/1 [3] = Type #lib::callWithArgs::TypeParam/2 [4] = Type #lib::callWithArgs::TypeParam/3 [5] = Type #lib::callWithArgs::TypeParam/4 [6] = Type #lib::callWithArgs::TypeParam/5 [7] = Type #lib::callWithArgs::TypeParam/6 [8] = Type #lib::callWithArgs::TypeParam/7 [9] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names [] [10] = Reserved [11] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [12] = Reserved } Function 'callA', static, reflectable, debuggable parameters [] (required: 0) return-type void Bytecode { Entry 1 CheckStack 0 PushConstant CP#0 PushConstant CP#2 PushConstant CP#1 AllocateT StoreLocal r0 Push r0 DirectCall CP#3, 1 Drop1 InterfaceCall CP#5, 2 Drop1 PushConstant CP#7 PushConstant CP#2 PushConstant CP#1 AllocateT StoreLocal r0 Push r0 DirectCall CP#3, 1 Drop1 InterfaceCall CP#5, 2 Drop1 PushConstant CP#7 PushConstant CP#8 PushConstant CP#1 AllocateT StoreLocal r0 Push r0 DirectCall CP#3, 1 Drop1 InterfaceCall CP#5, 2 Drop1 PushNull ReturnTOS } ConstantPool { [0] = ObjectRef < #lib::C3, #lib::C4 > [1] = Class #lib::A [2] = ObjectRef < #lib::C1, #lib::C2 > [3] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [4] = Reserved [5] = InterfaceCall '#lib::A::foo', ArgDesc num-args 1, num-type-args 2, names [] [6] = Reserved [7] = ObjectRef < dart:core::List < #lib::C3 >, dart:core::List < #lib::C4 > > [8] = ObjectRef < dart:core::List < #lib::C1 >, dart:core::List < #lib::C2 > > } Function 'testPartialInstantiation', static, reflectable, debuggable parameters [] (required: 0) return-type FunctionType (dart:core::int) -> dynamic Bytecode { Entry 7 CheckStack 0 AllocateClosure CP#0 StoreLocal r3 Push r3 PushNull StoreFieldTOS CP#14 Push r3 PushNull StoreFieldTOS CP#6 Push r3 PushConstant CP#5 StoreFieldTOS CP#3 Push r3 PushConstant CP#0 StoreFieldTOS CP#16 Push r3 Push r0 StoreFieldTOS CP#1 PopLocal r2 Push r2 StoreLocal r3 PushConstant CP#18 StoreLocal r6 DirectCall CP#19, 2 Drop1 Allocate CP#21 StoreLocal r5 Push r6 StoreFieldTOS CP#3 Push r5 Push r3 LoadFieldTOS CP#14 StoreFieldTOS CP#14 Push r5 Push r3 LoadFieldTOS CP#6 StoreFieldTOS CP#6 Push r5 Push r3 LoadFieldTOS CP#16 StoreFieldTOS CP#16 Push r5 Push r3 LoadFieldTOS CP#1 StoreFieldTOS CP#1 Push r5 PopLocal r4 Push r4 ReturnTOS } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [4] = Reserved [5] = EmptyTypeArguments [6] = InstanceField dart:core::_Closure::_function_type_arguments (field) [7] = Reserved [8] = DirectCall 'dart:_internal::_prependTypeArguments', ArgDesc num-args 4, num-type-args 0, names [] [9] = Reserved [10] = Type #lib::testPartialInstantiation::Closure/0::TypeParam/0 [11] = ObjectRef 't' [12] = SubtypeTestCache [13] = EndClosureFunctionScope [14] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [15] = Reserved [16] = InstanceField dart:core::_Closure::_function (field) [17] = Reserved [18] = ObjectRef < dart:core::int > [19] = DirectCall 'dart:_internal::_boundsCheckForPartialInstantiation', ArgDesc num-args 2, num-type-args 0, names [] [20] = Reserved [21] = Class dart:core::_Closure } Closure #lib::testPartialInstantiation::'foo' (#lib::testPartialInstantiation::Closure/0::TypeParam/0 t) -> void ClosureCode { EntryFixed 2, 3 CheckStack 0 Push FP[-6] LoadFieldTOS CP#1 PopLocal r1 Push FP[-6] LoadFieldTOS CP#3 StoreLocal r0 PushConstant CP#5 JumpIfEqStrict L1 CheckFunctionTypeArgs 0, r2 Jump L2 L1: CheckFunctionTypeArgs 1, r0 L2: Push r0 Push FP[-6] LoadFieldTOS CP#6 PushInt 0 PushInt 1 DirectCall CP#8, 4 PopLocal r0 Push FP[-5] PushConstant CP#10 PushNull Push r0 PushConstant CP#11 AssertAssignable 0, CP#12 Drop1 PushNull ReturnTOS } Function 'main', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 0 CheckStack 0 PushNull ReturnTOS } ConstantPool { } Class 'C1', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C1 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C2', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C2 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C3', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C3 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C4', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C4 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C5', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C5 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C6', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C6 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C7', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C7 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'C8', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C8 Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Class 'A', script = '#lib' type-params (args: 2) extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::A < #lib::A::TypeParam/0, #lib::A::TypeParam/1 > Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Function 'foo', reflectable, debuggable type-params parameters [] (required: 0) return-type void Bytecode { Entry 5 CheckStack 0 CheckFunctionTypeArgs 2, r0 AllocateContext 0, 1 PopLocal r1 Push r1 Push FP[-5] StoreContextVar 0, 0 AllocateClosure CP#0 StoreLocal r4 Push r4 Push FP[-5] LoadTypeArgumentsField CP#14 StoreFieldTOS CP#30 Push r4 Push r0 StoreFieldTOS CP#6 Push r4 PushConstant CP#5 StoreFieldTOS CP#3 Push r4 PushConstant CP#0 StoreFieldTOS CP#32 Push r4 Push r1 StoreFieldTOS CP#1 PopLocal r3 PushConstant CP#43 Push r3 DynamicCall CP#44, 2 Drop1 PushConstant CP#45 Push r3 DynamicCall CP#46, 2 Drop1 PushNull ReturnTOS } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [4] = Reserved [5] = EmptyTypeArguments [6] = InstanceField dart:core::_Closure::_function_type_arguments (field) [7] = Reserved [8] = DirectCall 'dart:_internal::_prependTypeArguments', ArgDesc num-args 4, num-type-args 0, names [] [9] = Reserved [10] = ClosureFunction 1 [11] = ClosureFunction 2 [12] = ObjectRef < dart:core::Type > [13] = Type #lib::A::TypeParam/0 [14] = TypeArgumentsField #lib::A [15] = Type #lib::A::TypeParam/1 [16] = Type #lib::A::foo::TypeParam/0 [17] = Type #lib::A::foo::TypeParam/1 [18] = Type #lib::A::foo::Closure/0::TypeParam/0 [19] = Type #lib::A::foo::Closure/0::TypeParam/1 [20] = Type #lib::A::foo::Closure/1::TypeParam/0 [21] = Type #lib::A::foo::Closure/1::TypeParam/1 [22] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names [] [23] = Reserved [24] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [25] = Reserved [26] = ObjectRef < #lib::A::TypeParam/0, #lib::A::TypeParam/1, #lib::A::foo::TypeParam/0, #lib::A::foo::TypeParam/1, #lib::A::foo::Closure/0::TypeParam/0, #lib::A::foo::Closure/0::TypeParam/1, #lib::A::foo::Closure/1::TypeParam/0, #lib::A::foo::Closure/1::TypeParam/1 > [27] = DirectCall '#lib::callWithArgs', ArgDesc num-args 0, num-type-args 8, names [] [28] = Reserved [29] = EndClosureFunctionScope [30] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [31] = Reserved [32] = InstanceField dart:core::_Closure::_function (field) [33] = Reserved [34] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [35] = ICData dynamic target-name 'call', arg-desc CP#34 [36] = EndClosureFunctionScope [37] = ObjectRef < #lib::C7, #lib::C8 > [38] = ObjectRef ArgDesc num-args 1, num-type-args 2, names [] [39] = ICData dynamic target-name 'call', arg-desc CP#38 [40] = ObjectRef < dart:core::List < #lib::C7 >, dart:core::List < #lib::C8 > > [41] = ICData dynamic target-name 'call', arg-desc CP#38 [42] = EndClosureFunctionScope [43] = ObjectRef < #lib::C5, #lib::C6 > [44] = ICData dynamic target-name 'call', arg-desc CP#38 [45] = ObjectRef < dart:core::List < #lib::C5 >, dart:core::List < #lib::C6 > > [46] = ICData dynamic target-name 'call', arg-desc CP#38 } Closure #lib::A::foo::'nested1' () -> void ClosureCode { EntryFixed 1, 5 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r1 Push FP[-5] LoadFieldTOS CP#3 StoreLocal r0 PushConstant CP#5 JumpIfEqStrict L1 CheckFunctionTypeArgs 0, r2 Jump L2 L1: CheckFunctionTypeArgs 2, r0 L2: Push r0 Push FP[-5] LoadFieldTOS CP#6 PushInt 2 PushInt 4 DirectCall CP#8, 4 PopLocal r0 AllocateClosure CP#10 StoreLocal r4 Push r4 Push r1 LoadContextVar 0, 0 LoadTypeArgumentsField CP#14 StoreFieldTOS CP#30 Push r4 Push r0 StoreFieldTOS CP#6 Push r4 PushConstant CP#5 StoreFieldTOS CP#3 Push r4 PushConstant CP#10 StoreFieldTOS CP#32 Push r4 Push r1 StoreFieldTOS CP#1 PopLocal r3 PushConstant CP#37 Push r3 DynamicCall CP#39, 2 Drop1 PushConstant CP#40 Push r3 DynamicCall CP#41, 2 Drop1 PushNull ReturnTOS } Closure #lib::A::foo::Closure/0::'nested2' () -> void ClosureCode { EntryFixed 1, 5 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r1 Push FP[-5] LoadFieldTOS CP#3 StoreLocal r0 PushConstant CP#5 JumpIfEqStrict L1 CheckFunctionTypeArgs 0, r2 Jump L2 L1: CheckFunctionTypeArgs 2, r0 L2: Push r0 Push FP[-5] LoadFieldTOS CP#6 PushInt 4 PushInt 6 DirectCall CP#8, 4 PopLocal r0 AllocateClosure CP#11 StoreLocal r4 Push r4 Push r1 LoadContextVar 0, 0 LoadTypeArgumentsField CP#14 StoreFieldTOS CP#30 Push r4 Push r0 StoreFieldTOS CP#6 Push r4 PushConstant CP#5 StoreFieldTOS CP#3 Push r4 PushConstant CP#11 StoreFieldTOS CP#32 Push r4 Push r1 StoreFieldTOS CP#1 PopLocal r3 Push r3 DynamicCall CP#35, 1 Drop1 PushNull ReturnTOS } Closure #lib::A::foo::Closure/1::'' () -> dart:core::Null ClosureCode { EntryFixed 1, 4 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r1 Push FP[-5] LoadFieldTOS CP#6 PopLocal r0 PushConstant CP#12 StoreLocal r3 Push r3 PushInt 8 CreateArrayTOS StoreLocal r3 Push r3 PushInt 0 Push r1 LoadContextVar 0, 0 LoadTypeArgumentsField CP#14 PushNull InstantiateType CP#13 StoreIndexedTOS Push r3 PushInt 1 Push r1 LoadContextVar 0, 0 LoadTypeArgumentsField CP#14 PushNull InstantiateType CP#15 StoreIndexedTOS Push r3 PushInt 2 PushNull Push r0 InstantiateType CP#16 StoreIndexedTOS Push r3 PushInt 3 PushNull Push r0 InstantiateType CP#17 StoreIndexedTOS Push r3 PushInt 4 PushNull Push r0 InstantiateType CP#18 StoreIndexedTOS Push r3 PushInt 5 PushNull Push r0 InstantiateType CP#19 StoreIndexedTOS Push r3 PushInt 6 PushNull Push r0 InstantiateType CP#20 StoreIndexedTOS Push r3 PushInt 7 PushNull Push r0 InstantiateType CP#21 StoreIndexedTOS DirectCall CP#22, 2 DirectCall CP#24, 1 Drop1 Push r1 LoadContextVar 0, 0 LoadTypeArgumentsField CP#14 Push r0 InstantiateTypeArgumentsTOS 0, CP#26 DirectCall CP#27, 1 Drop1 PushNull ReturnTOS } Class 'B', script = '#lib' extends dart:core::Object Field 'foo', type = dart:core::int, getter = 'get:foo', setter = 'set:foo', reflectable value = null Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::B Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } Nullable fields: [#lib::B::foo (field)] ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Function 'topLevel', reflectable, debuggable parameters [] (required: 0) return-type void Bytecode { Entry 5 CheckStack 0 AllocateContext 0, 4 PopLocal r0 Push r0 Push FP[-5] StoreContextVar 0, 0 Push r0 PushInt 1 StoreContextVar 0, 1 PushInt 2 PopLocal r2 Push r0 PushInt 3 StoreContextVar 0, 2 AllocateClosure CP#0 StoreLocal r4 Push r4 PushNull StoreFieldTOS CP#10 Push r4 PushNull StoreFieldTOS CP#12 Push r4 PushConstant CP#14 StoreFieldTOS CP#15 Push r4 PushConstant CP#0 StoreFieldTOS CP#17 Push r4 Push r0 StoreFieldTOS CP#1 PopLocal r3 Push r3 PushInt 10 DynamicCall CP#25, 2 Drop1 Push r3 PushInt 11 DynamicCall CP#26, 2 Drop1 Push r2 DirectCall CP#21, 1 Drop1 Push r0 LoadContextVar 0, 2 DirectCall CP#21, 1 Drop1 Push r0 LoadContextVar 0, 1 DirectCall CP#21, 1 Drop1 Push r0 PushInt 42 StoreContextVar 0, 3 AllocateClosure CP#27 StoreLocal r3 Push r3 PushNull StoreFieldTOS CP#10 Push r3 PushNull StoreFieldTOS CP#12 Push r3 PushConstant CP#14 StoreFieldTOS CP#15 Push r3 PushConstant CP#27 StoreFieldTOS CP#17 Push r3 Push r0 StoreFieldTOS CP#1 PopLocal r2 Push r2 DynamicCall CP#31, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = Type dart:core::int [4] = ObjectRef 'y' [5] = SubtypeTestCache [6] = ClosureFunction 1 [7] = InterfaceCall '#lib::B::get:foo', ArgDesc num-args 1, num-type-args 0, names [] [8] = Reserved [9] = EndClosureFunctionScope [10] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [11] = Reserved [12] = InstanceField dart:core::_Closure::_function_type_arguments (field) [13] = Reserved [14] = EmptyTypeArguments [15] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [16] = Reserved [17] = InstanceField dart:core::_Closure::_function (field) [18] = Reserved [19] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [20] = ICData dynamic target-name 'call', arg-desc CP#19 [21] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [22] = Reserved [23] = EndClosureFunctionScope [24] = ObjectRef ArgDesc num-args 2, num-type-args 0, names [] [25] = ICData dynamic target-name 'call', arg-desc CP#24 [26] = ICData dynamic target-name 'call', arg-desc CP#24 [27] = ClosureFunction 2 [28] = InterfaceCall '#lib::B::set:foo', ArgDesc num-args 2, num-type-args 0, names [] [29] = Reserved [30] = EndClosureFunctionScope [31] = ICData dynamic target-name 'call', arg-desc CP#19 } Closure #lib::B::topLevel::'' (dart:core::int y) -> dart:core::Null ClosureCode { EntryFixed 2, 4 CheckStack 0 Push FP[-6] LoadFieldTOS CP#1 PopLocal r0 AllocateContext 1, 2 StoreLocal r1 Push r1 Push r0 StoreContextParent PopLocal r0 Push r0 Push FP[-5] StoreContextVar 1, 0 Push FP[-5] PushConstant CP#3 PushNull PushNull PushConstant CP#4 AssertAssignable 1, CP#5 Drop1 Push r0 LoadContextParent Push r0 LoadContextVar 1, 0 PushInt 1 AddInt StoreContextVar 0, 1 Push r0 LoadContextParent LoadContextVar 0, 1 PushInt 5 CompareIntGt JumpIfFalse L1 Push r0 PushInt 4 StoreContextVar 1, 1 AllocateClosure CP#6 StoreLocal r2 Push r2 PushNull StoreFieldTOS CP#10 Push r2 PushNull StoreFieldTOS CP#12 Push r2 PushConstant CP#14 StoreFieldTOS CP#15 Push r2 PushConstant CP#6 StoreFieldTOS CP#17 Push r2 Push r0 StoreFieldTOS CP#1 PopLocal r3 Push r3 DynamicCall CP#20, 1 Drop1 Push r0 LoadContextVar 1, 1 DirectCall CP#21, 1 Drop1 L1: PushNull ReturnTOS } Closure #lib::B::topLevel::Closure/0::'closure2' () -> void ClosureCode { EntryFixed 1, 3 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 Push r0 LoadContextParent Push r0 LoadContextParent LoadContextVar 0, 1 PushInt 2 AddInt StoreContextVar 0, 2 Push r0 Push r0 LoadContextParent LoadContextVar 0, 0 InterfaceCall CP#7, 1 Push r0 LoadContextVar 1, 0 AddInt StoreContextVar 1, 1 PushNull ReturnTOS } Closure #lib::B::topLevel::'' () -> dart:core::Null ClosureCode { EntryFixed 1, 3 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 Push r0 LoadContextVar 0, 0 Push r0 LoadContextVar 0, 3 InterfaceCall CP#28, 2 Drop1 PushNull ReturnTOS } Class 'C', script = '#lib' extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::C Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Function 'testForLoop', reflectable, debuggable parameters [] (required: 0) return-type void Bytecode { Entry 5 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 PushInt 0 StoreContextVar 0, 0 PushConstant CP#0 PushConstant CP#1 DirectCall CP#2, 2 PopLocal r2 PushConstant CP#0 PushConstant CP#1 DirectCall CP#2, 2 PopLocal r4 AllocateContext 1, 1 StoreLocal r1 Push r1 Push r0 StoreContextParent PopLocal r0 Push r0 PushInt 0 StoreContextVar 1, 0 L2: CheckStack 1 Push r0 LoadContextVar 1, 0 PushInt 10 CompareIntLt JumpIfFalse L1 Push r2 AllocateClosure CP#4 StoreLocal r3 Push r3 PushNull StoreFieldTOS CP#8 Push r3 PushNull StoreFieldTOS CP#10 Push r3 PushConstant CP#12 StoreFieldTOS CP#13 Push r3 PushConstant CP#4 StoreFieldTOS CP#15 Push r3 Push r0 StoreFieldTOS CP#5 InterfaceCall CP#17, 2 Drop1 Push r4 AllocateClosure CP#19 StoreLocal r3 Push r3 PushNull StoreFieldTOS CP#8 Push r3 PushNull StoreFieldTOS CP#10 Push r3 PushConstant CP#12 StoreFieldTOS CP#13 Push r3 PushConstant CP#19 StoreFieldTOS CP#15 Push r3 Push r0 StoreFieldTOS CP#5 InterfaceCall CP#17, 2 Drop1 Push r0 CloneContext 1, 1 PopLocal r0 Push r0 Push r0 LoadContextVar 1, 0 PushInt 1 AddInt StoreLocal r3 StoreContextVar 1, 0 Push r3 Drop1 Jump L2 L1: Push r0 LoadContextParent PopLocal r0 Push r0 LoadContextParent PopLocal r0 PushNull ReturnTOS } ConstantPool { [0] = ObjectRef < dart:core::Function > [1] = ObjectRef const [] [2] = DirectCall 'dart:core::List::_fromLiteral (constructor)', ArgDesc num-args 2, num-type-args 0, names [] [3] = Reserved [4] = ClosureFunction 0 [5] = InstanceField dart:core::_Closure::_context (field) [6] = Reserved [7] = EndClosureFunctionScope [8] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [9] = Reserved [10] = InstanceField dart:core::_Closure::_function_type_arguments (field) [11] = Reserved [12] = EmptyTypeArguments [13] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [14] = Reserved [15] = InstanceField dart:core::_Closure::_function (field) [16] = Reserved [17] = InterfaceCall 'dart:core::List::add', ArgDesc num-args 2, num-type-args 0, names [] [18] = Reserved [19] = ClosureFunction 1 [20] = Type dart:core::int [21] = ObjectRef 'ii' [22] = SubtypeTestCache [23] = EndClosureFunctionScope } Closure #lib::C::testForLoop::'' () -> dart:core::int ClosureCode { EntryFixed 1, 2 CheckStack 0 Push FP[-5] LoadFieldTOS CP#5 PopLocal r0 Push r0 LoadContextVar 1, 0 Push r0 LoadContextParent LoadContextVar 0, 0 AddInt ReturnTOS } Closure #lib::C::testForLoop::'' (dart:core::int ii) -> dart:core::Null ClosureCode { EntryFixed 2, 3 CheckStack 0 Push FP[-6] LoadFieldTOS CP#5 PopLocal r0 Push FP[-5] PushConstant CP#20 PushNull PushNull PushConstant CP#21 AssertAssignable 1, CP#22 Drop1 Push r0 Push FP[-5] Push r0 LoadContextParent LoadContextVar 0, 0 AddInt StoreContextVar 1, 0 PushNull ReturnTOS } Function 'testForInLoop', reflectable, debuggable parameters [dart:core::List < dart:core::int > 'list'] (required: 1) return-type void Bytecode { Entry 5 CheckStack 0 Push FP[-5] InterfaceCall CP#0, 1 PopLocal r2 L2: CheckStack 1 Push r2 InterfaceCall CP#2, 1 JumpIfFalse L1 AllocateContext 0, 1 PopLocal r0 Push r0 Push r2 InterfaceCall CP#4, 1 StoreContextVar 0, 0 AllocateClosure CP#6 StoreLocal r4 Push r4 PushNull StoreFieldTOS CP#10 Push r4 PushNull StoreFieldTOS CP#12 Push r4 PushConstant CP#14 StoreFieldTOS CP#15 Push r4 PushConstant CP#6 StoreFieldTOS CP#17 Push r4 Push r0 StoreFieldTOS CP#7 PopLocal r3 Push r3 DynamicCall CP#20, 1 Drop1 Push r0 LoadContextVar 0, 0 DirectCall CP#21, 1 Drop1 Push r0 LoadContextParent PopLocal r0 Jump L2 L1: PushNull ReturnTOS } ConstantPool { [0] = InterfaceCall 'dart:core::Iterable::get:iterator', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved [2] = InterfaceCall 'dart:core::Iterator::moveNext', ArgDesc num-args 1, num-type-args 0, names [] [3] = Reserved [4] = InterfaceCall 'dart:core::Iterator::get:current', ArgDesc num-args 1, num-type-args 0, names [] [5] = Reserved [6] = ClosureFunction 0 [7] = InstanceField dart:core::_Closure::_context (field) [8] = Reserved [9] = EndClosureFunctionScope [10] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [11] = Reserved [12] = InstanceField dart:core::_Closure::_function_type_arguments (field) [13] = Reserved [14] = EmptyTypeArguments [15] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [16] = Reserved [17] = InstanceField dart:core::_Closure::_function (field) [18] = Reserved [19] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [20] = ICData dynamic target-name 'call', arg-desc CP#19 [21] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [22] = Reserved } Closure #lib::C::testForInLoop::'' () -> dart:core::Null ClosureCode { EntryFixed 1, 3 CheckStack 0 Push FP[-5] LoadFieldTOS CP#7 PopLocal r0 Push r0 Push r0 LoadContextVar 0, 0 PushInt 1 AddInt StoreContextVar 0, 0 PushNull ReturnTOS } Class 'D', script = '#lib' type-params (args: 1) extends dart:core::Object Function '', constructor, reflectable parameters [] (required: 0) return-type #lib::D < #lib::D::TypeParam/0 > Bytecode { Entry 0 CheckStack 0 Push FP[-5] DirectCall CP#0, 1 Drop1 PushNull ReturnTOS } ConstantPool { [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] [1] = Reserved } Function 'foo', reflectable, debuggable parameters [#lib::D::TypeParam/0 't'] (required: 1) return-type dynamic Bytecode { Entry 3 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 Push FP[-5] StoreContextVar 0, 0 Push FP[-5] PushConstant CP#0 Push FP[-6] LoadTypeArgumentsField CP#1 PushNull PushConstant CP#2 AssertAssignable 0, CP#3 Drop1 AllocateClosure CP#4 StoreLocal r2 Push r2 Push FP[-6] LoadTypeArgumentsField CP#1 StoreFieldTOS CP#8 Push r2 PushNull StoreFieldTOS CP#10 Push r2 PushConstant CP#12 StoreFieldTOS CP#13 Push r2 PushConstant CP#4 StoreFieldTOS CP#15 Push r2 Push r0 StoreFieldTOS CP#5 ReturnTOS } Parameter flags: [2] ConstantPool { [0] = Type #lib::D::TypeParam/0 [1] = TypeArgumentsField #lib::D [2] = ObjectRef 't' [3] = SubtypeTestCache [4] = ClosureFunction 0 [5] = InstanceField dart:core::_Closure::_context (field) [6] = Reserved [7] = EndClosureFunctionScope [8] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [9] = Reserved [10] = InstanceField dart:core::_Closure::_function_type_arguments (field) [11] = Reserved [12] = EmptyTypeArguments [13] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [14] = Reserved [15] = InstanceField dart:core::_Closure::_function (field) [16] = Reserved } Closure #lib::D::foo::'' () -> #lib::D::TypeParam/0 ClosureCode { EntryFixed 1, 2 CheckStack 0 Push FP[-5] LoadFieldTOS CP#5 PopLocal r0 Push r0 LoadContextVar 0, 0 ReturnTOS } Function 'bar', reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 3 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 Push FP[-5] StoreContextVar 0, 0 AllocateClosure CP#0 StoreLocal r2 Push r2 Push FP[-5] LoadTypeArgumentsField CP#5 StoreFieldTOS CP#6 Push r2 PushNull StoreFieldTOS CP#8 Push r2 PushConstant CP#10 StoreFieldTOS CP#11 Push r2 PushConstant CP#0 StoreFieldTOS CP#13 Push r2 Push r0 StoreFieldTOS CP#1 ReturnTOS } ConstantPool { [0] = ClosureFunction 0 [1] = InstanceField dart:core::_Closure::_context (field) [2] = Reserved [3] = ClosureFunction 1 [4] = EndClosureFunctionScope [5] = TypeArgumentsField #lib::D [6] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) [7] = Reserved [8] = InstanceField dart:core::_Closure::_function_type_arguments (field) [9] = Reserved [10] = EmptyTypeArguments [11] = InstanceField dart:core::_Closure::_delayed_type_arguments (field) [12] = Reserved [13] = InstanceField dart:core::_Closure::_function (field) [14] = Reserved [15] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [16] = ICData dynamic target-name 'call', arg-desc CP#15 [17] = EndClosureFunctionScope } Closure #lib::D::bar::'' () -> dart:core::Null ClosureCode { EntryFixed 1, 4 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 AllocateClosure CP#3 StoreLocal r3 Push r3 Push r0 LoadContextVar 0, 0 LoadTypeArgumentsField CP#5 StoreFieldTOS CP#6 Push r3 PushNull StoreFieldTOS CP#8 Push r3 PushConstant CP#10 StoreFieldTOS CP#11 Push r3 PushConstant CP#3 StoreFieldTOS CP#13 Push r3 Push r0 StoreFieldTOS CP#1 PopLocal r2 Push r2 DynamicCall CP#16, 1 Drop1 PushNull ReturnTOS } Closure #lib::D::bar::Closure/0::'inner' () -> dart:core::Null ClosureCode { EntryFixed 1, 2 CheckStack 0 Push FP[-5] LoadFieldTOS CP#1 PopLocal r0 PushNull ReturnTOS } } ]library #lib from "#lib" as #lib { typedef IntFunc = (dart.core::int) → dynamic; class C1 extends dart.core::Object { synthetic constructor •() → #lib::C1 : super dart.core::Object::•() ; } class C2 extends dart.core::Object { synthetic constructor •() → #lib::C2 : super dart.core::Object::•() ; } class C3 extends dart.core::Object { synthetic constructor •() → #lib::C3 : super dart.core::Object::•() ; } class C4 extends dart.core::Object { synthetic constructor •() → #lib::C4 : super dart.core::Object::•() ; } class C5 extends dart.core::Object { synthetic constructor •() → #lib::C5 : super dart.core::Object::•() ; } class C6 extends dart.core::Object { synthetic constructor •() → #lib::C6 : super dart.core::Object::•() ; } class C7 extends dart.core::Object { synthetic constructor •() → #lib::C7 : super dart.core::Object::•() ; } class C8 extends dart.core::Object { synthetic constructor •() → #lib::C8 : super dart.core::Object::•() ; } class A extends dart.core::Object { synthetic constructor •() → #lib::A<#lib::A::T1, #lib::A::T2> : super dart.core::Object::•() ; method foo() → void { function nested1() → void { function nested2() → void { () → dart.core::Null nested3 = () → dart.core::Null { dart.core::print([#lib::A::T1, #lib::A::T2, #lib::A::foo::T3, #lib::A::foo::T4, T5, T6, T7, T8]); #lib::callWithArgs<#lib::A::T1, #lib::A::T2, #lib::A::foo::T3, #lib::A::foo::T4, T5, T6, T7, T8>(); }; [@vm.call-site-attributes.metadata=receiverType:() → dart.core::Null] nested3.call(); } [@vm.call-site-attributes.metadata=receiverType:() → void] nested2.call<#lib::C7, #lib::C8>(); [@vm.call-site-attributes.metadata=receiverType:() → void] nested2.call, dart.core::List<#lib::C8>>(); } [@vm.call-site-attributes.metadata=receiverType:() → void] nested1.call<#lib::C5, #lib::C6>(); [@vm.call-site-attributes.metadata=receiverType:() → void] nested1.call, dart.core::List<#lib::C6>>(); } } class B extends dart.core::Object { field dart.core::int foo = null; synthetic constructor •() → #lib::B : super dart.core::Object::•() ; method topLevel() → void { { dart.core::int x = 1; { dart.core::int y = 2; dart.core::int z = 3; (dart.core::int) → dart.core::Null closure1 = (dart.core::int y) → dart.core::Null { x = y.{dart.core::num::+}(1); if(x.{dart.core::num::>}(5)) { dart.core::int w = 4; function closure2() → void { z = x.{dart.core::num::+}(2); w = this.{#lib::B::foo}.{dart.core::num::+}(y); } [@vm.call-site-attributes.metadata=receiverType:() → void] closure2.call(); dart.core::print(w); } }; [@vm.call-site-attributes.metadata=receiverType:(dart.core::int) → dart.core::Null] closure1.call(10); [@vm.call-site-attributes.metadata=receiverType:(dart.core::int) → dart.core::Null] closure1.call(11); dart.core::print(y); dart.core::print(z); } dart.core::print(x); } { dart.core::int x = 42; () → dart.core::Null closure3 = () → dart.core::Null { this.{#lib::B::foo} = x; }; [@vm.call-site-attributes.metadata=receiverType:() → dart.core::Null] closure3.call(); } } } class C extends dart.core::Object { synthetic constructor •() → #lib::C : super dart.core::Object::•() ; method testForLoop() → void { dart.core::int delta = 0; dart.core::List getI = []; dart.core::List setI = []; for (dart.core::int i = 0; i.{dart.core::num::<}(10); i = i.{dart.core::num::+}(1)) { [@vm.call-site-attributes.metadata=receiverType:dart.core::List] getI.{dart.core::List::add}(() → dart.core::int => i.{dart.core::num::+}(delta)); [@vm.call-site-attributes.metadata=receiverType:dart.core::List] setI.{dart.core::List::add}((dart.core::int ii) → dart.core::Null { i = ii.{dart.core::num::+}(delta); }); } } method testForInLoop(dart.core::List list) → void { for (dart.core::int i in list) { () → dart.core::Null inc = () → dart.core::Null { i = i.{dart.core::num::+}(1); }; [@vm.call-site-attributes.metadata=receiverType:() → dart.core::Null] inc.call(); dart.core::print(i); } } } class D extends dart.core::Object { synthetic constructor •() → #lib::D<#lib::D::T> : super dart.core::Object::•() ; method foo(generic-covariant-impl #lib::D::T t) → dynamic { return () → #lib::D::T => t; } method bar() → dynamic { return () → dart.core::Null { function inner() → dart.core::Null {} [@vm.call-site-attributes.metadata=receiverType:() → dart.core::Null] inner.call(); }; } } static method simpleClosure() → dart.core::int { dart.core::int x = 5; (dart.core::int) → dart.core::Null inc = (dart.core::int y) → dart.core::Null { x = x.{dart.core::num::+}(y); }; [@vm.call-site-attributes.metadata=receiverType:(dart.core::int) → dart.core::Null] inc.call(3); return x; } static method callWithArgs() → void { dart.core::print([#lib::callWithArgs::T1, #lib::callWithArgs::T2, #lib::callWithArgs::T3, #lib::callWithArgs::T4, #lib::callWithArgs::T5, #lib::callWithArgs::T6, #lib::callWithArgs::T7, #lib::callWithArgs::T8]); } static method callA() → void { new #lib::A::•<#lib::C1, #lib::C2>().{#lib::A::foo}<#lib::C3, #lib::C4>(); new #lib::A::•<#lib::C1, #lib::C2>().{#lib::A::foo}, dart.core::List<#lib::C4>>(); new #lib::A::•, dart.core::List<#lib::C2>>().{#lib::A::foo}, dart.core::List<#lib::C4>>(); } static method testPartialInstantiation() → (dart.core::int) → dynamic { function foo(T t) → void {} (dart.core::int) → dynamic intFunc = foo; return intFunc; } static method main() → dynamic {} }