Skip regress-324278.js now, revert it to prev version (with comment tweak).
Skip regress-324278.js now, revert it to prev version (with comment tweak).
--- a/js/src/tests/js1_5/GC/jstests.list
+++ b/js/src/tests/js1_5/GC/jstests.list
@@ -6,17 +6,17 @@ script regress-278725.js
script regress-306788.js
script regress-311497.js
script regress-313276.js
script regress-313479.js
script regress-316885-01.js
script regress-316885-02.js
script regress-316885-03.js
skip-if(!xulRuntime.shell) script regress-319980-01.js # slow
-skip-if(!xulRuntime.shell&&!isDebugBuild) script regress-324278.js # slow
+skip regress-324278.js # slow, obsoleted by 98409 fix
script regress-331719.js
skip script regress-338653.js # slow, killed on x86_64
script regress-341877-01.js
script regress-341877-02.js
skip script regress-346794.js # slow, killed
script regress-348532.js
script regress-352606.js
script regress-383269-01.js
--- a/js/src/tests/js1_5/GC/regress-324278.js
+++ b/js/src/tests/js1_5/GC/regress-324278.js
@@ -46,39 +46,34 @@ printBugNumber(BUGNUMBER);
printStatus (summary);
// Number to push native stack size beyond 10MB if GC recurses generating
// segfault on Fedora Core / Ubuntu Linuxes where the stack size by default
// is 10MB/8MB.
var N = 100*1000;
function build(N) {
- // We used to exploit the fact that regexp literals were shared between
- // function invocations, but ES5 fixes this design flaw, so we have to
- // make a regexp for each new function f, and store it as a property of f.
- // Thus we build the following chain:
- //
- // chainTop: function->regexp->function->regexp....->null
- //
+ // Exploit the fact that (in ES3), regexp literals are shared between
+ // function invocations. Thus we build the following chain:
+ // chainTop: function->regexp->function->regexp....->null
// to check how GC would deal with this chain.
var chainTop = null;
for (var i = 0; i != N; ++i) {
- var f = Function('some_arg'+i, ' return some_arg'+i+'.re;');
- var re = /test/;
- f.re = re;
+ var f = Function('some_arg'+i, ' return /test/;');
+ var re = f();
re.previous = chainTop;
chainTop = f;
}
return chainTop;
}
function check(chainTop, N) {
for (var i = 0; i != N; ++i) {
- var re = chainTop(chainTop);
+ var re = chainTop();
chainTop = re.previous;
}
if (chainTop !== null)
throw "Bad chainTop";
}
if (typeof gc != "function") {