summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/deopt-recursive-soft-once.js
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/test/mjsunit/deopt-recursive-soft-once.js
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadandroid-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz
android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.bz2
android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.zip
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263 Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/test/mjsunit/deopt-recursive-soft-once.js')
-rw-r--r--deps/v8/test/mjsunit/deopt-recursive-soft-once.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/deopt-recursive-soft-once.js b/deps/v8/test/mjsunit/deopt-recursive-soft-once.js
new file mode 100644
index 0000000000..af1eb731f4
--- /dev/null
+++ b/deps/v8/test/mjsunit/deopt-recursive-soft-once.js
@@ -0,0 +1,36 @@
+// Copyright 2017 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 --crankshaft --turbo --no-always-opt
+
+
+function foo(i, deopt = false, deoptobj = null) {
+ if (i == 0) {
+ if (deopt) {
+ // Trigger a soft deopt.
+ deoptobj.bar();
+ }
+ } else {
+ foo(i - 1, deopt, deoptobj);
+ }
+}
+
+assertEquals(0, %GetOptimizationCount(foo));
+assertEquals(0, %GetDeoptCount(foo));
+
+foo(10);
+foo(10);
+%OptimizeFunctionOnNextCall(foo);
+foo(10);
+
+assertOptimized(foo);
+assertEquals(1, %GetOptimizationCount(foo));
+assertEquals(0, %GetDeoptCount(foo));
+
+foo(10, true, { bar: function(){} });
+
+assertUnoptimized(foo);
+assertEquals(1, %GetOptimizationCount(foo));
+// Soft deopts don't count to the deopt count.
+assertEquals(0, %GetDeoptCount(foo));