e32c2ac796
VM treats instantiated function types with NumParentTypeArguments() != 0 as non-instantiated (as they potentially depend on the numbering of enclosing type parameters) and would explicitly instantiate such types. So bytecode generator needs to make sure that instantiated types, instantiated type arguments and types used in constants always have NumParentTypeArguments() == 0, so they would not need unnecessary instantiation. TEST=ci Change-Id: I3ea54a0b535655611893d28edb54ffd50dcda1f0 Cq-Include-Trybots: luci.dart.try:vm-aot-dyn-linux-debug-x64-try,vm-aot-dyn-linux-product-x64-try,vm-dyn-linux-debug-x64-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/443630 Reviewed-by: Tess Strickland <sstrickl@google.com> Reviewed-by: Slava Egorov <vegorov@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>
693 lines
24 KiB
Plaintext
693 lines
24 KiB
Plaintext
Bytecode
|
|
Dynamic Module Entry Point: DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::main
|
|
Library 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
name '#lib'
|
|
script 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
|
|
Class '', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
|
|
|
|
Function 'foo1', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Allocate CP#0
|
|
StoreLocal r0
|
|
Push r0
|
|
PushConstant CP#1
|
|
DirectCall CP#2, 2
|
|
Drop1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::C
|
|
[1] = ObjectRef 'hello'
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::C:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
|
|
[3] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo2', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type void
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
PushConstant CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r0
|
|
Push r0
|
|
PushConstant CP#2
|
|
DirectCall CP#3, 2
|
|
Drop1
|
|
Drop1
|
|
PushConstant CP#6
|
|
PushConstant CP#5
|
|
AllocateT
|
|
StoreLocal r0
|
|
Push r0
|
|
DirectCall CP#7, 1
|
|
Drop1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::A
|
|
[1] = ObjectRef < dart:core::int, dart:core::String >
|
|
[2] = ObjectRef 'hi'
|
|
[3] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
|
|
[4] = Reserved
|
|
[5] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B
|
|
[6] = ObjectRef < dart:core::List < dart:core::int >, dart:core::String, dart:core::int >
|
|
[7] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[8] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo3', static, reflectable, debuggable
|
|
type-params <'T' extends dart:core::Object? (default dynamic)>
|
|
parameters [] (required: 0)
|
|
return-type void
|
|
|
|
Bytecode {
|
|
Entry 2
|
|
CheckFunctionTypeArgs 1, r0
|
|
CheckStack 0
|
|
PushNull
|
|
Push r0
|
|
InstantiateTypeArgumentsTOS 0, CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r1
|
|
Push r1
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B
|
|
[1] = ObjectRef < dart:core::List < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::foo3::TypeParam/0 > >, dart:core::String, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::foo3::TypeParam/0 > >
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo4', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type void
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushConstant CP#0
|
|
DirectCall CP#1, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ObjectRef < dart:core::int, dart:core::List < dart:core::String > >
|
|
[1] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo5', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type void
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushNull
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
PushInt 42
|
|
DirectCall CP#2, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I::testFactory2 (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I::testFactory2 (constructor)', ArgDesc num-args 2, num-type-args 0, names ['param']
|
|
[3] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo6', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushConstant CP#0
|
|
DirectCall CP#1, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ObjectRef < dart:core::String >
|
|
[1] = DirectCall 'dart:core::_List::empty (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo7', static, reflectable, debuggable
|
|
parameters [dart:core::int 'n'] (required: 1)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushConstant CP#0
|
|
Push FP[-5]
|
|
PushInt 0
|
|
DirectCall CP#1, 3
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ObjectRef < dart:core::int >
|
|
[1] = DirectCall 'dart:core::_List::filled (constructor)', ArgDesc num-args 3, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
|
|
Function 'main', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
DirectCall CP#0, 0
|
|
Drop1
|
|
DirectCall CP#2, 0
|
|
Drop1
|
|
PushConstant CP#4
|
|
DirectCall CP#5, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::foo1', ArgDesc num-args 0, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::foo2', ArgDesc num-args 0, num-type-args 0, names []
|
|
[3] = Reserved
|
|
[4] = ObjectRef < dart:core::String >
|
|
[5] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::foo3', ArgDesc num-args 0, num-type-args 1, names []
|
|
[6] = Reserved
|
|
}
|
|
|
|
Class 'Base', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'T1' extends dart:core::Object? (default dynamic), 'T2' extends dart:core::Object? (default dynamic)> (args: 2)
|
|
extends dart:core::Object
|
|
|
|
Field 't1', type = DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/0?, getter = 'get:t1', setter = 'set:t1', reflectable, has-initializer
|
|
value = null
|
|
|
|
Field 't2', type = DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/1?, getter = 'get:t2', setter = 'set:t2', reflectable, has-initializer
|
|
value = null
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/1 >
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
PushInt 4
|
|
CreateArrayTOS
|
|
StoreLocal r0
|
|
Push r0
|
|
PushInt 0
|
|
PushConstant CP#2
|
|
StoreIndexedTOS
|
|
Push r0
|
|
PushInt 1
|
|
Push FP[-5]
|
|
LoadTypeArgumentsField CP#3
|
|
PushNull
|
|
InstantiateType CP#4
|
|
StoreIndexedTOS
|
|
Push r0
|
|
PushInt 2
|
|
PushConstant CP#5
|
|
StoreIndexedTOS
|
|
Push r0
|
|
PushInt 3
|
|
Push FP[-5]
|
|
LoadTypeArgumentsField CP#3
|
|
PushNull
|
|
InstantiateType CP#6
|
|
StoreIndexedTOS
|
|
DirectCall CP#7, 1
|
|
DirectCall CP#9, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
Nullable fields: [DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::t1 (field), DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::t2 (field)]
|
|
ConstantPool {
|
|
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = ObjectRef 'Base: '
|
|
[3] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base
|
|
[4] = Type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/0
|
|
[5] = ObjectRef ', '
|
|
[6] = Type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base::TypeParam/1
|
|
[7] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
|
|
[8] = Reserved
|
|
[9] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
|
|
[10] = Reserved
|
|
}
|
|
|
|
Class 'A', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base < dart:core::int, dart:core::String >
|
|
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [dart:core::String 's'] (required: 1)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::A
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-6]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|
|
Class 'B', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'T' extends dart:core::Object? (default dynamic)> (args: 3)
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base < dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B::TypeParam/0 >, dart:core::String >
|
|
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B::TypeParam/0 >
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
PushInt 2
|
|
CreateArrayTOS
|
|
StoreLocal r0
|
|
Push r0
|
|
PushInt 0
|
|
PushConstant CP#2
|
|
StoreIndexedTOS
|
|
Push r0
|
|
PushInt 1
|
|
Push FP[-5]
|
|
LoadTypeArgumentsField CP#3
|
|
PushNull
|
|
InstantiateType CP#4
|
|
StoreIndexedTOS
|
|
DirectCall CP#5, 1
|
|
DirectCall CP#7, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = ObjectRef 'B: '
|
|
[3] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B
|
|
[4] = Type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::B::TypeParam/0
|
|
[5] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
|
|
[6] = Reserved
|
|
[7] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
|
|
[8] = Reserved
|
|
}
|
|
|
|
Class 'C', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
extends dart:core::Object
|
|
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [dart:core::String 's'] (required: 1)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::C
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Push FP[-6]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
PushInt 2
|
|
CreateArrayTOS
|
|
StoreLocal r0
|
|
Push r0
|
|
PushInt 0
|
|
PushConstant CP#2
|
|
StoreIndexedTOS
|
|
Push r0
|
|
PushInt 1
|
|
Push FP[-5]
|
|
StoreIndexedTOS
|
|
DirectCall CP#3, 1
|
|
DirectCall CP#5, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = ObjectRef 'C: '
|
|
[3] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
|
|
[4] = Reserved
|
|
[5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
|
|
[6] = Reserved
|
|
}
|
|
|
|
Class 'E', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'K' extends dart:core::Object? (default dynamic), 'V' 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/instance_creation.dart::E < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::E::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::E::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 'testReuse1', reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
LoadTypeArgumentsField CP#0
|
|
DirectCall CP#1, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::E
|
|
[1] = DirectCall 'dart:core::Map:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
Class 'F', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'K' extends dart:core::Object? (default dynamic), 'V' extends dart:core::Object? (default dynamic)> (args: 4)
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::E < dart:core::String, dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::F::TypeParam/1 > >
|
|
|
|
|
|
Function '', constructor, reflectable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::F < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::F::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::F::TypeParam/1 >
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::E:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|
|
|
|
Function 'testReuse2', reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
LoadTypeArgumentsField CP#0
|
|
DirectCall CP#1, 1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = TypeArgumentsField DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::F
|
|
[1] = DirectCall 'dart:core::Map:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
Class 'G', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'K' extends dart:core::Object? (default dynamic), 'V' extends dart:core::Object? (default dynamic)> (args: 2)
|
|
extends dart:core::Object
|
|
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::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 'testFactory', factory, static, reflectable, debuggable
|
|
type-params <'K' extends dart:core::Object? (default dynamic), 'V' extends dart:core::Object? (default dynamic)>
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/1 >
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
PushNull
|
|
InstantiateTypeArgumentsTOS 0, CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r0
|
|
Push r0
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H
|
|
[1] = ObjectRef < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/1, dart:core::String, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G::testFactory (constructor)::TypeParam/1 >
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = Reserved
|
|
}
|
|
|
|
Class 'H', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'P1' extends dart:core::Object? (default dynamic), 'P2' extends dart:core::Object? (default dynamic), 'P3' extends dart:core::Object? (default dynamic)> (args: 5)
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H::TypeParam/1, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H::TypeParam/2 >
|
|
|
|
|
|
Function '', constructor, reflectable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H::TypeParam/1, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::H::TypeParam/2 >
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::G:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|
|
Class 'I', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
extends dart:core::Object
|
|
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [dynamic 'param'] (required: 1)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-6]
|
|
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 'testFactory2', factory, static, has-optional-named-params, reflectable, debuggable
|
|
parameters [dynamic 'param'] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I
|
|
|
|
Bytecode {
|
|
EntryOptional 1, 0, 1
|
|
LoadConstant r1, CP#0
|
|
LoadConstant r1, CP#1
|
|
Frame 1
|
|
CheckStack 0
|
|
Allocate CP#2
|
|
StoreLocal r2
|
|
Push r2
|
|
Push r1
|
|
DirectCall CP#3, 2
|
|
Drop1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ObjectRef 'param'
|
|
[1] = ObjectRef null
|
|
[2] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I
|
|
[3] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
|
|
[4] = Reserved
|
|
}
|
|
|
|
Class 'J', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
extends dart:core::Object
|
|
|
|
|
|
Function '_', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::J
|
|
|
|
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 '', factory, static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::J
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Allocate CP#0
|
|
StoreLocal r0
|
|
Push r0
|
|
DirectCall CP#1, 1
|
|
Drop1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::J
|
|
[1] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::J::_ (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
Class 'L', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart', abstract
|
|
type-params <'S' extends dart:core::Object? (default dynamic), 'T' extends dart:core::Object? (default dynamic)> (args: 2)
|
|
extends dart:core::Object
|
|
|
|
|
|
Function '', factory, static, reflectable, debuggable
|
|
type-params <'S' extends dart:core::Object? (default dynamic), 'T' extends dart:core::Object? (default dynamic)>
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::L < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::L:: (constructor)::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::L:: (constructor)::TypeParam/1 >
|
|
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r0
|
|
Push r0
|
|
DirectCall CP#1, 1
|
|
Drop1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse
|
|
[1] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
Class 'TestTypeArgReuse', script = 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart'
|
|
type-params <'P' extends dart:core::Object? (default dynamic), 'Q' extends dart:core::Object? (default dynamic)> (args: 2)
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/1 >
|
|
implements [DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::L < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/1 >]
|
|
|
|
|
|
Function '', constructor, reflectable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse < DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::TestTypeArgReuse::TypeParam/1 >
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
DirectCall CP#0, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::Base:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|