Files
sdk/pkg/dart2bytecode/testcases/instance_creation.dart.expect
Alexander Markov 6195ea86bc [vm] Remove irregular type arguments parameter from factories
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>
2026-05-12 06:11:15 -07:00

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
}