blob: 5be96f75f85dc176e7cf479b869a4b630d0f895a [file] [log] [blame]
commit-queue@webkit.orgf4256ed2016-02-17 23:35:11 +00001function negativeRange(results)
2{
3 for (var i = -1; i > -10; --i) {
4 results[Math.abs(i)] = i;
5 }
6}
7noInline(negativeRange);
8
9for (var i = 0; i < 1e4; ++i) {
10 var results = [];
11 negativeRange(results);
12 if (results.length != 10)
13 throw "Wrong result length: " + results.length;
14 for (var j = 0; j < 10; ++j) {
15 if (j < 1) {
16 if (results[j] !== undefined)
17 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
18 continue;
19 }
20 if (results[j] !== -j)
21 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
22 }
23}
24
25function negativeRangeIncludingZero(results)
26{
27 for (var i = 0; i > -10; --i) {
28 results[Math.abs(i)] = i;
29 }
30}
31noInline(negativeRangeIncludingZero);
32
33for (var i = 0; i < 1e4; ++i) {
34 var results = [];
35 negativeRangeIncludingZero(results);
36 if (results.length != 10)
37 throw "Wrong result length: " + results.length;
38 for (var j = 0; j < 10; ++j) {
39 if (results[j] !== -j)
40 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
41 }
42}
43
44function negativeRangeWithOverflow(results, limit)
45{
46 var i = -2147483648 + 10;
47 do {
48 results.push(Math.abs(i));
49 --i;
50 } while (i !== limit);
51}
52noInline(negativeRangeWithOverflow);
53
54// First, we warm up without overflow.
55for (var i = 0; i < 1e4; ++i) {
56 var results = [];
57 negativeRangeWithOverflow(results, -2147483647);
58 if (results.length != 9)
59 throw "Wrong result length: " + results.length;
60 for (var j = 0; j < 9; ++j) {
61 if (results[j] !== 2147483638 + j)
62 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
63 }
64}
65
66// Then we overflow.
67for (var i = 0; i < 1e4; ++i) {
68 var results = [];
69 negativeRangeWithOverflow(results, -2147483648);
70 if (results.length != 10)
71 throw "Wrong result length: " + results.length;
72 for (var j = 0; j < 10; ++j) {
73 if (results[j] !== 2147483638 + j)
74 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
75 }
76}
77
78function positiveRange(results)
79{
80 for (var i = 1; i < 10; ++i) {
81 results[Math.abs(i)] = i;
82 }
83}
84noInline(positiveRange);
85
86for (var i = 0; i < 1e4; ++i) {
87 var results = [];
88 positiveRange(results);
89 if (results.length != 10)
90 throw "Wrong result length: " + results.length;
91 for (var j = 0; j < 10; ++j) {
92 if (j < 1) {
93 if (results[j] !== undefined)
94 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
95 continue;
96 }
97 if (results[j] !== j)
98 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
99 }
100}
101
102function positiveRangeIncludingZero(results)
103{
104 for (var i = 0; i < 10; ++i) {
105 results[Math.abs(i)] = i;
106 }
107}
108noInline(positiveRangeIncludingZero);
109
110for (var i = 0; i < 1e4; ++i) {
111 var results = [];
112 positiveRangeIncludingZero(results);
113 if (results.length != 10)
114 throw "Wrong result length: " + results.length;
115 for (var j = 0; j < 10; ++j) {
116 if (results[j] !== j)
117 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
118 }
119}
120
121function rangeWithoutOverflow(results)
122{
123 for (var i = -10; i < 10; ++i) {
124 results[i] = Math.abs(i);
125 }
126}
127noInline(rangeWithoutOverflow);
128
129for (var i = 0; i < 1e4; ++i) {
130 var results = [];
131 rangeWithoutOverflow(results);
132 if (results.length != 10)
133 throw "Wrong result length: " + results.length;
134 for (var j = -10; j < 10; ++j) {
135 var expected = (j < 0) ? -j : j;
136 if (results[j] !== expected)
137 throw "Wrong result, results[j] = " + results[j] + " at j = " + j;
138 }
139}