| main = #lib::main; |
| [@vm.bytecode= |
| ComponentBytecodeMetadata { |
| |
| Bytecode (version: stable) |
| Main library: #lib |
| |
| } |
| ] [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| 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 2, CP#17 |
| 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::'<anonymous closure>' (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 <dart:core::Object T1, dart:core::Object T2, dart:core::Object T3, dart:core::Object T4, dart:core::Object T5, dart:core::Object T6, dart:core::Object T7, dart:core::Object T8> |
| 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 2, CP#9 |
| DirectCall 1, CP#11 |
| 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 1, CP#3 |
| Drop1 |
| InterfaceCall 2, CP#5 |
| Drop1 |
| PushConstant CP#7 |
| PushConstant CP#2 |
| PushConstant CP#1 |
| AllocateT |
| StoreLocal r0 |
| Push r0 |
| DirectCall 1, CP#3 |
| Drop1 |
| InterfaceCall 2, CP#5 |
| Drop1 |
| PushConstant CP#7 |
| PushConstant CP#8 |
| PushConstant CP#1 |
| AllocateT |
| StoreLocal r0 |
| Push r0 |
| DirectCall 1, CP#3 |
| Drop1 |
| InterfaceCall 2, CP#5 |
| 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 2, CP#19 |
| 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' <dart:core::Object T> (#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 4, CP#8 |
| 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 { |
| } |
| |
| } |
| |
| } |
| ]library #lib from "#lib" as #lib { |
| |
| typedef IntFunc = (dart.core::int) → dynamic; |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C1 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C1 extends dart.core::Object { |
| synthetic constructor •() → #lib::C1 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C2 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C2 extends dart.core::Object { |
| synthetic constructor •() → #lib::C2 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C3 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C3 extends dart.core::Object { |
| synthetic constructor •() → #lib::C3 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C4 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C4 extends dart.core::Object { |
| synthetic constructor •() → #lib::C4 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C5 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C5 extends dart.core::Object { |
| synthetic constructor •() → #lib::C5 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C6 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C6 extends dart.core::Object { |
| synthetic constructor •() → #lib::C6 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C7 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C7 extends dart.core::Object { |
| synthetic constructor •() → #lib::C7 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C8 |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| } |
| |
| } |
| ] class C8 extends dart.core::Object { |
| synthetic constructor •() → #lib::C8 |
| : super dart.core::Object::•() |
| ; |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| 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 1, CP#0 |
| 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 <dart:core::Object T3, dart:core::Object T4> |
| 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 2, CP#44 |
| Drop1 |
| PushConstant CP#45 |
| Push r3 |
| DynamicCall 2, CP#46 |
| 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' <dart:core::Object T5, dart:core::Object T6> () -> 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 4, CP#8 |
| 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 2, CP#39 |
| Drop1 |
| PushConstant CP#40 |
| Push r3 |
| DynamicCall 2, CP#41 |
| Drop1 |
| PushNull |
| ReturnTOS |
| |
| } |
| |
| Closure #lib::A::foo::Closure/0::'nested2' <dart:core::Object T7, dart:core::Object T8> () -> 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 4, CP#8 |
| 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 1, CP#35 |
| Drop1 |
| PushNull |
| ReturnTOS |
| |
| } |
| |
| Closure #lib::A::foo::Closure/1::'<anonymous closure>' () -> 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 2, CP#22 |
| DirectCall 1, CP#24 |
| Drop1 |
| Push r1 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#14 |
| Push r0 |
| InstantiateTypeArgumentsTOS 0, CP#26 |
| DirectCall 1, CP#27 |
| Drop1 |
| PushNull |
| ReturnTOS |
| |
| } |
| |
| } |
| |
| } |
| ] class A<T1 extends dart.core::Object = dynamic, T2 extends dart.core::Object = dynamic> extends dart.core::Object { |
| synthetic constructor •() → #lib::A<#lib::A::T1, #lib::A::T2> |
| : super dart.core::Object::•() |
| ; |
| method foo<T3 extends dart.core::Object = dynamic, T4 extends dart.core::Object = dynamic>() → void { |
| function nested1<T5 extends dart.core::Object = dynamic, T6 extends dart.core::Object = dynamic>() → void { |
| function nested2<T7 extends dart.core::Object = dynamic, T8 extends dart.core::Object = dynamic>() → void { |
| () → dart.core::Null nested3 = () → dart.core::Null { |
| dart.core::print(<dart.core::Type>[#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:<T7 extends dart.core::Object = dynamic, T8 extends dart.core::Object = dynamic>() → void] nested2.call<#lib::C7, #lib::C8>(); |
| [@vm.call-site-attributes.metadata=receiverType:<T7 extends dart.core::Object = dynamic, T8 extends dart.core::Object = dynamic>() → void] nested2.call<dart.core::List<#lib::C7>, dart.core::List<#lib::C8>>(); |
| } |
| [@vm.call-site-attributes.metadata=receiverType:<T5 extends dart.core::Object = dynamic, T6 extends dart.core::Object = dynamic>() → void] nested1.call<#lib::C5, #lib::C6>(); |
| [@vm.call-site-attributes.metadata=receiverType:<T5 extends dart.core::Object = dynamic, T6 extends dart.core::Object = dynamic>() → void] nested1.call<dart.core::List<#lib::C5>, dart.core::List<#lib::C6>>(); |
| } |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| 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 1, CP#0 |
| 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 2, CP#25 |
| Drop1 |
| Push r3 |
| PushInt 11 |
| DynamicCall 2, CP#26 |
| Drop1 |
| Push r2 |
| DirectCall 1, CP#21 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 2 |
| DirectCall 1, CP#21 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 1 |
| DirectCall 1, CP#21 |
| 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 1, CP#31 |
| 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::'<anonymous closure>' (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 1, CP#20 |
| Drop1 |
| Push r0 |
| LoadContextVar 1, 1 |
| DirectCall 1, CP#21 |
| 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 1, CP#7 |
| Push r0 |
| LoadContextVar 1, 0 |
| AddInt |
| StoreContextVar 1, 1 |
| PushNull |
| ReturnTOS |
| |
| } |
| |
| Closure #lib::B::topLevel::'<anonymous closure>' () -> 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 2, CP#28 |
| Drop1 |
| PushNull |
| ReturnTOS |
| |
| } |
| |
| } |
| |
| } |
| ] 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(); |
| } |
| } |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::C |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| 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 2, CP#2 |
| PopLocal r2 |
| PushConstant CP#0 |
| PushConstant CP#1 |
| DirectCall 2, CP#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 2, CP#17 |
| 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 2, CP#17 |
| 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 <dynamic> [] |
| [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::'<anonymous closure>' () -> 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::'<anonymous closure>' (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 1, CP#0 |
| PopLocal r2 |
| L2: |
| CheckStack 1 |
| Push r2 |
| InterfaceCall 1, CP#2 |
| JumpIfFalse L1 |
| AllocateContext 0, 1 |
| PopLocal r0 |
| Push r0 |
| Push r2 |
| InterfaceCall 1, CP#4 |
| 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 1, CP#20 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 0 |
| DirectCall 1, CP#21 |
| 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::'<anonymous closure>' () -> 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 C extends dart.core::Object { |
| synthetic constructor •() → #lib::C |
| : super dart.core::Object::•() |
| ; |
| method testForLoop() → void { |
| dart.core::int delta = 0; |
| dart.core::List<dart.core::Function> getI = <dart.core::Function>[]; |
| dart.core::List<dart.core::Function> setI = <dart.core::Function>[]; |
| 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<dart.core::Function>] getI.{dart.core::List::add}(() → dart.core::int => i.{dart.core::num::+}(delta)); |
| [@vm.call-site-attributes.metadata=receiverType:dart.core::List<dart.core::Function>] setI.{dart.core::List::add}((dart.core::int ii) → dart.core::Null { |
| i = ii.{dart.core::num::+}(delta); |
| }); |
| } |
| } |
| method testForInLoop(dart.core::List<dart.core::int> 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); |
| } |
| } |
| } |
| [@vm.bytecode= |
| MembersBytecodeMetadata { |
| |
| Members { |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::D < #lib::D::TypeParam/0 > |
| |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall 1, CP#0 |
| 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::'<anonymous closure>' () -> #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::'<anonymous closure>' () -> 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 1, CP#16 |
| 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 |
| |
| } |
| |
| } |
| |
| } |
| ] class D<T extends dart.core::Object = dynamic> 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<T1 extends dart.core::Object = dynamic, T2 extends dart.core::Object = dynamic, T3 extends dart.core::Object = dynamic, T4 extends dart.core::Object = dynamic, T5 extends dart.core::Object = dynamic, T6 extends dart.core::Object = dynamic, T7 extends dart.core::Object = dynamic, T8 extends dart.core::Object = dynamic>() → void { |
| dart.core::print(<dart.core::Type>[#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::C3>, dart.core::List<#lib::C4>>(); |
| new #lib::A::•<dart.core::List<#lib::C1>, dart.core::List<#lib::C2>>().{#lib::A::foo}<dart.core::List<#lib::C3>, dart.core::List<#lib::C4>>(); |
| } |
| static method testPartialInstantiation() → (dart.core::int) → dynamic { |
| function foo<T extends dart.core::Object = dynamic>(T t) → void {} |
| (dart.core::int) → dynamic intFunc = foo<dart.core::int>; |
| return intFunc; |
| } |
| static method main() → dynamic {} |
| } |