blob: 286cf415206a0fe77770cdedf5d3973ebb7cb2f6 [file] [log] [blame]
main = #lib::main;
[@vm.bytecode=
ComponentBytecodeMetadata {
Bytecode (version: stable)
Main library: #lib
}
] [@vm.bytecode=
MembersBytecodeMetadata {
Members {
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 {
[@vm.bytecode=
MembersBytecodeMetadata {
Members {
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::Base1
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 T>
parameters [#lib::Base1::foo::TypeParam/0 'a1', dart:core::int 'a2'] (required: 2)
return-type void
Bytecode {
Entry 1
CheckStack 0
CheckFunctionTypeArgs 1, r0
PushNull
ReturnTOS
}
ConstantPool {
}
Function 'get:bar', getter, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
PushInt 42
ReturnTOS
}
ConstantPool {
}
Function 'set:bazz', setter, reflectable, debuggable
parameters [dart:core::int 'x'] (required: 1)
return-type void
Bytecode {
Entry 0
CheckStack 0
PushNull
ReturnTOS
}
ConstantPool {
}
}
}
] class Base1 extends dart.core::Object {
synthetic constructor •() #lib::Base1
: super dart.core::Object::•()
;
method foo<T extends dart.core::Object = dynamic>(#lib::Base1::foo::T a1, dart.core::int a2) void {}
get bar() dynamic
return 42;
set bazz(dart.core::int x) void {}
}
[@vm.bytecode=
MembersBytecodeMetadata {
Members {
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::A
Bytecode {
Entry 0
CheckStack 0
Push FP[-5]
DirectCall 1, CP#0
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base1:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'testSuperCall', reflectable, debuggable
parameters [dart:core::int 'x'] (required: 1)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
PushConstant CP#0
Push FP[-6]
PushConstant CP#1
PushInt 2
DirectCall 4, CP#2
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::String >
[1] = ObjectRef 'a1'
[2] = DirectCall '#lib::Base1::foo', ArgDesc num-args 3, num-type-args 1, names []
[3] = Reserved
}
Function 'testSuperTearOff', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
DirectCall 1, CP#0
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base1::get:foo', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'testSuperGet', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
DirectCall 1, CP#0
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base1::get:bar', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'testSuperCallViaGetter', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
PushConstant CP#0
Push FP[-5]
DirectCall 1, CP#1
PushConstant CP#3
DynamicCall 3, CP#5
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::int >
[1] = DirectCall '#lib::Base1::get:bar', ArgDesc num-args 1, num-type-args 0, names []
[2] = Reserved
[3] = ObjectRef 'param'
[4] = ObjectRef ArgDesc num-args 2, num-type-args 1, names []
[5] = ICData dynamic target-name 'call', arg-desc CP#4
}
Function 'testSuperSet', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushInt 3
DirectCall 2, CP#0
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = DirectCall '#lib::Base1::set:bazz', ArgDesc num-args 2, num-type-args 0, names []
[1] = Reserved
}
}
}
] class A extends #lib::Base1 {
synthetic constructor •() #lib::A
: super #lib::Base1::•()
;
method testSuperCall(dart.core::int x) dynamic
return super.{#lib::Base1::foo}<dart.core::String>("a1", 2);
method testSuperTearOff() dynamic
return super.{#lib::Base1::foo};
method testSuperGet() dynamic
return super.{#lib::Base1::bar};
method testSuperCallViaGetter() dynamic
return [@vm.call-site-attributes.metadata=receiverType:dynamic] super.{#lib::Base1::bar}.call<dart.core::int>("param");
method testSuperSet() dynamic {
super.{#lib::Base1::bazz} = 3;
}
}
[@vm.bytecode=
MembersBytecodeMetadata {
Members {
Function '', constructor, reflectable
parameters [] (required: 0)
return-type #lib::Base2
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', abstract, reflectable, debuggable
type-params <dart:core::Object T>
parameters [dart:core::String 'a1', #lib::Base2::foo::TypeParam/0 'a2', dart:core::int 'a3'] (required: 3)
return-type void
Function 'get:bar', getter, abstract, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Function 'set:bazz', setter, abstract, reflectable, debuggable
parameters [dart:core::int 'x'] (required: 1)
return-type void
}
}
] abstract class Base2 extends dart.core::Object {
synthetic constructor •() #lib::Base2
: super dart.core::Object::•()
;
abstract method foo<T extends dart.core::Object = dynamic>(dart.core::String a1, #lib::Base2::foo::T a2, dart.core::int a3) → void;
abstract get bar() dynamic;
abstract set bazz(dart.core::int x) void;
}
[@vm.bytecode=
MembersBytecodeMetadata {
Members {
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
}
ConstantPool {
[0] = DirectCall '#lib::Base2:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
}
Function 'testSuperCall', reflectable, debuggable
parameters [dart:core::int 'x'] (required: 1)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-6]
PushConstant CP#1
PushConstant CP#0
PushConstant CP#2
PushInt 5
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
PushConstant CP#3
StoreIndexedTOS
Push r0
PushInt 1
Push FP[-6]
StoreIndexedTOS
Push r0
PushInt 2
PushConstant CP#4
StoreIndexedTOS
Push r0
PushInt 3
PushConstant CP#5
StoreIndexedTOS
Push r0
PushInt 4
PushInt 5
StoreIndexedTOS
PushTrue
DirectCall 4, CP#6
DirectCall 2, CP#8
ReturnTOS
}
ConstantPool {
[0] = ObjectRef ArgDesc num-args 4, num-type-args 1, names []
[1] = ObjectRef 'foo'
[2] = ObjectRef < dynamic >
[3] = ObjectRef < dart:core::double >
[4] = ObjectRef 'a1'
[5] = ObjectRef const 3.14
[6] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
[7] = Reserved
[8] = DirectCall 'dart:core::Object::noSuchMethod', ArgDesc num-args 2, num-type-args 0, names []
[9] = Reserved
}
Function 'testSuperTearOff', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushConstant CP#1
PushConstant CP#0
PushConstant CP#2
PushInt 1
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
Push FP[-5]
StoreIndexedTOS
PushTrue
DirectCall 4, CP#3
DirectCall 2, CP#5
ReturnTOS
}
ConstantPool {
[0] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[1] = ObjectRef 'foo'
[2] = ObjectRef < dynamic >
[3] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
[4] = Reserved
[5] = DirectCall 'dart:core::Object::noSuchMethod', ArgDesc num-args 2, num-type-args 0, names []
[6] = Reserved
}
Function 'testSuperGet', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushConstant CP#1
PushConstant CP#0
PushConstant CP#2
PushInt 1
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
Push FP[-5]
StoreIndexedTOS
PushTrue
DirectCall 4, CP#3
DirectCall 2, CP#5
ReturnTOS
}
ConstantPool {
[0] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[1] = ObjectRef 'bar'
[2] = ObjectRef < dynamic >
[3] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
[4] = Reserved
[5] = DirectCall 'dart:core::Object::noSuchMethod', ArgDesc num-args 2, num-type-args 0, names []
[6] = Reserved
}
Function 'testSuperCallViaGetter', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
PushConstant CP#0
Push FP[-5]
PushConstant CP#2
PushConstant CP#1
PushConstant CP#3
PushInt 1
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
Push FP[-5]
StoreIndexedTOS
PushTrue
DirectCall 4, CP#4
DirectCall 2, CP#6
PushConstant CP#8
DynamicCall 3, CP#10
ReturnTOS
}
ConstantPool {
[0] = ObjectRef < dart:core::int >
[1] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
[2] = ObjectRef 'bar'
[3] = ObjectRef < dynamic >
[4] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
[5] = Reserved
[6] = DirectCall 'dart:core::Object::noSuchMethod', ArgDesc num-args 2, num-type-args 0, names []
[7] = Reserved
[8] = ObjectRef 'param'
[9] = ObjectRef ArgDesc num-args 2, num-type-args 1, names []
[10] = ICData dynamic target-name 'call', arg-desc CP#9
}
Function 'testSuperSet', reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 1
CheckStack 0
Push FP[-5]
PushConstant CP#1
PushConstant CP#0
PushConstant CP#2
PushInt 2
CreateArrayTOS
StoreLocal r0
Push r0
PushInt 0
Push FP[-5]
StoreIndexedTOS
Push r0
PushInt 1
PushInt 3
StoreIndexedTOS
PushTrue
DirectCall 4, CP#3
DirectCall 2, CP#5
Drop1
PushNull
ReturnTOS
}
ConstantPool {
[0] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
[1] = ObjectRef 'bazz'
[2] = ObjectRef < dynamic >
[3] = DirectCall 'dart:core::_InvocationMirror::_allocateInvocationMirror', ArgDesc num-args 4, num-type-args 0, names []
[4] = Reserved
[5] = DirectCall 'dart:core::Object::noSuchMethod', ArgDesc num-args 2, num-type-args 0, names []
[6] = Reserved
}
}
}
] abstract class B extends #lib::Base2 {
synthetic constructor •() #lib::B
: super #lib::Base2::•()
;
method testSuperCall(dart.core::int x) dynamic
return super.{#lib::Base2::foo}<dart.core::double>("a1", 3.14, 5);
method testSuperTearOff() dynamic
return super.{#lib::Base2::foo};
method testSuperGet() dynamic
return super.{#lib::Base2::bar};
method testSuperCallViaGetter() dynamic
return [@vm.call-site-attributes.metadata=receiverType:dynamic] super.{#lib::Base2::bar}.call<dart.core::int>("param");
method testSuperSet() dynamic {
super.{#lib::Base2::bazz} = 3;
}
}
static method main() dynamic {}
}