Index: test/mjsunit/compiler/regress-v8-5756.js |
diff --git a/test/mjsunit/compiler/regress-v8-5756.js b/test/mjsunit/compiler/regress-v8-5756.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b7bfcda52bb43c8105bd86df507547abffab6933 |
--- /dev/null |
+++ b/test/mjsunit/compiler/regress-v8-5756.js |
@@ -0,0 +1,31 @@ |
+// Copyright 2016 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: --allow-natives-syntax |
+ |
+z = {}; |
+t = new Uint8Array(3); |
+var m = 0; |
+var x = 10; |
+ |
+function k() { |
+ ++m; |
+ if (m % 10 != 9) { |
+ if (m > 20) // This if is to just force it to deoptimize. |
+ x = '1'; // this deoptimizes during the second invocation of k. |
+ // This causes two deopts, one eager at x = 1 and the |
+ // other lazy at t[2] = z. |
+ t[2] = z; // since we are assigning to Uint8Array, ToNumber |
+ // is called which calls this funciton again. |
+ } |
+} |
+ |
+function f1() { |
+ z.toString = k; |
+ z.toString(); |
+ z.toString(); |
+ %OptimizeFunctionOnNextCall(k); |
+ z.toString(); |
+} |
+f1(); |