|
1 // Test that SavedFrame instances get removed from the SavedStacks frames cache |
|
2 // after a GC. |
|
3 |
|
4 const FUZZ_FACTOR = 3; |
|
5 |
|
6 function assertAboutEq(actual, expected) { |
|
7 if (Math.abs(actual - expected) > FUZZ_FACTOR) |
|
8 throw new Error("Assertion failed: expected about " + expected + ", got " + actual + |
|
9 ". FUZZ_FACTOR = " + FUZZ_FACTOR); |
|
10 } |
|
11 |
|
12 const stacks = []; |
|
13 |
|
14 stacks.push(saveStack()); |
|
15 stacks.push(saveStack()); |
|
16 stacks.push(saveStack()); |
|
17 stacks.push(saveStack()); |
|
18 stacks.push(saveStack()); |
|
19 stacks.push(saveStack()); |
|
20 stacks.push(saveStack()); |
|
21 stacks.push(saveStack()); |
|
22 stacks.push(saveStack()); |
|
23 stacks.push(saveStack()); |
|
24 stacks.push(saveStack()); |
|
25 stacks.push(saveStack()); |
|
26 stacks.push(saveStack()); |
|
27 stacks.push(saveStack()); |
|
28 stacks.push(saveStack()); |
|
29 stacks.push(saveStack()); |
|
30 stacks.push(saveStack()); |
|
31 stacks.push(saveStack()); |
|
32 stacks.push(saveStack()); |
|
33 stacks.push(saveStack()); |
|
34 stacks.push(saveStack()); |
|
35 stacks.push(saveStack()); |
|
36 stacks.push(saveStack()); |
|
37 stacks.push(saveStack()); |
|
38 stacks.push(saveStack()); |
|
39 stacks.push(saveStack()); |
|
40 stacks.push(saveStack()); |
|
41 stacks.push(saveStack()); |
|
42 stacks.push(saveStack()); |
|
43 stacks.push(saveStack()); |
|
44 stacks.push(saveStack()); |
|
45 stacks.push(saveStack()); |
|
46 stacks.push(saveStack()); |
|
47 stacks.push(saveStack()); |
|
48 stacks.push(saveStack()); |
|
49 stacks.push(saveStack()); |
|
50 stacks.push(saveStack()); |
|
51 stacks.push(saveStack()); |
|
52 stacks.push(saveStack()); |
|
53 stacks.push(saveStack()); |
|
54 stacks.push(saveStack()); |
|
55 stacks.push(saveStack()); |
|
56 stacks.push(saveStack()); |
|
57 stacks.push(saveStack()); |
|
58 stacks.push(saveStack()); |
|
59 stacks.push(saveStack()); |
|
60 stacks.push(saveStack()); |
|
61 stacks.push(saveStack()); |
|
62 stacks.push(saveStack()); |
|
63 stacks.push(saveStack()); |
|
64 stacks.push(saveStack()); |
|
65 |
|
66 assertAboutEq(getSavedFrameCount(), 50); |
|
67 |
|
68 while (stacks.length) { |
|
69 stacks.pop(); |
|
70 } |
|
71 gc(); |
|
72 |
|
73 stacks = null; |
|
74 gc(); |
|
75 |
|
76 assertAboutEq(getSavedFrameCount(), 0); |