Skip regress-324278.js now, revert it to prev version (with comment tweak).
authorBrendan Eich <brendan@mozilla.org>
Thu, 14 Jan 2010 13:28:32 -0800
changeset 37686 7d7eb566cd77eaff69c4f14766480e0812ec11a3
parent 37685 36bbd730e24f633f5142a0b6be5ec1604ab42ce2
child 37687 f6b37dc8709e3542ce94e9b75d2ff46b08389d1c
push idunknown
push userunknown
push dateunknown
bugs324278
milestone1.9.3a1pre
Skip regress-324278.js now, revert it to prev version (with comment tweak).
js/src/tests/js1_5/GC/jstests.list
js/src/tests/js1_5/GC/regress-324278.js
--- 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") {