[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / big-int-out-of-memory-tests.js
1 //@ runDefault("--useBigInt=true", "--useDFGJIT=false")
2
3 function assert(a, message) {
4     if (!a)
5         throw new Error(message);
6 }
7
8 let a = (1n << 1048575n) - 1n;
9 a = (a << 1n) | 1n;
10
11 try {
12     let b = a + 1n;
13     assert(false, "Should throw OutOfMemoryError, but executed without exception");
14 } catch(e) {
15     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
16 }
17
18 try {
19     let b = a - (-1n);
20     assert(false, "Should throw OutOfMemoryError, but executed without exception");
21 } catch(e) {
22     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
23 }
24
25 try {
26     let b = a * (-1n);
27     assert(false, "Should throw OutOfMemoryError, but executed without exception");
28 } catch(e) {
29     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
30 }
31
32 try {
33     let b = a / a;
34     assert(false, "Should throw OutOfMemoryError, but executed without exception");
35 } catch(e) {
36     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
37 }
38
39 try {
40     let b = -a & -1n;
41     assert(false, "Should throw OutOfMemoryError, but executed without exception");
42 } catch(e) {
43     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
44 }
45
46 try {
47     let b = a ^ -1n;
48     assert(false, "Should throw OutOfMemoryError, but executed without exception");
49 } catch(e) {
50     assert(e.message == "Out of memory", "Expected OutOfMemoryError, but got: " + e);
51 }
52