Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/js/src/tests/js1_5/Regress/jstests.list b/js/src/tests/js1_5/Regress/jstests.list
- index 261a913..0108d02 100644
- --- a/js/src/tests/js1_5/Regress/jstests.list
- +++ b/js/src/tests/js1_5/Regress/jstests.list
- @@ -357,7 +357,7 @@ script regress-68498-004.js
- script regress-69607.js
- script regress-71107.js
- script regress-76054.js
- -script regress-80981.js
- +slow script regress-80981.js
- script regress-82306.js
- script regress-89443.js
- script regress-89474.js
- diff --git a/js/src/tests/js1_8/extensions/regress-422269.js b/js/src/tests/js1_8/extensions/regress-422269.js
- index c150f94..1dde8bb 100644
- --- a/js/src/tests/js1_8/extensions/regress-422269.js
- +++ b/js/src/tests/js1_8/extensions/regress-422269.js
- @@ -38,8 +38,8 @@
- //-----------------------------------------------------------------------------
- var BUGNUMBER = 422269;
- var summary = 'Compile-time let block should not capture runtime references';
- -var actual = 'No leak';
- -var expect = 'No leak';
- +var actual = 'referenced only by stack and closure';
- +var expect = 'referenced only by stack and closure';
- //-----------------------------------------------------------------------------
- @@ -56,31 +56,39 @@ function test()
- function f()
- {
- let m = {sin: Math.sin};
- - (function() { m.sin(1); })();
- + (function holder() { m.sin(1); })();
- return m;
- }
- - if (typeof countHeap == 'undefined')
- + if (typeof findReferences == 'undefined')
- {
- expect = actual = 'Test skipped';
- - print('Test skipped. Requires countHeap function.');
- + print('Test skipped. Requires findReferences function.');
- }
- else
- {
- var x = f();
- - f(); // overwrite the machine stack with new objects
- - gc();
- - var n = countHeap();
- - x = null;
- - // When running with the method JIT, null may not get stored to memory right away.
- - // Calling eval ensures that all values are stored out so that the old x is no
- - // longer rooted from the stack.
- - eval("");
- - gc();
- + var refs = findReferences(x);
- - var n2 = countHeap();
- - if (n2 >= n)
- - actual = "leak is detected, something roots the result of f";
- + // At this point, x should only be referenced from the stack --- the
- + // variable 'x' itself, and any random things the conservative scanner
- + // finds --- and possibly from the 'holder' closure, which could itself
- + // be held alive for random reasons. Remove those from the refs list, and
- + // then complain if anything is left.
- + for (var edge in refs) {
- + // Remove references from roots, like the stack.
- + if (refs[edge].every(function (r) r === null))
- + delete refs[edge];
- + // Remove references from the closure, which could be held alive for
- + // random reasons.
- + else if (refs[edge].length === 1 &&
- + typeof refs[edge][0] === "function" &&
- + refs[edge][0].name === "holder")
- + delete refs[edge];
- + }
- +
- + if (Object.keys(refs).length != 0)
- + actual = "unexpected references to the result of f: " + Object.keys(refs).join(", ");
- }
- reportCompare(expect, actual, summary);
- diff --git a/js/src/tests/js1_8_5/extensions/jstests.list b/js/src/tests/js1_8_5/extensions/jstests.list
- index 8328ad2..d07af06 100644
- --- a/js/src/tests/js1_8_5/extensions/jstests.list
- +++ b/js/src/tests/js1_8_5/extensions/jstests.list
- @@ -30,7 +30,6 @@ skip-if(!xulRuntime.shell) script clone-forge.js
- skip-if(!xulRuntime.shell) script clone-complex-object.js
- script set-property-non-extensible.js
- script recursion.js
- -script findReferences-01.js
- script findReferences-02.js
- script findReferences-03.js
- script findReferences-04.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement