summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/gc/bug-1852063.js
blob: 7c464f6ed690fad3aa2aec366c001d1063f239f9 (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
// |jit-test| --fast-warmup

gczeal(0);

// Create a gray function.
grayRoot()[0] = (obj) => obj.x;

function foo(obj, skip) {
  if (!skip)
    return grayRoot()[0](obj);
}

with ({}) {}

// Set up `foo` to inline the gray function when we hit the threshold.
for (var i = 0; i < 6; i++) {
  foo({x:1}, false);
  foo({y:1, x:2}, false);
}

// Start a gc, yielding after marking gray roots.
gczeal(25);
startgc(1);

// Trigger inlining, being careful not to call and mark the gray function.
// This adds the gray function to cellsToAssertNotGray.
for (var i = 0; i < 10; i++) {
  foo({x:1}, true);
}

// Finish the gc and process the delayed gray checks list.
finishgc();