gc-frame-cache.js (2181B)
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 isAboutEq(actual, expected) { 7 return Math.abs(actual - expected) <= FUZZ_FACTOR; 8 } 9 10 var stacks = []; 11 12 (function () { 13 // Use an IIFE here so that we don't keep these saved stacks alive in the 14 // frame cache when we test that they all go away at the end of the test. 15 16 var startCount = getSavedFrameCount(); 17 print("startCount = " + startCount); 18 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 stacks.push(saveStack()); 66 stacks.push(saveStack()); 67 stacks.push(saveStack()); 68 stacks.push(saveStack()); 69 stacks.push(saveStack()); 70 71 gc(); 72 73 var endCount = getSavedFrameCount(); 74 print("endCount = " + endCount); 75 76 assertEq(isAboutEq(endCount - startCount, 50), true); 77 }()); 78 79 while (stacks.length) { 80 stacks.pop(); 81 } 82 gc(); 83 84 stacks = null; 85 gc(); 86 87 assertEq(isAboutEq(getSavedFrameCount(), 0), true);