summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/record-tuple/bug-1772597.js
blob: a220a813fe06f1759aa3dcd8ce44a6fce570b1f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// |jit-test| skip-if: !this.hasOwnProperty("Tuple")

gczeal(14);

var c = #["a", "b", "c"]; // Need at least 3 elements to trigger the bug
var t;

for (i = 0; i < 2; i++) {
    /*
       To trigger the bug, the calculated tenured size needs to exceed
       the size of the nursery during the previous GC. So we call Tuple.with(),
       which is implemented in C++, because most of the self-hosted Tuple
       methods allocate temporary space that increases the nursery size,
       masking the bug.
     */
    t = c.with(1, "x");
    /*
      Calling gc() manually forces `t` to be tenured. This test fails if
      the GC assumes that `t` has the same alloc kind in the nursery and
      the tenured heap, as happened in Bug 1772597.
    */
    gc();
}