[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / big-int-mul-jit-untyped.js
1 //@ runBigIntEnabled
2
3 let assert = {
4     sameValue: function(i, e, m) {
5         if (i !== e)
6             throw new Error(m);
7     }
8 }
9
10 function bigIntMul(x, y) {
11     return x * y;
12 }
13 noInline(bigIntMul);
14
15 let o =  {valueOf: () => 10n};
16
17 for (let i = 0; i < 10000; i++) {
18     let r = bigIntMul(3n, o);
19     assert.sameValue(r, 30n, 3n + " * {valueOf: () => 10n} = " + r);
20 }
21
22 o2 =  {valueOf: () => 10000n};
23
24 for (let i = 0; i < 10000; i++) {
25     let r = bigIntMul(o2, o);
26     assert.sameValue(r, 100000n, "{valueOf: () => 10000n} * {valueOf: () => 10n}  = " + r);
27 }
28
29 o = Object(10n);
30 let r = bigIntMul(3n, o);
31 assert.sameValue(r, 30n, 3n + " * Object(10n) = " + r);
32
33 o2 = Object(3241n);
34 r = bigIntMul(o2, o);
35 assert.sameValue(r, 32410n, "Object(32410n) * Object(10n) = " + r);
36