| main = #lib::main; |
| [@vm.bytecode= |
| BytecodeMetadata { |
| Bytecode (version: stable) |
| Main library: #lib |
| Library '#lib' |
| name '#lib' |
| script '#lib' |
| |
| Class '', script = '#lib' |
| |
| |
| Function 'main', static, reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dynamic |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| } |
| |
| Class 'Base1', script = '#lib' |
| extends dart:core::Object* |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::Base1* |
| |
| 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 '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 |
| CheckFunctionTypeArgs 1, r0 |
| CheckStack 0 |
| 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 { |
| } |
| |
| |
| Function 'get:_identityHashCode', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int* |
| |
| Function '_instanceOf', abstract, debuggable |
| parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOf', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOfTrue', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOfFalse', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '==', abstract, debuggable |
| parameters [dynamic 'other'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function 'get:hashCode', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int* |
| |
| Function 'toString', abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::String* |
| |
| Function 'noSuchMethod', abstract, debuggable |
| parameters [dart:core::Invocation* 'invocation'] (required: 1) |
| return-type dynamic |
| |
| Function 'get:runtimeType', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::Type* |
| Class 'A', script = '#lib' |
| extends #lib::Base1* |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::A* |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall CP#0, 1 |
| 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 |
| UncheckedDirectCall CP#2, 4 |
| 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 CP#0, 1 |
| 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 CP#0, 1 |
| 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 CP#1, 1 |
| PushConstant CP#3 |
| DynamicCall CP#4, 3 |
| 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] = DynamicCall 'call', ArgDesc num-args 2, num-type-args 1, names [] |
| [5] = Reserved |
| } |
| |
| |
| Function 'testSuperSet', reflectable, debuggable |
| parameters [] (required: 0) |
| return-type dynamic |
| |
| Bytecode { |
| Entry 1 |
| CheckStack 0 |
| Push FP[-5] |
| PushInt 3 |
| UncheckedDirectCall CP#0, 2 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall '#lib::Base1::set:bazz', ArgDesc num-args 2, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| |
| Class 'Base2', script = '#lib', abstract |
| extends dart:core::Object* |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::Base2* |
| |
| 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 '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 |
| |
| Function 'get:_identityHashCode', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int* |
| |
| Function '_instanceOf', abstract, debuggable |
| parameters [dynamic 'instantiatorTypeArguments', dynamic 'functionTypeArguments', dynamic 'type'] (required: 3) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOf', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOfTrue', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '_simpleInstanceOfFalse', abstract, debuggable |
| parameters [dynamic 'type'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function '==', abstract, debuggable |
| parameters [dynamic 'other'] (required: 1) |
| return-type dart:core::bool* |
| |
| Function 'get:hashCode', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::int* |
| |
| Function 'toString', abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::String* |
| |
| Function 'noSuchMethod', abstract, debuggable |
| parameters [dart:core::Invocation* 'invocation'] (required: 1) |
| return-type dynamic |
| |
| Function 'get:runtimeType', getter, abstract, debuggable |
| parameters [] (required: 0) |
| return-type dart:core::Type* |
| Class 'B', script = '#lib', abstract |
| extends #lib::Base2* |
| |
| |
| Function '', constructor, reflectable |
| parameters [] (required: 0) |
| return-type #lib::B* |
| |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| DirectCall CP#0, 1 |
| 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 CP#6, 4 |
| DirectCall CP#8, 2 |
| 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 CP#3, 4 |
| DirectCall CP#5, 2 |
| 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 CP#3, 4 |
| DirectCall CP#5, 2 |
| 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 CP#4, 4 |
| DirectCall CP#6, 2 |
| PushConstant CP#8 |
| DynamicCall CP#9, 3 |
| 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] = DynamicCall 'call', ArgDesc num-args 2, num-type-args 1, names [] |
| [10] = Reserved |
| } |
| |
| |
| 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 CP#3, 4 |
| DirectCall CP#5, 2 |
| 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 |
| } |
| |
| |
| } |
| ]library #lib from "#lib" as #lib { |
| |
| 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 {} |
| abstract member-signature get _identityHashCode() → dart.core::int*; |
| abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; |
| abstract member-signature operator ==(dynamic other) → dart.core::bool*; |
| abstract member-signature get hashCode() → dart.core::int*; |
| abstract member-signature method toString() → dart.core::String*; |
| abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; |
| abstract member-signature get runtimeType() → dart.core::Type*; |
| } |
| 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; |
| } |
| } |
| 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; |
| abstract member-signature get _identityHashCode() → dart.core::int*; |
| abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOf(dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOfTrue(dynamic type) → dart.core::bool*; |
| abstract member-signature method _simpleInstanceOfFalse(dynamic type) → dart.core::bool*; |
| abstract member-signature operator ==(dynamic other) → dart.core::bool*; |
| abstract member-signature get hashCode() → dart.core::int*; |
| abstract member-signature method toString() → dart.core::String*; |
| abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; |
| abstract member-signature get runtimeType() → dart.core::Type*; |
| } |
| 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 {} |
| } |