Files
sdk/pkg/compiler/test/inlining/data/force_inline_loops.dart
T
Joshua Litt 20faaa5d94 [dart2js] Move dart2js unit tests to pkg/compiler/test.
Change-Id: Ib18f554c1076f27a3f7c0df5a36410da41a1f467
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148784
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2020-05-28 18:51:11 +00:00

70 lines
1.4 KiB
Dart

// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart = 2.7
/*member: main:[]*/
main() {
forceInlineLoops();
}
////////////////////////////////////////////////////////////////////////////////
// Force inline a top level method with loops.
////////////////////////////////////////////////////////////////////////////////
/*member: _forLoop:loop,[forceInlineLoops]*/
@pragma('dart2js:tryInline')
_forLoop() {
for (int i = 0; i < 10; i++) {
print(i);
}
}
/*member: _forInLoop:loop,[forceInlineLoops]*/
@pragma('dart2js:tryInline')
_forInLoop() {
for (var e in [0, 1, 2]) {
print(e);
}
}
/*member: _whileLoop:loop,[forceInlineLoops]*/
@pragma('dart2js:tryInline')
_whileLoop() {
int i = 0;
while (i < 10) {
print(i);
i++;
}
}
/*member: _doLoop:loop,[forceInlineLoops]*/
@pragma('dart2js:tryInline')
_doLoop() {
int i = 0;
do {
print(i);
i++;
} while (i < 10);
}
/*member: _hardLoop:loop,(allowLoops)code after return*/
@pragma('dart2js:tryInline')
_hardLoop() {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) return 2;
if (i % 3 == 0) return 3;
}
return 1;
}
/*member: forceInlineLoops:[]*/
@pragma('dart2js:noInline')
forceInlineLoops() {
_forLoop();
_forInLoop();
_whileLoop();
_doLoop();
_hardLoop();
}