| Bytecode |
| Dynamic Module Entry Point: DART_SDK/pkg/dart2bytecode/testcases/closures.dart::main |
| Library 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| name '#lib' |
| script 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| |
| Class '', script = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| |
| |
| 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 |
| PushConstant CP#0 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r3 |
| PopLocal r2 |
| Push r2 |
| StoreLocal r3 |
| PushInt 3 |
| Push r3 |
| UncheckedClosureCall CP#7, 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] = ObjectRef ArgDesc num-args 2, num-type-args 0, names [] |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::simpleClosure::'<anonymous closure>' (dart:core::int y) -> Null |
| ClosureCode { |
| Entry 3 |
| Push FP[-6] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| JumpIfUnchecked L1 |
| Push FP[-5] |
| PushConstant CP#3 |
| PushNull |
| PushNull |
| PushConstant CP#4 |
| AssertAssignable 1, CP#5 |
| Drop1 |
| L1: |
| Push r0 |
| Push r0 |
| LoadContextVar 0, 0 |
| Push FP[-5] |
| AddInt |
| StoreContextVar 0, 0 |
| PushNull |
| ReturnTOS |
| } |
| |
| |
| Function 'callWithArgs', static, reflectable, debuggable |
| type-params <'T1' extends dart:core::Object? (default dynamic), 'T2' extends dart:core::Object? (default dynamic), 'T3' extends dart:core::Object? (default dynamic), 'T4' extends dart:core::Object? (default dynamic), 'T5' extends dart:core::Object? (default dynamic), 'T6' extends dart:core::Object? (default dynamic), 'T7' extends dart:core::Object? (default dynamic), 'T8' extends dart:core::Object? (default dynamic)> |
| parameters [] (required: 0) |
| return-type void |
| |
| Bytecode { |
| Entry 1 |
| CheckFunctionTypeArgs 8, r0 |
| CheckStack 0 |
| PushConstant CP#0 |
| PushNull |
| Push r0 |
| InstantiateType CP#1 |
| PushNull |
| Push r0 |
| InstantiateType CP#2 |
| PushNull |
| Push r0 |
| InstantiateType CP#3 |
| PushNull |
| Push r0 |
| InstantiateType CP#4 |
| PushNull |
| Push r0 |
| InstantiateType CP#5 |
| PushNull |
| Push r0 |
| InstantiateType CP#6 |
| PushNull |
| Push r0 |
| InstantiateType CP#7 |
| PushNull |
| Push r0 |
| InstantiateType CP#8 |
| DirectCall CP#9, 9 |
| DirectCall CP#11, 1 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ObjectRef < dart:core::Type > |
| [1] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/0 |
| [2] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/1 |
| [3] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/2 |
| [4] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/3 |
| [5] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/4 |
| [6] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/5 |
| [7] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/6 |
| [8] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs::TypeParam/7 |
| [9] = DirectCall 'dart:core::_GrowableList::_literal8 (constructor)', ArgDesc num-args 9, 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 < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C3, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C4 > |
| [1] = Class DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A |
| [2] = ObjectRef < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C1, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C2 > |
| [3] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [4] = Reserved |
| [5] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo', ArgDesc num-args 1, num-type-args 2, names [] |
| [6] = Reserved |
| [7] = ObjectRef < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C3 >, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C4 > > |
| [8] = ObjectRef < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C1 >, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C2 > > |
| } |
| |
| |
| Function 'testPartialInstantiation', static, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type FunctionType (dart:core::int) -> void |
| |
| Bytecode { |
| Entry 7 |
| CheckStack 0 |
| PushConstant CP#0 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r3 |
| Push r3 |
| PushConstant CP#5 |
| StoreFieldTOS CP#3 |
| PopLocal r2 |
| Push r2 |
| StoreLocal r3 |
| PushConstant CP#14 |
| StoreLocal r6 |
| DirectCall CP#15, 2 |
| Drop1 |
| Push r3 |
| LoadFieldTOS CP#17 |
| Push r3 |
| LoadFieldTOS CP#1 |
| Push r3 |
| LoadFieldTOS CP#19 |
| AllocateClosure |
| StoreLocal r5 |
| Push r6 |
| StoreFieldTOS CP#3 |
| Push r5 |
| Push r3 |
| LoadFieldTOS CP#6 |
| StoreFieldTOS CP#6 |
| 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 DART_SDK/pkg/dart2bytecode/testcases/closures.dart::testPartialInstantiation::Closure/0::TypeParam/0 |
| [11] = ObjectRef 't' |
| [12] = SubtypeTestCache |
| [13] = EndClosureFunctionScope |
| [14] = ObjectRef < dart:core::int > |
| [15] = DirectCall 'dart:_internal::_boundsCheckForPartialInstantiation', ArgDesc num-args 2, num-type-args 0, names [] |
| [16] = Reserved |
| [17] = InstanceField dart:core::_Closure::_function (field) |
| [18] = Reserved |
| [19] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field) |
| [20] = Reserved |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::testPartialInstantiation::'foo' type-params <'T' extends dart:core::Object? (default dynamic)> (DART_SDK/pkg/dart2bytecode/testcases/closures.dart::testPartialInstantiation::Closure/0::TypeParam/0 t) -> void |
| ClosureCode { |
| Entry 3 |
| 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: |
| CheckStack 0 |
| Push r0 |
| Push FP[-6] |
| LoadFieldTOS CP#6 |
| PushInt 0 |
| PushInt 1 |
| DirectCall CP#8, 4 |
| PopLocal r0 |
| JumpIfUnchecked L3 |
| Push FP[-5] |
| PushConstant CP#10 |
| PushNull |
| Push r0 |
| PushConstant CP#11 |
| AssertAssignable 0, CP#12 |
| Drop1 |
| L3: |
| PushNull |
| ReturnTOS |
| } |
| |
| |
| Function 'main', static, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dynamic |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| } |
| |
| Class 'C1', script = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| type-params <'T1' extends dart:core::Object? (default dynamic), 'T2' extends dart:core::Object? (default dynamic)> (args: 2) |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 <'T3' extends dart:core::Object? (default dynamic), 'T4' extends dart:core::Object? (default dynamic)> |
| parameters [] (required: 0) |
| return-type void |
| |
| Bytecode { |
| Entry 5 |
| CheckFunctionTypeArgs 2, r0 |
| CheckStack 0 |
| AllocateContext 0, 1 |
| PopLocal r1 |
| Push r1 |
| Push FP[-5] |
| StoreContextVar 0, 0 |
| PushConstant CP#0 |
| Push r1 |
| Push FP[-5] |
| LoadTypeArgumentsField CP#14 |
| AllocateClosure |
| StoreLocal r4 |
| Push r4 |
| Push r0 |
| StoreFieldTOS CP#6 |
| Push r4 |
| PushConstant CP#5 |
| StoreFieldTOS CP#3 |
| PopLocal r3 |
| PushConstant CP#36 |
| Push r3 |
| Push r3 |
| UncheckedClosureCall CP#33, 2 |
| Drop1 |
| PushConstant CP#37 |
| Push r3 |
| Push r3 |
| UncheckedClosureCall CP#33, 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 DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::TypeParam/0 |
| [14] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A |
| [15] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::TypeParam/1 |
| [16] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::TypeParam/0 |
| [17] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::TypeParam/1 |
| [18] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/0::TypeParam/0 |
| [19] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/0::TypeParam/1 |
| [20] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/1::TypeParam/0 |
| [21] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/1::TypeParam/1 |
| [22] = DirectCall 'dart:core::_GrowableList::_literal8 (constructor)', ArgDesc num-args 9, 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 < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::TypeParam/1, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::TypeParam/1, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/0::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/0::TypeParam/1, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/1::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/1::TypeParam/1 > |
| [27] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::callWithArgs', ArgDesc num-args 0, num-type-args 8, names [] |
| [28] = Reserved |
| [29] = EndClosureFunctionScope |
| [30] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] |
| [31] = EndClosureFunctionScope |
| [32] = ObjectRef < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C7, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C8 > |
| [33] = ObjectRef ArgDesc num-args 1, num-type-args 2, names [] |
| [34] = ObjectRef < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C7 >, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C8 > > |
| [35] = EndClosureFunctionScope |
| [36] = ObjectRef < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C5, DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C6 > |
| [37] = ObjectRef < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C5 >, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C6 > > |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::'nested1' type-params <'T5' extends dart:core::Object? (default dynamic), 'T6' extends dart:core::Object? (default dynamic)> () -> void |
| ClosureCode { |
| Entry 5 |
| 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: |
| CheckStack 0 |
| Push r0 |
| Push FP[-5] |
| LoadFieldTOS CP#6 |
| PushInt 2 |
| PushInt 4 |
| DirectCall CP#8, 4 |
| PopLocal r0 |
| PushConstant CP#10 |
| Push r1 |
| Push r1 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#14 |
| AllocateClosure |
| StoreLocal r4 |
| Push r4 |
| Push r0 |
| StoreFieldTOS CP#6 |
| Push r4 |
| PushConstant CP#5 |
| StoreFieldTOS CP#3 |
| PopLocal r3 |
| PushConstant CP#32 |
| Push r3 |
| Push r3 |
| UncheckedClosureCall CP#33, 2 |
| Drop1 |
| PushConstant CP#34 |
| Push r3 |
| Push r3 |
| UncheckedClosureCall CP#33, 2 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/0::'nested2' type-params <'T7' extends dart:core::Object? (default dynamic), 'T8' extends dart:core::Object? (default dynamic)> () -> void |
| ClosureCode { |
| Entry 5 |
| 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: |
| CheckStack 0 |
| Push r0 |
| Push FP[-5] |
| LoadFieldTOS CP#6 |
| PushInt 4 |
| PushInt 6 |
| DirectCall CP#8, 4 |
| PopLocal r0 |
| PushConstant CP#11 |
| Push r1 |
| Push r1 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#14 |
| AllocateClosure |
| StoreLocal r4 |
| Push r4 |
| Push r0 |
| StoreFieldTOS CP#6 |
| PopLocal r3 |
| Push r3 |
| StoreLocal r4 |
| Push r4 |
| UncheckedClosureCall CP#30, 1 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::A::foo::Closure/1::'<anonymous closure>' () -> Null |
| ClosureCode { |
| Entry 3 |
| Push FP[-5] |
| LoadFieldTOS CP#1 |
| PopLocal r1 |
| CheckStack 0 |
| Push FP[-5] |
| LoadFieldTOS CP#6 |
| PopLocal r0 |
| PushConstant CP#12 |
| Push r1 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#14 |
| PushNull |
| InstantiateType CP#13 |
| Push r1 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#14 |
| PushNull |
| InstantiateType CP#15 |
| PushNull |
| Push r0 |
| InstantiateType CP#16 |
| PushNull |
| Push r0 |
| InstantiateType CP#17 |
| PushNull |
| Push r0 |
| InstantiateType CP#18 |
| PushNull |
| Push r0 |
| InstantiateType CP#19 |
| PushNull |
| Push r0 |
| InstantiateType CP#20 |
| PushNull |
| Push r0 |
| InstantiateType CP#21 |
| DirectCall CP#22, 9 |
| 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 = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| Field 'foo', type = dart:core::int, getter = 'get:foo', setter = 'set:foo', reflectable, has-initializer |
| value = const 0 |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| PushInt 0 |
| StoreFieldTOS CP#0 |
| Push FP[-5] |
| DirectCall CP#2, 1 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::foo (field) |
| [1] = Reserved |
| [2] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [3] = 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 |
| PushConstant CP#0 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r4 |
| PopLocal r3 |
| Push r3 |
| StoreLocal r4 |
| PushInt 10 |
| Push r4 |
| UncheckedClosureCall CP#14, 2 |
| Drop1 |
| Push r3 |
| StoreLocal r4 |
| PushInt 11 |
| Push r4 |
| UncheckedClosureCall CP#14, 2 |
| Drop1 |
| Push r2 |
| DirectCall CP#11, 1 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 2 |
| DirectCall CP#11, 1 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 1 |
| DirectCall CP#11, 1 |
| Drop1 |
| Push r0 |
| PushInt 42 |
| StoreContextVar 0, 3 |
| PushConstant CP#15 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r3 |
| PopLocal r2 |
| Push r2 |
| StoreLocal r3 |
| Push r3 |
| UncheckedClosureCall CP#10, 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 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::get:foo', ArgDesc num-args 1, num-type-args 0, names [] |
| [8] = Reserved |
| [9] = EndClosureFunctionScope |
| [10] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] |
| [11] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] |
| [12] = Reserved |
| [13] = EndClosureFunctionScope |
| [14] = ObjectRef ArgDesc num-args 2, num-type-args 0, names [] |
| [15] = ClosureFunction 2 |
| [16] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::set:foo', ArgDesc num-args 2, num-type-args 0, names [] |
| [17] = Reserved |
| [18] = EndClosureFunctionScope |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::topLevel::'<anonymous closure>' (dart:core::int y) -> Null |
| ClosureCode { |
| Entry 4 |
| Push FP[-6] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| AllocateContext 1, 2 |
| StoreLocal r1 |
| Push r1 |
| Push r0 |
| StoreContextParent |
| PopLocal r0 |
| Push r0 |
| Push FP[-5] |
| StoreContextVar 1, 0 |
| JumpIfUnchecked L1 |
| Push FP[-5] |
| PushConstant CP#3 |
| PushNull |
| PushNull |
| PushConstant CP#4 |
| AssertAssignable 1, CP#5 |
| Drop1 |
| L1: |
| Push r0 |
| LoadContextParent |
| Push r0 |
| LoadContextVar 1, 0 |
| PushInt 1 |
| AddInt |
| StoreContextVar 0, 1 |
| Push r0 |
| LoadContextParent |
| LoadContextVar 0, 1 |
| PushInt 5 |
| CompareIntGt |
| JumpIfFalse L2 |
| Push r0 |
| PushInt 4 |
| StoreContextVar 1, 1 |
| PushConstant CP#6 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r2 |
| PopLocal r3 |
| Push r3 |
| Push r3 |
| UncheckedClosureCall CP#10, 1 |
| Drop1 |
| Push r0 |
| LoadContextVar 1, 1 |
| DirectCall CP#11, 1 |
| Drop1 |
| L2: |
| PushNull |
| ReturnTOS |
| } |
| |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::topLevel::Closure/0::'closure2' () -> void |
| ClosureCode { |
| Entry 3 |
| Push FP[-5] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| 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 DART_SDK/pkg/dart2bytecode/testcases/closures.dart::B::topLevel::'<anonymous closure>' () -> Null |
| ClosureCode { |
| Entry 3 |
| Push FP[-5] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| Push r0 |
| LoadContextVar 0, 0 |
| Push r0 |
| LoadContextVar 0, 3 |
| InterfaceCall CP#16, 2 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| |
| Class 'C', script = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 |
| PushInt 0 |
| DirectCall CP#1, 2 |
| PopLocal r2 |
| PushConstant CP#0 |
| PushInt 0 |
| DirectCall CP#1, 2 |
| PopLocal r3 |
| 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 |
| PushConstant CP#3 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r4 |
| InstantiatedInterfaceCall CP#7, 2 |
| Drop1 |
| Push r3 |
| PushConstant CP#10 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r4 |
| InstantiatedInterfaceCall CP#7, 2 |
| Drop1 |
| Push r0 |
| CloneContext 1, 1 |
| PopLocal r0 |
| Push r0 |
| Push r0 |
| LoadContextVar 1, 0 |
| PushInt 1 |
| AddInt |
| StoreLocal r4 |
| StoreContextVar 1, 0 |
| Push r4 |
| Drop1 |
| Jump L2 |
| L1: |
| Push r0 |
| LoadContextParent |
| PopLocal r0 |
| Push r0 |
| LoadContextParent |
| PopLocal r0 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ObjectRef < dart:core::Function > |
| [1] = DirectCall 'dart:core::_GrowableList:: (constructor)', ArgDesc num-args 2, num-type-args 0, names [] |
| [2] = Reserved |
| [3] = ClosureFunction 0 |
| [4] = InstanceField dart:core::_Closure::_context (field) |
| [5] = Reserved |
| [6] = EndClosureFunctionScope |
| [7] = InstantiatedInterfaceCall 'dart:core::List::add', ArgDesc num-args 2, num-type-args 0, names [], receiver dart:core::List < dart:core::Function > |
| [8] = Reserved |
| [9] = Reserved |
| [10] = ClosureFunction 1 |
| [11] = Type dart:core::int |
| [12] = ObjectRef 'ii' |
| [13] = SubtypeTestCache |
| [14] = EndClosureFunctionScope |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C::testForLoop::'<anonymous closure>' () -> dart:core::int |
| ClosureCode { |
| Entry 2 |
| Push FP[-5] |
| LoadFieldTOS CP#4 |
| PopLocal r0 |
| CheckStack 0 |
| Push r0 |
| LoadContextVar 1, 0 |
| Push r0 |
| LoadContextParent |
| LoadContextVar 0, 0 |
| AddInt |
| ReturnTOS |
| } |
| |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C::testForLoop::'<anonymous closure>' (dart:core::int ii) -> Null |
| ClosureCode { |
| Entry 3 |
| Push FP[-6] |
| LoadFieldTOS CP#4 |
| PopLocal r0 |
| CheckStack 0 |
| JumpIfUnchecked L1 |
| Push FP[-5] |
| PushConstant CP#11 |
| PushNull |
| PushNull |
| PushConstant CP#12 |
| AssertAssignable 1, CP#13 |
| Drop1 |
| L1: |
| 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 |
| PushConstant CP#6 |
| Push r0 |
| PushNull |
| AllocateClosure |
| StoreLocal r4 |
| PopLocal r3 |
| Push r3 |
| StoreLocal r4 |
| Push r4 |
| UncheckedClosureCall CP#10, 1 |
| Drop1 |
| Push r0 |
| LoadContextVar 0, 0 |
| DirectCall CP#11, 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] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] |
| [11] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] |
| [12] = Reserved |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::C::testForInLoop::'<anonymous closure>' () -> Null |
| ClosureCode { |
| Entry 3 |
| Push FP[-5] |
| LoadFieldTOS CP#7 |
| PopLocal r0 |
| CheckStack 0 |
| Push r0 |
| Push r0 |
| LoadContextVar 0, 0 |
| PushInt 1 |
| AddInt |
| StoreContextVar 0, 0 |
| PushNull |
| ReturnTOS |
| } |
| |
| Class 'D', script = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart' |
| type-params <'T' extends dart:core::Object? (default dynamic)> (args: 1) |
| extends dart:core::Object |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D < DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 [DART_SDK/pkg/dart2bytecode/testcases/closures.dart::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 |
| JumpIfUnchecked L1 |
| Push FP[-5] |
| PushConstant CP#0 |
| Push FP[-6] |
| LoadTypeArgumentsField CP#1 |
| PushNull |
| PushConstant CP#2 |
| AssertAssignable 0, CP#3 |
| Drop1 |
| L1: |
| PushConstant CP#4 |
| Push r0 |
| Push FP[-6] |
| LoadTypeArgumentsField CP#1 |
| AllocateClosure |
| StoreLocal r2 |
| ReturnTOS |
| } |
| Parameter flags: [2] |
| ConstantPool { |
| [0] = Type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D::TypeParam/0 |
| [1] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D |
| [2] = ObjectRef 't' |
| [3] = SubtypeTestCache |
| [4] = ClosureFunction 0 |
| [5] = InstanceField dart:core::_Closure::_context (field) |
| [6] = Reserved |
| [7] = EndClosureFunctionScope |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D::foo::'<anonymous closure>' () -> DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D::TypeParam/0 |
| ClosureCode { |
| Entry 2 |
| Push FP[-5] |
| LoadFieldTOS CP#5 |
| PopLocal r0 |
| CheckStack 0 |
| 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 |
| PushConstant CP#0 |
| Push r0 |
| Push FP[-5] |
| LoadTypeArgumentsField CP#5 |
| AllocateClosure |
| StoreLocal r2 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ClosureFunction 0 |
| [1] = InstanceField dart:core::_Closure::_context (field) |
| [2] = Reserved |
| [3] = ClosureFunction 1 |
| [4] = EndClosureFunctionScope |
| [5] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D |
| [6] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] |
| [7] = EndClosureFunctionScope |
| } |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D::bar::'<anonymous closure>' () -> Null |
| ClosureCode { |
| Entry 4 |
| Push FP[-5] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| PushConstant CP#3 |
| Push r0 |
| Push r0 |
| LoadContextVar 0, 0 |
| LoadTypeArgumentsField CP#5 |
| AllocateClosure |
| StoreLocal r3 |
| PopLocal r2 |
| Push r2 |
| Push r2 |
| UncheckedClosureCall CP#6, 1 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| |
| Closure DART_SDK/pkg/dart2bytecode/testcases/closures.dart::D::bar::Closure/0::'inner' () -> Null |
| ClosureCode { |
| Entry 2 |
| Push FP[-5] |
| LoadFieldTOS CP#1 |
| PopLocal r0 |
| CheckStack 0 |
| PushNull |
| ReturnTOS |
| } |
| |
| Class 'E', script = 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart', abstract |
| extends dart:core::Object |
| |
| Field 'foo1', type = FunctionType (dart:core::int, dart:core::int) -> dart:core::int, getter = 'get:foo1', setter = 'set:foo1', reflectable, is-late |
| value = null |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| InitLateField CP#0 |
| Push FP[-5] |
| DirectCall CP#2, 1 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::foo1 (field) |
| [1] = Reserved |
| [2] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [3] = Reserved |
| } |
| |
| |
| Function 'get:foo2', getter, abstract, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type FunctionType <'T' extends dart:core::Object? (default dynamic)> (null::TypeParam/0, null::TypeParam/0) -> dart:core::int |
| |
| Function 'evalArg1', abstract, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int |
| |
| Function 'evalArg2', abstract, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int |
| |
| Function 'getE', abstract, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E |
| |
| Function 'testCallThroughGetter1', reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int |
| |
| Bytecode { |
| Entry 3 |
| CheckStack 0 |
| Push FP[-5] |
| InterfaceCall CP#0, 1 |
| PopLocal r0 |
| Push FP[-5] |
| InterfaceCall CP#2, 1 |
| PopLocal r1 |
| Push FP[-5] |
| InterfaceCall CP#4, 1 |
| StoreLocal r2 |
| Push r0 |
| Push r1 |
| Push r2 |
| UncheckedClosureCall CP#6, 3 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg1', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| [2] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg2', ArgDesc num-args 1, num-type-args 0, names [] |
| [3] = Reserved |
| [4] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::get:foo1', ArgDesc num-args 1, num-type-args 0, names [] |
| [5] = Reserved |
| [6] = ObjectRef ArgDesc num-args 3, num-type-args 0, names [] |
| } |
| |
| |
| Function 'testCallThroughGetter2', reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int |
| |
| Bytecode { |
| Entry 3 |
| CheckStack 0 |
| Push FP[-5] |
| InterfaceCall CP#0, 1 |
| PopLocal r0 |
| Push FP[-5] |
| InterfaceCall CP#2, 1 |
| PopLocal r1 |
| PushConstant CP#4 |
| Push FP[-5] |
| InterfaceCall CP#5, 1 |
| StoreLocal r2 |
| Push r0 |
| Push r1 |
| Push r2 |
| UncheckedClosureCall CP#7, 4 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg1', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| [2] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg2', ArgDesc num-args 1, num-type-args 0, names [] |
| [3] = Reserved |
| [4] = ObjectRef < dart:core::int > |
| [5] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::get:foo2', ArgDesc num-args 1, num-type-args 0, names [] |
| [6] = Reserved |
| [7] = ObjectRef ArgDesc num-args 3, num-type-args 1, names [] |
| } |
| |
| |
| Function 'testCallThroughGetter3', reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int |
| |
| Bytecode { |
| Entry 4 |
| CheckStack 0 |
| Push FP[-5] |
| InterfaceCall CP#0, 1 |
| PopLocal r0 |
| Push FP[-5] |
| InterfaceCall CP#2, 1 |
| PopLocal r1 |
| Push FP[-5] |
| InterfaceCall CP#4, 1 |
| PopLocal r2 |
| PushConstant CP#6 |
| Push r0 |
| InterfaceCall CP#7, 1 |
| StoreLocal r3 |
| Push r1 |
| Push r2 |
| Push r3 |
| UncheckedClosureCall CP#9, 4 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::getE', ArgDesc num-args 1, num-type-args 0, names [] |
| [1] = Reserved |
| [2] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg1', ArgDesc num-args 1, num-type-args 0, names [] |
| [3] = Reserved |
| [4] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::evalArg2', ArgDesc num-args 1, num-type-args 0, names [] |
| [5] = Reserved |
| [6] = ObjectRef < dart:core::int > |
| [7] = InterfaceCall 'DART_SDK/pkg/dart2bytecode/testcases/closures.dart::E::get:foo2', ArgDesc num-args 1, num-type-args 0, names [] |
| [8] = Reserved |
| [9] = ObjectRef ArgDesc num-args 3, num-type-args 1, names [] |
| } |
| |