blob: f5f3808624ae464f7daac269306e31ff24d3ef13 [file] [log] [blame]
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 {}