[BigInt] Add ValueBitLShift into DFG
[WebKit-https.git] / JSTests / stress / bit-op-with-object-returning-int32.js
1 //@ skip if not $jitTests
2 function assert(a, e) {
3     if (a !== e)
4         throw new Error("Expected: " + e + " but got: " + a);
5 }
6
7 function bitAnd(a, b) {
8     return a & b;
9 }
10 noInline(bitAnd);
11
12 var o = { valueOf: () => 0b1101 };
13
14 for (var i = 0; i < 10000; i++)
15     assert(bitAnd(0b11, o), 0b1);
16
17 assert(numberOfDFGCompiles(bitAnd) <= 1, true);
18
19 function bitOr(a, b) {
20     return a | b;
21 }
22 noInline(bitOr);
23
24 for (var i = 0; i < 10000; i++)
25     assert(bitOr(0b11, o), 0b1111);
26
27 assert(numberOfDFGCompiles(bitOr) <= 1, true);
28
29 function bitXor(a, b) {
30     return a ^ b;
31 }
32 noInline(bitXor);
33
34 for (var i = 0; i < 10000; i++)
35     assert(bitXor(0b0011, o), 0b1110);
36
37 assert(numberOfDFGCompiles(bitXor) <= 1, true);
38
39 function bitNot(a) {
40     return ~a;
41 }
42 noInline(bitNot);
43
44 for (var i = 0; i < 10000; i++)
45     assert(bitNot(o), -14);
46
47 assert(numberOfDFGCompiles(bitNot) <= 1, true);
48
49 function bitLShift(a, b) {
50     return a << b;
51 }
52 noInline(bitLShift);
53
54 for (var i = 0; i < 10000; i++)
55     assert(bitLShift(o, 3), 0b1101000);
56
57 assert(numberOfDFGCompiles(bitLShift) <= 1, true);
58