summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/xdr/classes.js
blob: 3b83e41a48b0b386e5c7b6f2237c84b09d1d6a0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
load(libdir + 'bytecode-cache.js');

// Prevent relazification triggered by some zeal modes. Relazification can cause
// test failures because lazy functions are XDR'd differently.
gczeal(0);

var test = "new class extends class { } { constructor() { super(); } }()";
evalWithCache(test, { assertEqBytecode : true });

var test = "new class { method() { super.toString(); } }().method()";
evalWithCache(test, { assertEqBytecode : true });

// Test class constructor in lazy function
var test = `
    function f(delazify) {
        function inner1() {
            class Y {
                constructor() {}
            }
        }

        function inner2() {
            class Y {
                constructor() {}
                field1 = "";
            }
        }

        if (delazify) {
            inner1();
            inner2();
        }
    }
    f(generation > 0);
`;
evalWithCache(test, {});