Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1201)

Unified Diff: tests/compiler/dart2js_native/optimization_hints_test.dart

Issue 962703004: Add "force inline" to internal annotations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js_native/optimization_hints_test.dart
diff --git a/tests/compiler/dart2js_native/optimization_hints_test.dart b/tests/compiler/dart2js_native/optimization_hints_test.dart
index 8577f1442000f2debdeed9906209f5dd94ec0be8..2539849c5ff88465f2d4c7ae97dccfe8c5ac9b47 100644
--- a/tests/compiler/dart2js_native/optimization_hints_test.dart
+++ b/tests/compiler/dart2js_native/optimization_hints_test.dart
@@ -40,6 +40,39 @@ baz() {
throw 'in baz function';
}
+@js.NoInline()
+geeNoInline() {
+ // Use `gee` several times, so `gee` isn't used only once (and thus inlinable
+ // independently of its size).
+ gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee();
+ gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee();
+ gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee();
+ gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee(); gee();
+}
+
+@js.ForceInline()
+// Big function that would normally not be inlinable.
+gee([c]) {
+ if (c != null) {
+ x = "in gee function";
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline(); geeNoInline();
+ }
+}
+
main() {
JS('', 'String("in main function")');
var c;
@@ -58,6 +91,8 @@ main() {
simple();
noinline();
baz(); // This call should be eliminated by the optimizer.
+ gee(new C());
+ print(x);
check(JS('', 'arguments.callee'));
}
@@ -82,6 +117,8 @@ check(func) {
"should contain r'\.c_field' exactly twice");
Expect.isFalse(source.contains('.d_field'),
"should not contain r'\.d_field'");
+ Expect.isTrue(source.contains('"in gee function"'),
+ "must inline 'gee'");
}
simple() {

Powered by Google App Engine
This is Rietveld 408576698