| library #lib; |
| import self as self; |
| import "dart:core" as core; |
| |
| class A extends core::Object { |
| field core::int foo1; |
| field core::int foo2 = null; |
| field core::int foo3 = 42; |
| field core::int foo4; |
| field core::int foo5 = 43; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-6] |
| PushConstant CP#0 |
| StoreFieldTOS CP#1 |
| Push FP[-6] |
| Push FP[-5] |
| StoreFieldTOS CP#2 |
| Push FP[-6] |
| PushConstant CP#3 |
| StoreFieldTOS CP#4 |
| Push FP[-6] |
| PushConstant CP#6 |
| IndirectStaticCall 1, CP#5 |
| Drop1 |
| PushConstant CP#7 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 42 |
| [1] = FieldOffset #lib::A::foo3 |
| [2] = FieldOffset #lib::A::foo4 |
| [3] = Int 44 |
| [4] = FieldOffset #lib::A::foo5 |
| [5] = ArgDesc num-args 1, num-type-args 0, names [] |
| [6] = StaticICData target 'dart.core::Object::', arg-desc CP#5 |
| [7] = Null |
| } |
| ] constructor •(core::int foo4) → void |
| : self::A::foo1 = null, self::A::foo4 = foo4, self::A::foo5 = 44, super core::Object::•() |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-7] |
| PushConstant CP#0 |
| StoreFieldTOS CP#1 |
| Push FP[-7] |
| Push FP[-6] |
| StoreFieldTOS CP#2 |
| Push FP[-7] |
| Push FP[-5] |
| PushConstant CP#3 |
| InstanceCall1 2, CP#5 |
| StoreFieldTOS CP#6 |
| Push FP[-7] |
| PushConstant CP#8 |
| IndirectStaticCall 1, CP#7 |
| Drop1 |
| PushConstant CP#9 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 42 |
| [1] = FieldOffset #lib::A::foo3 |
| [2] = FieldOffset #lib::A::foo1 |
| [3] = Int 1 |
| [4] = ArgDesc num-args 2, num-type-args 0, names [] |
| [5] = ICData target-name '+', arg-desc CP#4 |
| [6] = FieldOffset #lib::A::foo5 |
| [7] = ArgDesc num-args 1, num-type-args 0, names [] |
| [8] = StaticICData target 'dart.core::Object::', arg-desc CP#7 |
| [9] = Null |
| } |
| ] constructor constr2(core::int x, core::int y) → void |
| : self::A::foo4 = null, self::A::foo1 = x, self::A::foo5 = y.{core::num::+}(1), super core::Object::•() |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-5] |
| PushConstant CP#0 |
| PushConstant CP#2 |
| IndirectStaticCall 2, CP#1 |
| Drop1 |
| PushConstant CP#3 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 45 |
| [1] = ArgDesc num-args 2, num-type-args 0, names [] |
| [2] = StaticICData target '#lib::A::', arg-desc CP#1 |
| [3] = Null |
| } |
| ] constructor redirecting1() → void |
| : this self::A::•(45) |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-8] |
| Push FP[-7] |
| Push FP[-6] |
| Push FP[-5] |
| InstanceCall1 2, CP#1 |
| PushConstant CP#3 |
| IndirectStaticCall 3, CP#2 |
| Drop1 |
| PushConstant CP#4 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ArgDesc num-args 2, num-type-args 0, names [] |
| [1] = ICData target-name '*', arg-desc CP#0 |
| [2] = ArgDesc num-args 3, num-type-args 0, names [] |
| [3] = StaticICData target '#lib::A::constr2', arg-desc CP#2 |
| [4] = Null |
| } |
| ] constructor redirecting2(core::int a, core::int b, core::int c) → void |
| : this self::A::constr2(a, b.{core::num::*}(c)) |
| ; |
| } |
| class B extends self::A { |
| field core::int foo6 = 46; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| PushConstant CP#0 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 47 |
| } |
| ] static field core::int foo7 = 47; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| PushConstant CP#0 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 48 |
| } |
| ] static const field core::int foo8 = 48; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-5] |
| PushConstant CP#0 |
| StoreFieldTOS CP#1 |
| Push FP[-5] |
| PushConstant CP#2 |
| PushConstant CP#4 |
| IndirectStaticCall 2, CP#3 |
| Drop1 |
| PushConstant CP#5 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 46 |
| [1] = FieldOffset #lib::B::foo6 |
| [2] = Int 49 |
| [3] = ArgDesc num-args 2, num-type-args 0, names [] |
| [4] = StaticICData target '#lib::A::', arg-desc CP#3 |
| [5] = Null |
| } |
| ] constructor •() → void |
| : super self::A::•(49) |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| Push FP[-7] |
| PushConstant CP#0 |
| StoreFieldTOS CP#1 |
| Push FP[-7] |
| Push FP[-6] |
| Push FP[-5] |
| PushConstant CP#2 |
| PushConstant CP#4 |
| IndirectStaticCall 4, CP#3 |
| Drop1 |
| PushConstant CP#5 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Int 50 |
| [1] = FieldOffset #lib::B::foo6 |
| [2] = Int 51 |
| [3] = ArgDesc num-args 4, num-type-args 0, names [] |
| [4] = StaticICData target '#lib::A::redirecting2', arg-desc CP#3 |
| [5] = Null |
| } |
| ] constructor c2(core::int i, core::int j) → void |
| : self::B::foo6 = 50, super self::A::redirecting2(i, j, 51) |
| ; |
| } |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack |
| PushConstant CP#0 |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = Null |
| } |
| ]static method main() → dynamic {} |