[JSC] Clean up Object.entries implementation
[WebKit-https.git] / JSTests / microbenchmarks / ftl-polymorphic-bitxor.js
1 //@ runFTLNoCJIT
2 var o1 = {
3     i: 0,
4     valueOf: function() { return this.i; }
5 };
6
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     }
18
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;
28 }
29 noInline(foo);
30
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 = 500050340;
37 } else {
38     iterations = 100000;
39     expectedResult = 50000500340;
40 }
41
42
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);
49 }
50
51 if (result != expectedResult)
52     throw "Bad result: " + result;