js/src/jit-test/tests/saved-stacks/gc-frame-cache.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 // Test that SavedFrame instances get removed from the SavedStacks frames cache
     2 // after a GC.
     4 const FUZZ_FACTOR = 3;
     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 }
    12 const stacks = [];
    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());
    66 assertAboutEq(getSavedFrameCount(), 50);
    68 while (stacks.length) {
    69   stacks.pop();
    70 }
    71 gc();
    73 stacks = null;
    74 gc();
    76 assertAboutEq(getSavedFrameCount(), 0);

mercurial