Index: test/mjsunit/stack-traces-gc.js |
diff --git a/test/mjsunit/regress/regress-cnlt-elements.js b/test/mjsunit/stack-traces-gc.js |
similarity index 74% |
copy from test/mjsunit/regress/regress-cnlt-elements.js |
copy to test/mjsunit/stack-traces-gc.js |
index 634534c53307caad7c7b7724d875d142272a9edf..218b898b4b7307efec8073072c88c5891e884c8a 100644 |
--- a/test/mjsunit/regress/regress-cnlt-elements.js |
+++ b/test/mjsunit/stack-traces-gc.js |
@@ -27,17 +27,34 @@ |
// Flags: --expose-gc |
-var a = JSON.parse('{"b":1,"c":2,"d":3,"e":4}'); |
-var b = JSON.parse('{"12040200":1, "a":2, "b":2}'); |
-var c = JSON.parse('{"24050300":1}'); |
-b = null; |
+var sum = 0; |
+ |
+Error.prepareStackTrace = function(error, stack) { |
+ sum += error.num; |
+} |
+ |
+for (var i = 0; i < 100; i++) { |
+ var error = new Error(); |
+ error.num = i; |
+ error = undefined; |
+} |
+ |
gc(); |
+assertEquals(0, sum); |
+ |
+var array = []; |
+for (var i = 0; i < 100; i++) { |
+ var error = new Error(); |
+ error.num = i; |
+ array.push(error); |
+ error = undefined; |
+} |
+ |
+var expected_sum = 99 * 50; |
+ |
gc(); |
-c.a1 = 2; |
-c.a2 = 2; |
-c.a3 = 2; |
-c.a4 = 2; |
-c.a5 = 2; |
-c.a6 = 2; |
-c.a7 = 2; |
-c.a8 = 2; |
+// We expect that not all stack traces are formatted after only one GC. |
+assertTrue(expected_sum > sum); |
+ |
+for (var i = 0; i < 10; i++) gc(); |
+assertEquals(expected_sum, sum); |