[JSC] Clean up Object.entries implementation
[WebKit-https.git] / JSTests / microbenchmarks / string-add-constant-folding.js
1 function assert(b) {
2     if (!b)
3         throw new Error("Bad assertion.");
4 }
5
6 let tests = [];
7 function test(f) {
8     noInline(f);
9     tests.push(f);
10 }
11
12 function runTests() {
13     let start = Date.now();
14     for (let f of tests) {
15         for (let i = 0; i < 40000; i++)
16             f();
17     }
18     const verbose = false;
19     if (verbose)
20         print(Date.now() - start);
21 }
22
23 function add(a,b) { return a + b; }
24 noInline(add);
25
26 test(function() {
27     let a = "foo";
28     let b = 20;
29     assert(a + b === add(a, b));
30     assert(b + a === add(b, a));
31 });
32
33 test(function() {
34     let a = "foo";
35     let b = null;
36     assert(a + b === add(a, b));
37     assert(b + a === add(b, a));
38 });
39
40 test(function() {
41     let a = "foo";
42     let b = undefined;
43     assert(a + b === add(a, b));
44     assert(b + a === add(b, a));
45 });
46
47 test(function() {
48     let a = "foo";
49     let b = 20.81239012821;
50     assert(a + b === add(a, b));
51     assert(b + a === add(b, a));
52 });
53
54 test(function() {
55     let a = "foo";
56     let b = true;
57     assert(a + b === add(a, b));
58     assert(b + a === add(b, a));
59 });
60
61 test(function() {
62     let a = "foo";
63     let b = false;
64     assert(a + b === add(a, b));
65     assert(b + a === add(b, a));
66 });
67
68 test(function() {
69     let a = "foo";
70     let b = NaN;
71     assert(a + b === add(a, b));
72     assert(b + a === add(b, a));
73 });
74
75 test(function() {
76     let a = -0;
77     let b = "foo";
78     assert(a + b === add(a, b));
79     assert(b + a === add(b, a));
80 });
81
82 test(function() {
83     let a = "foo";
84     let b = 0.0;
85     assert(a + b === add(a, b));
86     assert(b + a === add(b, a));
87 });
88
89 test(function() {
90     let a = "foo";
91     let b = Infinity;
92     assert(a + b === add(a, b));
93     assert(b + a === add(b, a));
94 });
95
96 test(function() {
97     let a = -Infinity;
98     let b = "foo";
99     assert(a + b === add(a, b));
100     assert(b + a === add(b, a));
101 });
102
103 test(function() {
104     let a = "foo";
105     let b = 1e10;
106     assert(a + b === add(a, b));
107     assert(b + a === add(b, a));
108 });
109
110 test(function() {
111     let a = "foo";
112     let b = 1e-10;
113     assert(a + b === add(a, b));
114     assert(b + a === add(b, a));
115 });
116
117 test(function() {
118     let a = "foo";
119     let b = 1e5;
120     assert(a + b === add(a, b));
121     assert(b + a === add(b, a));
122 });
123
124 test(function() {
125     let a = "foo";
126     let b = 1e-5;
127     assert(a + b === add(a, b));
128     assert(b + a === add(b, a));
129 });
130
131 test(function() {
132     let a = "foo";
133     let b = 1e-40;
134     assert(a + b === add(a, b));
135     assert(b + a === add(b, a));
136 });
137
138 test(function() {
139     let a = "foo";
140     let b = 1e40;
141     assert(a + b === add(a, b));
142     assert(b + a === add(b, a));
143 });
144
145 runTests();