1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/saved-stacks/gc-frame-cache.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,76 @@ 1.4 +// Test that SavedFrame instances get removed from the SavedStacks frames cache 1.5 +// after a GC. 1.6 + 1.7 +const FUZZ_FACTOR = 3; 1.8 + 1.9 +function assertAboutEq(actual, expected) { 1.10 + if (Math.abs(actual - expected) > FUZZ_FACTOR) 1.11 + throw new Error("Assertion failed: expected about " + expected + ", got " + actual + 1.12 + ". FUZZ_FACTOR = " + FUZZ_FACTOR); 1.13 +} 1.14 + 1.15 +const stacks = []; 1.16 + 1.17 +stacks.push(saveStack()); 1.18 +stacks.push(saveStack()); 1.19 +stacks.push(saveStack()); 1.20 +stacks.push(saveStack()); 1.21 +stacks.push(saveStack()); 1.22 +stacks.push(saveStack()); 1.23 +stacks.push(saveStack()); 1.24 +stacks.push(saveStack()); 1.25 +stacks.push(saveStack()); 1.26 +stacks.push(saveStack()); 1.27 +stacks.push(saveStack()); 1.28 +stacks.push(saveStack()); 1.29 +stacks.push(saveStack()); 1.30 +stacks.push(saveStack()); 1.31 +stacks.push(saveStack()); 1.32 +stacks.push(saveStack()); 1.33 +stacks.push(saveStack()); 1.34 +stacks.push(saveStack()); 1.35 +stacks.push(saveStack()); 1.36 +stacks.push(saveStack()); 1.37 +stacks.push(saveStack()); 1.38 +stacks.push(saveStack()); 1.39 +stacks.push(saveStack()); 1.40 +stacks.push(saveStack()); 1.41 +stacks.push(saveStack()); 1.42 +stacks.push(saveStack()); 1.43 +stacks.push(saveStack()); 1.44 +stacks.push(saveStack()); 1.45 +stacks.push(saveStack()); 1.46 +stacks.push(saveStack()); 1.47 +stacks.push(saveStack()); 1.48 +stacks.push(saveStack()); 1.49 +stacks.push(saveStack()); 1.50 +stacks.push(saveStack()); 1.51 +stacks.push(saveStack()); 1.52 +stacks.push(saveStack()); 1.53 +stacks.push(saveStack()); 1.54 +stacks.push(saveStack()); 1.55 +stacks.push(saveStack()); 1.56 +stacks.push(saveStack()); 1.57 +stacks.push(saveStack()); 1.58 +stacks.push(saveStack()); 1.59 +stacks.push(saveStack()); 1.60 +stacks.push(saveStack()); 1.61 +stacks.push(saveStack()); 1.62 +stacks.push(saveStack()); 1.63 +stacks.push(saveStack()); 1.64 +stacks.push(saveStack()); 1.65 +stacks.push(saveStack()); 1.66 +stacks.push(saveStack()); 1.67 +stacks.push(saveStack()); 1.68 + 1.69 +assertAboutEq(getSavedFrameCount(), 50); 1.70 + 1.71 +while (stacks.length) { 1.72 + stacks.pop(); 1.73 +} 1.74 +gc(); 1.75 + 1.76 +stacks = null; 1.77 +gc(); 1.78 + 1.79 +assertAboutEq(getSavedFrameCount(), 0);