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

Unified Diff: tests/language/optimized_string_charcodeat_test.dart

Issue 12256037: Fix bug in optimizing string .length loads. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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
« no previous file with comments | « runtime/vm/flow_graph_optimizer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/language/optimized_string_charcodeat_test.dart
===================================================================
--- tests/language/optimized_string_charcodeat_test.dart (revision 18515)
+++ tests/language/optimized_string_charcodeat_test.dart (working copy)
@@ -7,27 +7,27 @@
String one_byte = "hest";
String two_byte = "høns";
-int testOneByteCharCodeAt(String x, int i) {
+int testOneByteCharCodeAt(String x, int j) {
int test() {
- return x.charCodeAt(i);
+ return x.charCodeAt(j);
}
for (int i = 0; i < 10000; i++) test();
return test();
}
-int testTwoByteCharCodeAt(String x, int i) {
+int testTwoByteCharCodeAt(String x, int j) {
int test() {
- return x.charCodeAt(i);
+ return x.charCodeAt(j);
}
for (int i = 0; i < 10000; i++) test();
return test();
}
-int testConstantStringCharCodeAt(int i) {
+int testConstantStringCharCodeAt(int j) {
int test() {
- return "høns".charCodeAt(i);
+ return "høns".charCodeAt(j);
}
for (int i = 0; i < 10000; i++) test();
return test();
@@ -43,9 +43,36 @@
}
+int testOneByteCharCodeAtInLoop(var x) {
+ var result = 0;
+ for (int i = 0; i < x.length; i++) {
+ result += x.charCodeAt(i);
+ }
+ return result;
+}
+
+
+int testTwoByteCharCodeAtInLoop(var x) {
+ var result = 0;
+ for (int i = 0; i < x.length; i++) {
+ result += x.charCodeAt(i);
+ }
+ return result;
+}
+
+
main() {
- Expect.equals(101, testOneByteCharCodeAt(one_byte, 1));
- Expect.equals(248, testTwoByteCharCodeAt(two_byte, 1));
- Expect.equals(248, testConstantStringCharCodeAt(1));
- Expect.equals(101, testConstantIndexCharCodeAt(one_byte));
+ for (int j = 0; j < 10; j++) {
+ Expect.equals(101, testOneByteCharCodeAt(one_byte, 1));
+ Expect.equals(248, testTwoByteCharCodeAt(two_byte, 1));
+ Expect.equals(248, testConstantStringCharCodeAt(1));
+ Expect.equals(101, testConstantIndexCharCodeAt(one_byte));
+ }
+ for (int j = 0; j < 2000; j++) {
+ Expect.equals(436, testOneByteCharCodeAtInLoop(one_byte));
+ Expect.equals(577, testTwoByteCharCodeAtInLoop(two_byte));
+ }
+ Expect.throws(() => testOneByteCharCodeAtInLoop(123));
+ Expect.throws(() => testTwoByteCharCodeAtInLoop(123));
}
+
« no previous file with comments | « runtime/vm/flow_graph_optimizer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698