| 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 0 |
| Push FP[-6] |
| PushInt 42 |
| StoreFieldTOS CP#0 |
| Push FP[-6] |
| PushInt 43 |
| StoreFieldTOS CP#2 |
| Push FP[-6] |
| Push FP[-5] |
| StoreFieldTOS CP#4 |
| Push FP[-6] |
| PushInt 44 |
| StoreFieldTOS CP#2 |
| Push FP[-6] |
| DirectCall 1, CP#6 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| Nullable fields: [#lib::A::foo1 (field), #lib::A::foo2 (field)]} |
| ConstantPool { |
| [0] = InstanceField #lib::A::foo3 (field) |
| [1] = Reserved |
| [2] = InstanceField #lib::A::foo5 (field) |
| [3] = Reserved |
| [4] = InstanceField #lib::A::foo4 (field) |
| [5] = Reserved |
| [6] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [7] = Reserved |
| } |
| ] constructor •(core::int foo4) → self::A |
| : self::A::foo1 = null, self::A::foo4 = foo4, self::A::foo5 = 44, super core::Object::•() |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-7] |
| PushInt 42 |
| StoreFieldTOS CP#0 |
| Push FP[-7] |
| PushInt 43 |
| StoreFieldTOS CP#2 |
| Push FP[-7] |
| Push FP[-6] |
| StoreFieldTOS CP#4 |
| Push FP[-7] |
| Push FP[-5] |
| PushInt 1 |
| AddInt |
| StoreFieldTOS CP#2 |
| Push FP[-7] |
| DirectCall 1, CP#6 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| Nullable fields: [#lib::A::foo2 (field), #lib::A::foo4 (field)]} |
| ConstantPool { |
| [0] = InstanceField #lib::A::foo3 (field) |
| [1] = Reserved |
| [2] = InstanceField #lib::A::foo5 (field) |
| [3] = Reserved |
| [4] = InstanceField #lib::A::foo1 (field) |
| [5] = Reserved |
| [6] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names [] |
| [7] = Reserved |
| } |
| ] constructor constr2(core::int x, core::int y) → self::A |
| : self::A::foo4 = null, self::A::foo1 = x, self::A::foo5 = y.{core::num::+}(1), super core::Object::•() |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| PushInt 45 |
| DirectCall 2, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| ] constructor redirecting1() → self::A |
| : this self::A::•(45) |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-8] |
| Push FP[-7] |
| Push FP[-6] |
| Push FP[-5] |
| MulInt |
| DirectCall 3, CP#0 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = DirectCall '#lib::A::constr2 (constructor)', ArgDesc num-args 3, num-type-args 0, names [] |
| [1] = Reserved |
| } |
| ] constructor redirecting2(core::int a, core::int b, core::int c) → self::A |
| : this self::A::constr2(a, b.{core::num::*}(c)) |
| ; |
| } |
| class B extends self::A { |
| field core::int foo6 = 46; |
| static field core::int foo7 = 47; |
| static const field core::int foo8 = 48; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-5] |
| PushInt 46 |
| StoreFieldTOS CP#0 |
| Push FP[-5] |
| PushInt 49 |
| DirectCall 2, CP#2 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InstanceField #lib::B::foo6 (field) |
| [1] = Reserved |
| [2] = DirectCall '#lib::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names [] |
| [3] = Reserved |
| } |
| ] constructor •() → self::B |
| : super self::A::•(49) |
| ; |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| Push FP[-7] |
| PushInt 46 |
| StoreFieldTOS CP#0 |
| Push FP[-7] |
| PushInt 50 |
| StoreFieldTOS CP#0 |
| Push FP[-7] |
| Push FP[-6] |
| Push FP[-5] |
| PushInt 51 |
| DirectCall 4, CP#2 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = InstanceField #lib::B::foo6 (field) |
| [1] = Reserved |
| [2] = DirectCall '#lib::A::redirecting2 (constructor)', ArgDesc num-args 4, num-type-args 0, names [] |
| [3] = Reserved |
| } |
| ] constructor c2(core::int i, core::int j) → self::B |
| : self::B::foo6 = 50, super self::A::redirecting2(i, j, 51) |
| ; |
| } |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| } |
| ]static method main() → dynamic {} |