6195ea86bc
In the VM, factory constructors always had an extra "type arguments" parameter, even if class is not generic. Factory constructor bodies were using class type parameters instead of function type parameters. This results in extra code when calling non-generic factories which is slightly inefficient in terms of code size and performance. Also, it creates an additional complexity throughout the system as factories should be special cased in many places. This change removes artificial "type arguments" parameter, treating factory constructors basically as static methods. This matches kernel AST representation. TEST=ci Change-Id: I957583cb2ce9a3c408699880a04036e06b01dd31 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/501762 Reviewed-by: Slava Egorov <vegorov@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Ryan Macnak <rmacnak@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 0, num-type-args 2, names []
|
|
[2] = Reserved
|
|
}
|
|
|
|
|
|
Function 'foo5', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type void
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
DirectCall CP#0, 0
|
|
Drop1
|
|
PushInt 42
|
|
DirectCall CP#2, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I::testFactory2 (constructor)', ArgDesc num-args 0, num-type-args 0, names []
|
|
[1] = Reserved
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/instance_creation.dart::I::testFactory2 (constructor)', ArgDesc num-args 1, 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 0, num-type-args 1, 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 2, num-type-args 1, 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 0, num-type-args 2, 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 0, num-type-args 2, 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 2
|
|
CheckFunctionTypeArgs 2, r0
|
|
CheckStack 0
|
|
PushNull
|
|
Push r0
|
|
InstantiateTypeArgumentsTOS 0, CP#1
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r1
|
|
Push r1
|
|
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 0, 0, 1
|
|
LoadConstant r0, CP#0
|
|
LoadConstant r0, CP#1
|
|
Frame 1
|
|
CheckStack 0
|
|
Allocate CP#2
|
|
StoreLocal r1
|
|
Push r1
|
|
Push r0
|
|
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 2
|
|
CheckFunctionTypeArgs 2, r0
|
|
CheckStack 0
|
|
Push r0
|
|
PushConstant CP#0
|
|
AllocateT
|
|
StoreLocal r1
|
|
Push r1
|
|
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
|
|
}
|
|
|