Source code

Revision control

Copy as Markdown

Other Tools

// |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();
}