Index: test/mjsunit/regress/regress-crbug-350434.js |
diff --git a/test/mjsunit/regress/regress-crbug-350434.js b/test/mjsunit/regress/regress-crbug-350434.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8a9a8e53012eab71dc7844879c4b8f6fc5e93193 |
--- /dev/null |
+++ b/test/mjsunit/regress/regress-crbug-350434.js |
@@ -0,0 +1,33 @@ |
+// Copyright 2014 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --gc-global --noincremental-marking --allow-natives-syntax |
+ |
+function Ctor() { |
+ this.foo = 1; |
+} |
+ |
+var o = new Ctor(); |
+var p = new Ctor(); |
+ |
+ |
+function crash(o, timeout) { |
+ var s = "4000111222"; // Outside Smi range. |
+ %SetAllocationTimeout(100000, timeout); |
+ // This allocates a heap number, causing a GC, triggering lazy deopt. |
+ var end = s >>> 0; |
+ s = s.substring(0, end); |
+ // This creates a map dependency, which gives the GC a reason to trigger |
+ // a lazy deopt when that map dies. |
+ o.bar = 2; |
+} |
+ |
+crash(o, 100000); |
+crash(o, 100000); |
+crash(p, 100000); |
+%OptimizeFunctionOnNextCall(crash); |
+crash(o, 100000); |
+o = null; |
+p = null; |
+crash({}, 0); |