Files
sdk/pkg/vm/testcases/bytecode/closures.dart.expect
T
Alexander Markov 61f0f5bc43 [vm/bytecode] Declare members in bytecode
This change replaces kernel AST declarations of fields and functions
with bytecode declarations.

Size of dilp files is reduced by 11-12%.

Startup latency:
Time to the first full frame: 1.945s -> 1.687s
FinalizeClass: 554ms -> 277ms
FinishClassLoading: 296ms -> 156ms

There are following regressions in bytecode mode, which will be fixed
in future:

* dart:mirrors are not supported yet (implementation of mirrors relies
  on reading kernel AST in certain cases).

  As the result, lib_2/mirrors/* tests fail.

* native extensions are not supported yet (annotations on libraries
  and classes in AST are cleaned up as they could reference members
  which are now removed from AST).

  As the result, standalone_2/entrypoints_verification_test test fails.

* language_2/spread_collections/const_error_test/* tests fail
  due to https://github.com/dart-lang/sdk/issues/36286.

Change-Id: I5130f401fd7b84038b136136e7ccc1a6e51b6cea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97561
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-03-26 21:40:10 +00:00

1849 lines
49 KiB
Plaintext

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
Allocate CP#7
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#0
StoreFieldTOS CP#15
Push r3
Push r0
StoreFieldTOS CP#1
PopLocal r2
Push r2
PushInt 3
DynamicCall 2, CP#18
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] = Class dart:core::_Closure
[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] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
[18] = ICData dynamic target-name 'call', arg-desc CP#17
}
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
Allocate CP#14
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#15
Push r3
PushNull
StoreFieldTOS CP#6
Push r3
PushConstant CP#5
StoreFieldTOS CP#3
Push r3
PushConstant CP#0
StoreFieldTOS CP#17
Push r3
Push r0
StoreFieldTOS CP#1
PopLocal r2
Push r2
StoreLocal r3
PushConstant CP#19
StoreLocal r6
DirectCall 2, CP#20
Drop1
Allocate CP#14
StoreLocal r5
Push r6
StoreFieldTOS CP#3
Push r5
Push r3
LoadFieldTOS CP#15
StoreFieldTOS CP#15
Push r5
Push r3
LoadFieldTOS CP#6
StoreFieldTOS CP#6
Push r5
Push r3
LoadFieldTOS CP#17
StoreFieldTOS CP#17
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] = Class dart:core::_Closure
[15] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
[16] = Reserved
[17] = InstanceField dart:core::_Closure::_function (field)
[18] = Reserved
[19] = ObjectRef < dart:core::int >
[20] = DirectCall 'dart:_internal::_boundsCheckForPartialInstantiation', ArgDesc num-args 2, num-type-args 0, names []
[21] = Reserved
}
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
Allocate CP#30
StoreLocal r4
Push r4
Push FP[-5]
LoadTypeArgumentsField CP#14
StoreFieldTOS CP#31
Push r4
Push r0
StoreFieldTOS CP#6
Push r4
PushConstant CP#5
StoreFieldTOS CP#3
Push r4
PushConstant CP#0
StoreFieldTOS CP#33
Push r4
Push r1
StoreFieldTOS CP#1
PopLocal r3
PushConstant CP#44
Push r3
DynamicCall 2, CP#45
Drop1
PushConstant CP#46
Push r3
DynamicCall 2, CP#47
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] = Class dart:core::_Closure
[31] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
[32] = Reserved
[33] = InstanceField dart:core::_Closure::_function (field)
[34] = Reserved
[35] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[36] = ICData dynamic target-name 'call', arg-desc CP#35
[37] = EndClosureFunctionScope
[38] = ObjectRef < #lib::C7, #lib::C8 >
[39] = ObjectRef ArgDesc num-args 1, num-type-args 2, names []
[40] = ICData dynamic target-name 'call', arg-desc CP#39
[41] = ObjectRef < dart:core::List < #lib::C7 >, dart:core::List < #lib::C8 > >
[42] = ICData dynamic target-name 'call', arg-desc CP#39
[43] = EndClosureFunctionScope
[44] = ObjectRef < #lib::C5, #lib::C6 >
[45] = ICData dynamic target-name 'call', arg-desc CP#39
[46] = ObjectRef < dart:core::List < #lib::C5 >, dart:core::List < #lib::C6 > >
[47] = ICData dynamic target-name 'call', arg-desc CP#39
}
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
Allocate CP#30
StoreLocal r4
Push r4
Push r1
LoadContextVar 0, 0
LoadTypeArgumentsField CP#14
StoreFieldTOS CP#31
Push r4
Push r0
StoreFieldTOS CP#6
Push r4
PushConstant CP#5
StoreFieldTOS CP#3
Push r4
PushConstant CP#10
StoreFieldTOS CP#33
Push r4
Push r1
StoreFieldTOS CP#1
PopLocal r3
PushConstant CP#38
Push r3
DynamicCall 2, CP#40
Drop1
PushConstant CP#41
Push r3
DynamicCall 2, CP#42
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
Allocate CP#30
StoreLocal r4
Push r4
Push r1
LoadContextVar 0, 0
LoadTypeArgumentsField CP#14
StoreFieldTOS CP#31
Push r4
Push r0
StoreFieldTOS CP#6
Push r4
PushConstant CP#5
StoreFieldTOS CP#3
Push r4
PushConstant CP#11
StoreFieldTOS CP#33
Push r4
Push r1
StoreFieldTOS CP#1
PopLocal r3
Push r3
DynamicCall 1, CP#36
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
Allocate CP#10
StoreLocal r4
Push r4
PushNull
StoreFieldTOS CP#11
Push r4
PushNull
StoreFieldTOS CP#13
Push r4
PushConstant CP#15
StoreFieldTOS CP#16
Push r4
PushConstant CP#0
StoreFieldTOS CP#18
Push r4
Push r0
StoreFieldTOS CP#1
PopLocal r3
Push r3
PushInt 10
DynamicCall 2, CP#26
Drop1
Push r3
PushInt 11
DynamicCall 2, CP#27
Drop1
Push r2
DirectCall 1, CP#22
Drop1
Push r0
LoadContextVar 0, 2
DirectCall 1, CP#22
Drop1
Push r0
LoadContextVar 0, 1
DirectCall 1, CP#22
Drop1
Push r0
PushInt 42
StoreContextVar 0, 3
Allocate CP#10
StoreLocal r3
Push r3
PushNull
StoreFieldTOS CP#11
Push r3
PushNull
StoreFieldTOS CP#13
Push r3
PushConstant CP#15
StoreFieldTOS CP#16
Push r3
PushConstant CP#28
StoreFieldTOS CP#18
Push r3
Push r0
StoreFieldTOS CP#1
PopLocal r2
Push r2
DynamicCall 1, CP#32
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] = Class dart:core::_Closure
[11] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
[12] = Reserved
[13] = InstanceField dart:core::_Closure::_function_type_arguments (field)
[14] = Reserved
[15] = EmptyTypeArguments
[16] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
[17] = Reserved
[18] = InstanceField dart:core::_Closure::_function (field)
[19] = Reserved
[20] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[21] = ICData dynamic target-name 'call', arg-desc CP#20
[22] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
[23] = Reserved
[24] = EndClosureFunctionScope
[25] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
[26] = ICData dynamic target-name 'call', arg-desc CP#25
[27] = ICData dynamic target-name 'call', arg-desc CP#25
[28] = ClosureFunction 2
[29] = InterfaceCall '#lib::B::set:foo', ArgDesc num-args 2, num-type-args 0, names []
[30] = Reserved
[31] = EndClosureFunctionScope
[32] = ICData dynamic target-name 'call', arg-desc CP#20
}
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
Allocate CP#10
StoreLocal r2
Push r2
PushNull
StoreFieldTOS CP#11
Push r2
PushNull
StoreFieldTOS CP#13
Push r2
PushConstant CP#15
StoreFieldTOS CP#16
Push r2
PushConstant CP#6
StoreFieldTOS CP#18
Push r2
Push r0
StoreFieldTOS CP#1
PopLocal r3
Push r3
DynamicCall 1, CP#21
Drop1
Push r0
LoadContextVar 1, 1
DirectCall 1, CP#22
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#29
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
StoreLocal r3
Push r3
PushInt 0
CreateArrayTOS
StoreLocal r3
DirectCall 2, CP#1
PopLocal r2
PushConstant CP#0
StoreLocal r3
Push r3
PushInt 0
CreateArrayTOS
StoreLocal r3
DirectCall 2, CP#1
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
Allocate CP#7
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#3
StoreFieldTOS CP#15
Push r3
Push r0
StoreFieldTOS CP#4
InterfaceCall 2, CP#17
Drop1
Push r4
Allocate CP#7
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#4
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] = DirectCall 'dart:core::List::_fromLiteral (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] = Class dart:core::_Closure
[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#4
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#4
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
Allocate CP#10
StoreLocal r4
Push r4
PushNull
StoreFieldTOS CP#11
Push r4
PushNull
StoreFieldTOS CP#13
Push r4
PushConstant CP#15
StoreFieldTOS CP#16
Push r4
PushConstant CP#6
StoreFieldTOS CP#18
Push r4
Push r0
StoreFieldTOS CP#7
PopLocal r3
Push r3
DynamicCall 1, CP#21
Drop1
Push r0
LoadContextVar 0, 0
DirectCall 1, CP#22
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] = Class dart:core::_Closure
[11] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
[12] = Reserved
[13] = InstanceField dart:core::_Closure::_function_type_arguments (field)
[14] = Reserved
[15] = EmptyTypeArguments
[16] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
[17] = Reserved
[18] = InstanceField dart:core::_Closure::_function (field)
[19] = Reserved
[20] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[21] = ICData dynamic target-name 'call', arg-desc CP#20
[22] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
[23] = 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
Allocate CP#8
StoreLocal r2
Push r2
Push FP[-6]
LoadTypeArgumentsField CP#1
StoreFieldTOS CP#9
Push r2
PushNull
StoreFieldTOS CP#11
Push r2
PushConstant CP#13
StoreFieldTOS CP#14
Push r2
PushConstant CP#4
StoreFieldTOS CP#16
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] = Class dart:core::_Closure
[9] = InstanceField dart:core::_Closure::_instantiator_type_arguments (field)
[10] = Reserved
[11] = InstanceField dart:core::_Closure::_function_type_arguments (field)
[12] = Reserved
[13] = EmptyTypeArguments
[14] = InstanceField dart:core::_Closure::_delayed_type_arguments (field)
[15] = Reserved
[16] = InstanceField dart:core::_Closure::_function (field)
[17] = 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
Allocate CP#5
StoreLocal r2
Push r2
Push FP[-5]
LoadTypeArgumentsField CP#6
StoreFieldTOS CP#7
Push r2
PushNull
StoreFieldTOS CP#9
Push r2
PushConstant CP#11
StoreFieldTOS CP#12
Push r2
PushConstant CP#0
StoreFieldTOS CP#14
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] = Class dart:core::_Closure
[6] = TypeArgumentsField #lib::D
[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 1, num-type-args 0, names []
[17] = ICData dynamic target-name 'call', arg-desc CP#16
[18] = EndClosureFunctionScope
}
Closure #lib::D::bar::'<anonymous closure>' () -> dart:core::Null
ClosureCode {
EntryFixed 1, 4
CheckStack 0
Push FP[-5]
LoadFieldTOS CP#1
PopLocal r0
Allocate CP#5
StoreLocal r3
Push r3
Push r0
LoadContextVar 0, 0
LoadTypeArgumentsField CP#6
StoreFieldTOS CP#7
Push r3
PushNull
StoreFieldTOS CP#9
Push r3
PushConstant CP#11
StoreFieldTOS CP#12
Push r3
PushConstant CP#3
StoreFieldTOS CP#14
Push r3
Push r0
StoreFieldTOS CP#1
PopLocal r2
Push r2
DynamicCall 1, CP#17
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 {}
}