Update ReadMe.md
[qtwebkit.git] / JSTests / slowMicrobenchmarks / ftl-polymorphic-bitand.js
blobe14ca0175752bde1ae860f9ada8853bca9a9dfd6
1 //@ runFTLNoCJIT
2 var o1 = {
3     i: 0,
4     valueOf: function() { return this.i; }
5 };
7 result = 0;
8 function foo(a, b) {
9     var result = 0;
10     for (var j = 0; j < 10; j++) {
11         var temp;
12         if (a > b)
13             temp = a & b;
14         else
15             temp = b & 1;
16         result += temp;
17     }
19     // Busy work just to allow the DFG and FTL to optimize this out. If the above causes
20     // us to speculation fail out to the baseline, this busy work will take a lot longer
21     // to run.
22     // This loop below also gets the DFG to compile this function sooner.
23     var origResult = result;
24     for (var i = 1; i < 1000; i++)
25         result = result & i;
26     result = origResult > result ? origResult : result;
27     return result;
29 noInline(foo);
31 var iterations;
32 var expectedResult;
33 if (this.window) {
34     // The layout test doesn't like too many iterations and may time out.
35     iterations = 10000;
36     expectedResult = 499660;
37 } else {
38     iterations = 100000;
39     expectedResult = 4999660;
43 for (var i = 0; i <= iterations; i++) {
44     o1.i = i;
45     if (i % 2)
46         result += foo(o1, 10);
47     else
48         result += foo(i, 10);
51 if (result != expectedResult)
52     throw "Bad result: " + result;