| 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 {} |
| } |