Files
sdk/pkg/vm/testcases/bytecode/loops.dart.expect
T
Alexander Markov 61f0f5bc43 [vm/bytecode] Declare members in bytecode
This change replaces kernel AST declarations of fields and functions
with bytecode declarations.

Size of dilp files is reduced by 11-12%.

Startup latency:
Time to the first full frame: 1.945s -> 1.687s
FinalizeClass: 554ms -> 277ms
FinishClassLoading: 296ms -> 156ms

There are following regressions in bytecode mode, which will be fixed
in future:

* dart:mirrors are not supported yet (implementation of mirrors relies
  on reading kernel AST in certain cases).

  As the result, lib_2/mirrors/* tests fail.

* native extensions are not supported yet (annotations on libraries
  and classes in AST are cleaned up as they could reference members
  which are now removed from AST).

  As the result, standalone_2/entrypoints_verification_test test fails.

* language_2/spread_collections/const_error_test/* tests fail
  due to https://github.com/dart-lang/sdk/issues/36286.

Change-Id: I5130f401fd7b84038b136136e7ccc1a6e51b6cea
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97561
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2019-03-26 21:40:10 +00:00

411 lines
10 KiB
Plaintext

main = #lib::main;
[@vm.bytecode=
ComponentBytecodeMetadata {
Bytecode (version: stable)
Main library: #lib
}
] [@vm.bytecode=
MembersBytecodeMetadata {
Members {
Function 'test_for', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 2
CheckStack 0
PushInt 0
PopLocal r0
PushInt 0
PopLocal r1
L2:
CheckStack 1
Push r1
Push FP[-5]
InterfaceCall 1, CP#0
CompareIntLt
JumpIfFalse L1
Push r0
Push FP[-5]
Push r1
InterfaceCall 2, CP#2
AddInt
PopLocal r0
Push r1
PushInt 1
AddInt
StoreLocal r1
Drop1
Jump L2
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
[3] = Reserved
}
Function 'test_for_break', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 2
CheckStack 0
PushInt 0
PopLocal r0
PushInt 0
PopLocal r1
L3:
CheckStack 1
Push r1
PushInt 0
CompareIntGe
JumpIfFalse L1
Push r1
Push FP[-5]
InterfaceCall 1, CP#0
CompareIntGe
JumpIfFalse L2
Jump L1
L2:
Push r0
Push FP[-5]
Push r1
InterfaceCall 2, CP#2
AddInt
PopLocal r0
Push r1
PushInt 1
AddInt
StoreLocal r1
Drop1
Jump L3
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
[3] = Reserved
}
Function 'test_for_continue', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 2
CheckStack 0
PushInt 0
PopLocal r0
PushInt 100
NegateInt
PopLocal r1
L4:
CheckStack 1
Push r1
Push FP[-5]
InterfaceCall 1, CP#0
CompareIntLt
JumpIfFalse L1
Push r1
PushInt 0
CompareIntLt
JumpIfFalse L2
Jump L3
L2:
Push r0
Push FP[-5]
Push r1
InterfaceCall 2, CP#2
AddInt
PopLocal r0
L3:
Push r1
PushInt 1
AddInt
StoreLocal r1
Drop1
Jump L4
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
[3] = Reserved
}
Function 'test_while', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 4
CheckStack 0
PushInt 0
PopLocal r0
PushInt 0
PopLocal r1
L2:
CheckStack 1
Push r1
Push FP[-5]
InterfaceCall 1, CP#0
CompareIntLt
JumpIfFalse L1
Push r0
Push FP[-5]
Push r1
PopLocal r2
Push r2
PushInt 1
AddInt
StoreLocal r1
PopLocal r3
Push r2
InterfaceCall 2, CP#2
AddInt
PopLocal r0
Jump L2
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
[3] = Reserved
}
Function 'test_do_while', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 2
CheckStack 0
PushInt 0
PopLocal r0
PushInt 0
PopLocal r1
L1:
CheckStack 1
Push r0
Push FP[-5]
Push r1
InterfaceCall 2, CP#0
AddInt
PopLocal r0
Push r1
PushInt 1
AddInt
PopLocal r1
Push r1
Push FP[-5]
InterfaceCall 1, CP#2
CompareIntLt
JumpIfTrue L1
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::List::[]', ArgDesc num-args 2, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::List::get:length', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
}
Function 'test_for_in', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 3
CheckStack 0
PushInt 0
PopLocal r0
Push FP[-5]
InterfaceCall 1, CP#0
PopLocal r1
L2:
CheckStack 1
Push r1
InterfaceCall 1, CP#2
JumpIfFalse L1
Push r1
InterfaceCall 1, CP#4
PopLocal r2
Push r0
Push r2
AddInt
PopLocal r0
Jump L2
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::Iterable::get:iterator', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::Iterator::moveNext', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
[4] = InterfaceCall 'dart:core::Iterator::get:current', ArgDesc num-args 1, num-type-args 0, names []
[5] = Reserved
}
Function 'test_for_in_with_outer_var', static, reflectable, debuggable
parameters [dart:core::List < dart:core::int > 'list'] (required: 1)
return-type dart:core::int
Bytecode {
Entry 4
CheckStack 0
PushInt 0
PopLocal r0
PushInt 42
PopLocal r1
Push FP[-5]
InterfaceCall 1, CP#0
PopLocal r2
L2:
CheckStack 1
Push r2
InterfaceCall 1, CP#2
JumpIfFalse L1
Push r2
InterfaceCall 1, CP#4
PopLocal r3
Push r3
PopLocal r1
Push r0
Push r1
AddInt
PopLocal r0
Jump L2
L1:
Push r0
ReturnTOS
}
ConstantPool {
[0] = InterfaceCall 'dart:core::Iterable::get:iterator', ArgDesc num-args 1, num-type-args 0, names []
[1] = Reserved
[2] = InterfaceCall 'dart:core::Iterator::moveNext', ArgDesc num-args 1, num-type-args 0, names []
[3] = Reserved
[4] = InterfaceCall 'dart:core::Iterator::get:current', ArgDesc num-args 1, num-type-args 0, names []
[5] = Reserved
}
Function 'main', static, reflectable, debuggable
parameters [] (required: 0)
return-type dynamic
Bytecode {
Entry 0
CheckStack 0
PushNull
ReturnTOS
}
ConstantPool {
}
}
}
]library #lib from "#lib" as #lib {
static method test_for(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
for (dart.core::int i = 0; i.{dart.core::num::<}(list.{dart.core::List::length}); i = i.{dart.core::num::+}(1)) {
sum = sum.{dart.core::num::+}(list.{dart.core::List::[]}(i));
}
return sum;
}
static method test_for_break(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
#L1:
for (dart.core::int i = 0; i.{dart.core::num::>=}(0); i = i.{dart.core::num::+}(1)) {
if(i.{dart.core::num::>=}(list.{dart.core::List::length})) {
break #L1;
}
sum = sum.{dart.core::num::+}(list.{dart.core::List::[]}(i));
}
return sum;
}
static method test_for_continue(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
for (dart.core::int i = 100.{dart.core::int::unary-}(); i.{dart.core::num::<}(list.{dart.core::List::length}); i = i.{dart.core::num::+}(1))
#L2:
{
if(i.{dart.core::num::<}(0)) {
break #L2;
}
sum = sum.{dart.core::num::+}(list.{dart.core::List::[]}(i));
}
return sum;
}
static method test_while(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
dart.core::int i = 0;
while (i.{dart.core::num::<}(list.{dart.core::List::length})) {
sum = sum.{dart.core::num::+}(list.{dart.core::List::[]}(let final dart.core::int #t1 = i in let final dart.core::int #t2 = i = #t1.{dart.core::num::+}(1) in #t1));
}
return sum;
}
static method test_do_while(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
dart.core::int i = 0;
do {
sum = sum.{dart.core::num::+}(list.{dart.core::List::[]}(i));
i = i.{dart.core::num::+}(1);
}
while (i.{dart.core::num::<}(list.{dart.core::List::length}))
return sum;
}
static method test_for_in(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
for (dart.core::int e in list) {
sum = sum.{dart.core::num::+}(e);
}
return sum;
}
static method test_for_in_with_outer_var(dart.core::List<dart.core::int> list) → dart.core::int {
dart.core::int sum = 0;
dart.core::int e = 42;
for (final dart.core::int #t3 in list) {
e = #t3;
sum = sum.{dart.core::num::+}(e);
}
return sum;
}
static method main() → dynamic {}
}