5484b94695
Change-Id: Ie459289196d75fbd69490a0cd4d3d0445e025748 Reviewed-on: https://dart-review.googlesource.com/51800 Reviewed-by: Zach Anderson <zra@google.com> Reviewed-by: Régis Crelier <regis@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>
218 lines
5.1 KiB
Plaintext
218 lines
5.1 KiB
Plaintext
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 {}
|