summaryrefslogtreecommitdiff
path: root/deps/v8/test/debugger
diff options
context:
space:
mode:
authorMichaƫl Zasso <targos@protonmail.com>2017-09-12 11:34:59 +0200
committerAnna Henningsen <anna@addaleax.net>2017-09-13 16:15:18 +0200
commitd82e1075dbc2cec2d6598ade10c1f43805f690fd (patch)
treeccd242b9b491dfc341d1099fe11b0ef528839877 /deps/v8/test/debugger
parentb4b7ac6ae811b2b5a3082468115dfb5a5246fe3f (diff)
downloadandroid-node-v8-d82e1075dbc2cec2d6598ade10c1f43805f690fd.tar.gz
android-node-v8-d82e1075dbc2cec2d6598ade10c1f43805f690fd.tar.bz2
android-node-v8-d82e1075dbc2cec2d6598ade10c1f43805f690fd.zip
deps: update V8 to 6.1.534.36
PR-URL: https://github.com/nodejs/node/pull/14730 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/test/debugger')
-rw-r--r--deps/v8/test/debugger/debug/debug-allscopes-on-debugger.js5
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-liveedit-stepin.js9
-rw-r--r--deps/v8/test/debugger/debug/debug-modules-set-variable-value.js378
-rw-r--r--deps/v8/test/debugger/debug/debug-multiple-var-decl.js7
-rw-r--r--deps/v8/test/debugger/debug/debug-optimize.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-print.js12
-rw-r--r--deps/v8/test/debugger/debug/debug-return-value.js20
-rw-r--r--deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js50
-rw-r--r--deps/v8/test/debugger/debug/debug-scopes.js27
-rw-r--r--deps/v8/test/debugger/debug/debug-step-into-json.js5
-rw-r--r--deps/v8/test/debugger/debug/debug-step-into-valueof.js5
-rw-r--r--deps/v8/test/debugger/debug/debug-stepin-builtin-callback-opt.js5
-rw-r--r--deps/v8/test/debugger/debug/debug-stepin-foreach.js5
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js5
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-step-destructuring-assignment.js5
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-step-destructuring-bind.js12
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-step-into-regexp-subclass.js5
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepin-default-parameters.js2
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepin-microtasks.js15
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepin-proxies.js6
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepin-string-template.js13
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepin-tailcalls.js46
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepnext-for.js8
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-stepout-tailcalls.js45
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-abort-at-break.js12
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-continue-at-break.js14
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-in-and-out.js14
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-in-out-out.js14
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-in.js22
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-nested.js20
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-next-constant.js10
-rw-r--r--deps/v8/test/debugger/debug/es8/async-debug-step-next.js12
-rw-r--r--deps/v8/test/debugger/debug/es8/async-function-debug-evaluate.js24
-rw-r--r--deps/v8/test/debugger/debug/es8/async-function-debug-scopes.js6
-rw-r--r--deps/v8/test/debugger/debug/ignition/elided-instruction.js8
-rw-r--r--deps/v8/test/debugger/debug/regress-3225.js1
-rw-r--r--deps/v8/test/debugger/debug/regress/regress-crbug-424142.js2
-rw-r--r--deps/v8/test/debugger/debug/regress/regress-crbug-467180.js2
-rw-r--r--deps/v8/test/debugger/debugger.status42
-rw-r--r--deps/v8/test/debugger/regress/regress-5610.js2
-rw-r--r--deps/v8/test/debugger/regress/regress-5901-1.js4
-rw-r--r--deps/v8/test/debugger/regress/regress-5901-2.js6
-rw-r--r--deps/v8/test/debugger/regress/regress-6526.js25
-rw-r--r--deps/v8/test/debugger/regress/regress-crbug-724858.js36
-rw-r--r--deps/v8/test/debugger/regress/regress-crbug-736758.js15
-rw-r--r--deps/v8/test/debugger/test-api.js13
53 files changed, 709 insertions, 301 deletions
diff --git a/deps/v8/test/debugger/debug/debug-allscopes-on-debugger.js b/deps/v8/test/debugger/debug/debug-allscopes-on-debugger.js
index 4f09b0a61e..22dbb6ead4 100644
--- a/deps/v8/test/debugger/debug/debug-allscopes-on-debugger.js
+++ b/deps/v8/test/debugger/debug/debug-allscopes-on-debugger.js
@@ -44,8 +44,9 @@ var sum = 0;
i++; // Break 2.
i++; // Break 3.
debugger; // Break 4.
- return i; // Break 5.
-}()); // Break 6.
+ return i // Break 5.
+ ; // Break 6.
+}());
assertNull(exception); // Break 7.
assertEquals(expected_breaks, break_count);
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js
index a3ac82c619..39893df276 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
// Test that asynchronous features do not work with
// side-effect free debug-evaluate.
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js
index 19a4963c92..90f7cf2866 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js
index 26ddfdbee4..f1f4e58199 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js
index 4c8492862d..17826a5138 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js
index 6ceb082f66..3bc97f1973 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
// Test that declaring local variables in IIFEs works with
// side-effect free debug-evaluate.
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js
index 27a77262cf..c900df2f93 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js
index cc971e8832..58d95628b8 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js
+++ b/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/debug-liveedit-stepin.js b/deps/v8/test/debugger/debug/debug-liveedit-stepin.js
index a453525bc9..f96a079638 100644
--- a/deps/v8/test/debugger/debug/debug-liveedit-stepin.js
+++ b/deps/v8/test/debugger/debug/debug-liveedit-stepin.js
@@ -60,15 +60,18 @@ print(JSON.stringify(log, 1));
assertEquals([
"debugger;",
"results.push(BestEditor());",
- " return 'Emacs';","}",
+ " return 'Emacs';",
+ " return 'Emacs';",
"results.push(BestEditor());",
"results.push(BestEditor());",
" return 'Emacs';",
- " return 'Eclipse';","}",
+ " return 'Eclipse';",
+ " return 'Eclipse';",
"results.push(BestEditor());",
"results.push(BestEditor());",
" return 'Eclipse';",
" return 'Vim';",
- "}","results.push(BestEditor());",
+ " return 'Vim';",
+ "results.push(BestEditor());",
"Debug.setListener(null);"
], log);
diff --git a/deps/v8/test/debugger/debug/debug-modules-set-variable-value.js b/deps/v8/test/debugger/debug/debug-modules-set-variable-value.js
new file mode 100644
index 0000000000..61c032f026
--- /dev/null
+++ b/deps/v8/test/debugger/debug/debug-modules-set-variable-value.js
@@ -0,0 +1,378 @@
+// 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.
+
+// MODULE
+// Flags: --no-always-opt
+
+// The first part of this file is copied over from debug-set-variable-value.js
+// (a few tests were removed because they make no sense for modules). The second
+// part is new.
+
+var Debug = debug.Debug;
+
+// Accepts a function/closure 'fun' that must have a debugger statement inside.
+// A variable 'variable_name' must be initialized before debugger statement
+// and returned after the statement. The test will alter variable value when
+// on debugger statement and check that returned value reflects the change.
+function RunPauseTest(scope_number, expected_old_result, variable_name,
+ new_value, expected_new_result, fun) {
+ var actual_old_result = fun();
+ assertEquals(expected_old_result, actual_old_result);
+
+ var listener_delegate;
+ var listener_called = false;
+ var exception = null;
+
+ function listener_delegate(exec_state) {
+ var scope = exec_state.frame(0).scope(scope_number);
+ scope.setVariableValue(variable_name, new_value);
+ }
+
+ function listener(event, exec_state, event_data, data) {
+ try {
+ if (event == Debug.DebugEvent.Break) {
+ listener_called = true;
+ listener_delegate(exec_state);
+ }
+ } catch (e) {
+ exception = e;
+ }
+ }
+
+ // Add the debug event listener.
+ Debug.setListener(listener);
+
+ var actual_new_result;
+ try {
+ actual_new_result = fun();
+ } finally {
+ Debug.setListener(null);
+ }
+
+ if (exception != null) {
+ assertUnreachable("Exception in listener\n" + exception.stack);
+ }
+ assertTrue(listener_called);
+
+ assertEquals(expected_new_result, actual_new_result);
+}
+
+
+function ClosureTestCase(scope_index, old_result, variable_name, new_value,
+ new_result, success_expected, factory) {
+ this.scope_index_ = scope_index;
+ this.old_result_ = old_result;
+ this.variable_name_ = variable_name;
+ this.new_value_ = new_value;
+ this.new_result_ = new_result;
+ this.success_expected_ = success_expected;
+ this.factory_ = factory;
+}
+
+ClosureTestCase.prototype.run_pause_test = function() {
+ var th = this;
+ var fun = this.factory_(true);
+ this.run_and_catch_(function() {
+ RunPauseTest(th.scope_index_ + 1, th.old_result_, th.variable_name_,
+ th.new_value_, th.new_result_, fun);
+ });
+}
+
+ClosureTestCase.prototype.run_and_catch_ = function(runnable) {
+ if (this.success_expected_) {
+ runnable();
+ } else {
+ assertThrows(runnable);
+ }
+}
+
+
+// Test scopes visible from closures.
+
+var closure_test_cases = [
+ new ClosureTestCase(0, 'cat', 'v1', 5, 5, true,
+ function Factory(debug_stop) {
+ var v1 = 'cat';
+ return function() {
+ if (debug_stop) debugger;
+ return v1;
+ }
+ }),
+
+ new ClosureTestCase(0, 4, 't', 7, 9, true, function Factory(debug_stop) {
+ var t = 2;
+ var r = eval("t");
+ return function() {
+ if (debug_stop) debugger;
+ return r + t;
+ }
+ }),
+
+ new ClosureTestCase(0, 6, 't', 10, 13, true, function Factory(debug_stop) {
+ var t = 2;
+ var r = eval("t = 3");
+ return function() {
+ if (debug_stop) debugger;
+ return r + t;
+ }
+ }),
+
+ new ClosureTestCase(2, 'capybara', 'foo', 77, 77, true,
+ function Factory(debug_stop) {
+ var foo = "capybara";
+ return (function() {
+ var bar = "fish";
+ try {
+ throw {name: "test exception"};
+ } catch (e) {
+ return function() {
+ if (debug_stop) debugger;
+ bar = "beast";
+ return foo;
+ }
+ }
+ })();
+ }),
+
+ new ClosureTestCase(0, 'AlphaBeta', 'eee', 5, '5Beta', true,
+ function Factory(debug_stop) {
+ var foo = "Beta";
+ return (function() {
+ var bar = "fish";
+ try {
+ throw "Alpha";
+ } catch (eee) {
+ return function() {
+ if (debug_stop) debugger;
+ return eee + foo;
+ }
+ }
+ })();
+ })
+];
+
+for (var i = 0; i < closure_test_cases.length; i++) {
+ closure_test_cases[i].run_pause_test();
+}
+
+
+// Test local scope.
+
+RunPauseTest(0, 'HelloYou', 'u', 'We', 'HelloWe', (function Factory() {
+ return function() {
+ var u = "You";
+ var v = "Hello";
+ debugger;
+ return v + u;
+ }
+})());
+
+RunPauseTest(0, 'Helloworld', 'p', 'GoodBye', 'HelloGoodBye',
+ (function Factory() {
+ function H(p) {
+ var v = "Hello";
+ debugger;
+ return v + p;
+ }
+ return function() {
+ return H("world");
+ }
+})());
+
+RunPauseTest(0, 'mouse', 'v1', 'dog', 'dog', (function Factory() {
+ return function() {
+ var v1 = 'cat';
+ eval("v1 = 'mouse'");
+ debugger;
+ return v1;
+ }
+})());
+
+// Check that we correctly update local variable that
+// is referenced from an inner closure.
+RunPauseTest(0, 'Blue', 'v', 'Green', 'Green', (function Factory() {
+ return function() {
+ function A() {
+ var v = "Blue";
+ function Inner() {
+ return void v;
+ }
+ debugger;
+ return v;
+ }
+ return A();
+ }
+})());
+
+// Check that we correctly update parameter, that is known to be stored
+// both on stack and in heap.
+RunPauseTest(0, 5, 'p', 2012, 2012, (function Factory() {
+ return function() {
+ function A(p) {
+ function Inner() {
+ return void p;
+ }
+ debugger;
+ return p;
+ }
+ return A(5);
+ }
+})());
+
+
+////////////////////////////////////////////////////////////////////////////////
+// From here on we test the module scope.
+////////////////////////////////////////////////////////////////////////////////
+
+
+// Non-existing variable.
+{
+ let exception;
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let module_scope = exec_state.frame().scope(1);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ try {
+ module_scope.setVariableValue('spargel', 42);
+ } catch(e) { exception = e; }
+ }
+ }
+
+ Debug.setListener(listener);
+ assertThrows(() => spargel, ReferenceError);
+ debugger;
+ assertThrows(() => spargel, ReferenceError);
+ assertTrue(exception !== undefined);
+}
+
+
+// Local (non-exported) variable.
+let salat = 12;
+{
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let module_scope = exec_state.frame().scope(1);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ module_scope.setVariableValue('salat', 42);
+ }
+ }
+
+ Debug.setListener(listener);
+ assertEquals(12, salat);
+ debugger;
+ assertEquals(42, salat);
+}
+
+
+// Local (non-exported) variable, nested access.
+let salad = 12;
+{
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let scope_count = exec_state.frame().scopeCount();
+ let module_scope = exec_state.frame().scope(2);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ module_scope.setVariableValue('salad', 42);
+ }
+ }
+
+ Debug.setListener(listener);
+ function foo() {
+ assertEquals(12, salad);
+ debugger;
+ assertEquals(42, salad);
+ };
+ foo();
+}
+
+
+// Exported variable.
+export let salami = 1;
+{
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let module_scope = exec_state.frame().scope(1);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ module_scope.setVariableValue('salami', 2);
+ }
+ }
+
+ Debug.setListener(listener);
+ assertEquals(1, salami);
+ debugger;
+ assertEquals(2, salami);
+}
+
+
+// Exported variable, nested access.
+export let ham = 1;
+{
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let scope_count = exec_state.frame().scopeCount();
+ let module_scope = exec_state.frame().scope(2);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ module_scope.setVariableValue('ham', 2);
+ }
+ }
+
+ Debug.setListener(listener);
+ function foo() {
+ assertEquals(1, ham);
+ debugger;
+ assertEquals(2, ham);
+ };
+ foo();
+}
+
+
+// Imported variable. Setting is currently not supported.
+import { salami as wurst } from "./debug-modules-set-variable-value.js";
+{
+ let exception;
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let module_scope = exec_state.frame().scope(1);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ try {
+ module_scope.setVariableValue('wurst', 3);
+ } catch(e) { exception = e; }
+ }
+ }
+
+ Debug.setListener(listener);
+ assertEquals(2, wurst);
+ debugger;
+ assertEquals(2, wurst);
+ assertTrue(exception !== undefined);
+}
+
+
+// Imported variable, nested access. Setting is currently not supported.
+import { salami as wurstl } from "./debug-modules-set-variable-value.js";
+{
+ let exception;
+ function listener(event, exec_state) {
+ if (event == Debug.DebugEvent.Break) {
+ let scope_count = exec_state.frame().scopeCount();
+ let module_scope = exec_state.frame().scope(2);
+ assertEquals(debug.ScopeType.Module, module_scope.scopeType());
+ try {
+ module_scope.setVariableValue('wurstl', 3);
+ } catch(e) { exception = e; }
+ }
+ }
+
+ Debug.setListener(listener);
+ function foo() {
+ assertEquals(2, wurstl);
+ debugger;
+ assertEquals(2, wurstl);
+ assertTrue(exception !== undefined);
+ };
+ foo();
+}
+
+
+Debug.setListener(null);
diff --git a/deps/v8/test/debugger/debug/debug-multiple-var-decl.js b/deps/v8/test/debugger/debug/debug-multiple-var-decl.js
index 2e6deb781c..240654657c 100644
--- a/deps/v8/test/debugger/debug/debug-multiple-var-decl.js
+++ b/deps/v8/test/debugger/debug/debug-multiple-var-decl.js
@@ -19,8 +19,9 @@ function f() {
const l7 = 7, // r
l8 = 8, // s
l9 = 9; // t
- return 0; // u
-} // v
+ return 0 // u
+ ; // v
+}
function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.Break) return;
@@ -68,6 +69,6 @@ var expected = [
"l11","n11", // local var
"o6","p11","q11", // local let
"r13","s13","t13", // local const
- "u2","v0", // return
+ "u2","v3", // return
];
assertEquals(expected, log);
diff --git a/deps/v8/test/debugger/debug/debug-optimize.js b/deps/v8/test/debugger/debug/debug-optimize.js
index f296816aa2..75f048fc04 100644
--- a/deps/v8/test/debugger/debug/debug-optimize.js
+++ b/deps/v8/test/debugger/debug/debug-optimize.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --opt --no-always-opt
+// Flags: --opt --no-always-opt --no-stress-fullcodegen
var Debug = debug.Debug;
diff --git a/deps/v8/test/debugger/debug/debug-print.js b/deps/v8/test/debugger/debug/debug-print.js
index ea7e66be93..9b054d9d27 100644
--- a/deps/v8/test/debugger/debug/debug-print.js
+++ b/deps/v8/test/debugger/debug/debug-print.js
@@ -11,32 +11,32 @@ var obj = {};
array = [];
%DebugPrint(array);
-// FAST_SMI_ELEMENTS
+// PACKED_SMI_ELEMENTS
array = [1, 2, 3];
%DebugPrint(array);
-// FAST_HOLEY_SMI_ELEMENTS
+// HOLEY_SMI_ELEMENTS
array[10] = 100;
array[11] = 100;
%DebugPrint(array);
-// FAST_ELEMENTS
+// PACKED_ELEMENTS
array = [1, obj, obj];
%DebugPrint(array);
-// FAST_HOLEY_ELEMENTS
+// HOLEY_ELEMENTS
array[100] = obj;
array[101] = obj;
%DebugPrint(array);
-// FAST_DOUBLE_ELEMENTS
+// PACKED_DOUBLE_ELEMENTS
array = [1.1, 2.2, 3.3, 3.3, 3.3, NaN];
%DebugPrint(array);
array.push(NaN);
array.push(NaN);
%DebugPrint(array);
-// FAST_HOLEY_DOUBLE_ELEMENTS
+// HOLEY_DOUBLE_ELEMENTS
array[100] = 1.2;
array[101] = 1.2;
%DebugPrint(array);
diff --git a/deps/v8/test/debugger/debug/debug-return-value.js b/deps/v8/test/debugger/debug/debug-return-value.js
index cb4000ea31..77717ceb7c 100644
--- a/deps/v8/test/debugger/debug/debug-return-value.js
+++ b/deps/v8/test/debugger/debug/debug-return-value.js
@@ -31,6 +31,7 @@ listener_complete = false;
exception = false;
break_count = 0;
expected_return_value = 0;
+expected_source_position = [];
debugger_source_position = 0;
// Listener which expects to do four steps to reach returning from the function.
@@ -47,18 +48,13 @@ function listener(event, exec_state, event_data, data) {
break;
case 2:
// Position now at the if statement.
- assertEquals(debugger_source_position + 10,
+ assertEquals(expected_source_position.shift() + debugger_source_position,
exec_state.frame(0).sourcePosition());
break;
case 3:
// Position now at either of the returns.
- if (expected_return_value == 1) {
- assertEquals(debugger_source_position + 19,
- exec_state.frame(0).sourcePosition());
- } else {
- assertEquals(debugger_source_position + 38,
- exec_state.frame(0).sourcePosition());
- }
+ assertEquals(expected_source_position.shift() + debugger_source_position,
+ exec_state.frame(0).sourcePosition());
break;
default:
fail("Unexpected");
@@ -66,9 +62,8 @@ function listener(event, exec_state, event_data, data) {
exec_state.prepareStep(Debug.StepAction.StepIn);
} else {
// Position at the end of the function.
- assertEquals(debugger_source_position + 50,
- exec_state.frame(0).sourcePosition());
-
+ assertEquals(expected_source_position.shift() + debugger_source_position,
+ exec_state.frame(0).sourcePosition());
// Just about to return from the function.
assertEquals(expected_return_value,
exec_state.frame(0).returnValue().value());
@@ -95,6 +90,7 @@ function f(x) {debugger; if (x) { return 1; } else { return 2; } };
// Call f expecting different return values.
break_count = 0;
expected_return_value = 2;
+expected_source_position = [10, 38, 47];
listener_complete = false;
f();
assertFalse(exception, "exception in listener")
@@ -103,6 +99,7 @@ assertEquals(4, break_count);
break_count = 0;
expected_return_value = 1;
+expected_source_position = [10, 19, 28];
listener_complete = false;
f(true);
assertFalse(exception, "exception in listener")
@@ -111,6 +108,7 @@ assertEquals(4, break_count);
break_count = 0;
expected_return_value = 2;
+expected_source_position = [10, 38, 47];
listener_complete = false;
f(false);
assertFalse(exception, "exception in listener")
diff --git a/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js b/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js
index cf1b6468aa..ab35a5fa4a 100644
--- a/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js
+++ b/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
// The functions used for testing backtraces. They are at the top to make the
// testing of source line/column easier.
@@ -107,7 +107,7 @@ function *gen1() {
}
var g = gen1();
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
@@ -120,7 +120,7 @@ function *gen2(a) {
}
g = gen2(42);
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 42}, 0, g);
@@ -134,7 +134,7 @@ function *gen3(a) {
}
g = gen3(0);
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 0, b: undefined}, 0, g);
@@ -148,11 +148,12 @@ function *gen4(a, b) {
var x = 2;
yield a;
var y = 3;
+ yield a;
return b;
}
g = gen4(0, 1);
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 0, b: 1, x: undefined, y: undefined}, 0, g);
@@ -167,12 +168,13 @@ CheckScopeContent({a: 0, b: 1, x: 2, y: 3}, 0, g);
function *gen5(a) {
eval('var b = 2');
+ yield a;
return b;
}
g = gen5(1);
g.next();
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1, b: 2}, 0, g);
@@ -190,13 +192,13 @@ function *gen6() {
g = gen6();
g.next();
CheckScopeChain([debug.ScopeType.With,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
g.next();
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
@@ -216,7 +218,7 @@ g = gen7();
g.next();
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.With,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({}, 0, g);
@@ -237,7 +239,7 @@ g = gen8();
g.next();
CheckScopeChain([debug.ScopeType.With,
debug.ScopeType.With,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 2, b: 1}, 0, g);
@@ -259,7 +261,7 @@ function *gen9() {
g = gen9();
g.next();
CheckScopeChain([debug.ScopeType.Catch,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({e: 42}, 0, g);
@@ -275,23 +277,23 @@ g = gen10();
g.next();
CheckScopeChain([debug.ScopeType.Block,
debug.ScopeType.Block,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
-CheckScopeContent({i: 0}, 0, g);
+CheckScopeContent({i: 0}, 1, g);
g.next();
-CheckScopeContent({i: 1}, 0, g);
-CheckScopeContent({i: 0}, 1, g); // Additional block scope with i = 0;
+CheckScopeContent({i: 1}, 1, g);
// Nested generators.
var gen12;
function *gen11() {
+ var b = 2;
gen12 = function*() {
var a = 1;
yield 1;
- return 2;
+ return b;
}();
var a = 0;
@@ -301,12 +303,12 @@ function *gen11() {
gen11().next();
g = gen12;
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Closure,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1}, 0, g);
-CheckScopeContent({a: 0}, 1, g);
+CheckScopeContent({b: 2}, 1, g);
// Set a variable in an empty scope.
@@ -355,7 +357,7 @@ var g = gen15();
assertEquals(1, g.next().value);
CheckScopeChain([debug.ScopeType.With,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({a: 1, b: 2}, 0, g);
@@ -376,7 +378,7 @@ CheckScopeContent({a: 1, b: 2}, 0, g);
CheckScopeContent({c: 1, d: 4, e: 42}, 1, g);
assertEquals(5, g.next().value); // Initialized after set.
-CheckScopeChain([debug.ScopeType.Closure,
+CheckScopeChain([debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
@@ -404,15 +406,15 @@ g.next();
CheckScopeChain([debug.ScopeType.Block,
debug.ScopeType.With,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
-CheckScopeContent({d: 4}, 0, g);
+CheckScopeContent({d: 4, e: undefined}, 0, g);
CheckScopeContent({a: 1, b: 2}, 1, g);
CheckScopeContent({c: 3}, 2, g);
Debug.generatorScope(g, 0).setVariableValue("d", 1);
-CheckScopeContent({d: 1}, 0, g);
+CheckScopeContent({d: 1, e: undefined}, 0, g);
assertEquals(1, g.next().value);
@@ -434,7 +436,7 @@ g = gen17();
g.next();
CheckScopeChain([debug.ScopeType.Catch,
- debug.ScopeType.Closure,
+ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global], g);
CheckScopeContent({e: 42}, 0, g);
diff --git a/deps/v8/test/debugger/debug/debug-scopes.js b/deps/v8/test/debugger/debug/debug-scopes.js
index 7ee7a8d6e6..6f01cec210 100644
--- a/deps/v8/test/debugger/debug/debug-scopes.js
+++ b/deps/v8/test/debugger/debug/debug-scopes.js
@@ -722,6 +722,33 @@ closure_9();
EndTest();
+BeginTest("Closure passed to optimized Array.prototype.forEach");
+function closure_10(a) {
+ var x = a + 2;
+ function closure_11(b) {
+ debugger;
+ return a + b + x;
+ }
+ [42].forEach(closure_11);
+}
+
+listener_delegate = function(exec_state) {
+ CheckScopeChain([debug.ScopeType.Local,
+ debug.ScopeType.Closure,
+ debug.ScopeType.Script,
+ debug.ScopeType.Global], exec_state);
+ CheckScopeContent({b:42}, 0, exec_state);
+ CheckScopeContent({a:5, x:7}, 1, exec_state);
+ CheckScopeChainNames(
+ ["closure_11", "closure_10", undefined, undefined], exec_state);
+};
+begin_test_count++; closure_10(5); end_test_count++;
+begin_test_count++; closure_10(5); end_test_count++;
+%OptimizeFunctionOnNextCall(closure_10);
+closure_10(5);
+EndTest();
+
+
// Test a mixture of scopes.
BeginTest("The full monty");
function the_full_monty(a, b) {
diff --git a/deps/v8/test/debugger/debug/debug-step-into-json.js b/deps/v8/test/debugger/debug/debug-step-into-json.js
index 1859141063..75bfde3c1d 100644
--- a/deps/v8/test/debugger/debug/debug-step-into-json.js
+++ b/deps/v8/test/debugger/debug/debug-step-into-json.js
@@ -21,8 +21,9 @@ function listener(event, exec_state, event_data, data) {
};
function toJsonCallback() {
- return "x"; // Break 2.
-} // Break 3.
+ return "x" // Break 2.
+ ; // Break 3.
+}
var o = {};
o.toJSON = toJsonCallback;
diff --git a/deps/v8/test/debugger/debug/debug-step-into-valueof.js b/deps/v8/test/debugger/debug/debug-step-into-valueof.js
index ba5390cd71..b70bb2ff2a 100644
--- a/deps/v8/test/debugger/debug/debug-step-into-valueof.js
+++ b/deps/v8/test/debugger/debug/debug-step-into-valueof.js
@@ -20,8 +20,9 @@ function listener(event, exec_state, event_data, data) {
};
function valueOfCallback() {
- return 2; // Break 2.
-} // Break 3.
+ return 2 // Break 2.
+ ; // Break 3.
+}
var o = {};
o.valueOf = valueOfCallback;
diff --git a/deps/v8/test/debugger/debug/debug-stepin-builtin-callback-opt.js b/deps/v8/test/debugger/debug/debug-stepin-builtin-callback-opt.js
index fbf5ab4c0e..1fb9ce78dc 100644
--- a/deps/v8/test/debugger/debug/debug-stepin-builtin-callback-opt.js
+++ b/deps/v8/test/debugger/debug/debug-stepin-builtin-callback-opt.js
@@ -21,8 +21,9 @@ function listener(event, exec_state, event_data, data) {
};
function replaceCallback(a) {
- return "x"; // Break 2.
-} // Break 3.
+ return "x" // Break 2.
+ ; // Break 3.
+}
var re = /x/g;
// Optimize the inner helper function for string replace.
diff --git a/deps/v8/test/debugger/debug/debug-stepin-foreach.js b/deps/v8/test/debugger/debug/debug-stepin-foreach.js
index 94a6341368..36fcf1605e 100644
--- a/deps/v8/test/debugger/debug/debug-stepin-foreach.js
+++ b/deps/v8/test/debugger/debug/debug-stepin-foreach.js
@@ -37,8 +37,9 @@ debugger; // Break 0.
[3,4].forEach(bound_callback); // Break 6.
function callback(x) {
- return x; // Break 2. // Break 4. // Break 7. // Break 9.
-} // Break 3. // Break 5. // Break 8. // Break 10.
+ return x // Break 2. // Break 4. // Break 7. // Break 9.
+ ; // Break 3. // Break 5. // Break 8. // Break 10.
+}
assertNull(exception); // Break 11.
assertEquals(expected_breaks, break_count);
diff --git a/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js b/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js
index 721423a968..a897693509 100644
--- a/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js
+++ b/deps/v8/test/debugger/debug/es6/debug-promises/stepin-handler.js
@@ -48,8 +48,9 @@ Promise.resolve(42)
});
function callback(x) {
- return x; // Break 2. // Break 4. // Break 6.
-} // Break 3. // Break 5. // Break 7.
+ return x // Break 2. // Break 4. // Break 6.
+ ; // Break 3. // Break 5. // Break 7.
+}
function finalize() {
assertNull(exception); // Break 8.
diff --git a/deps/v8/test/debugger/debug/es6/debug-step-destructuring-assignment.js b/deps/v8/test/debugger/debug/es6/debug-step-destructuring-assignment.js
index d46f670ee1..cbbd4c522a 100644
--- a/deps/v8/test/debugger/debug/es6/debug-step-destructuring-assignment.js
+++ b/deps/v8/test/debugger/debug/es6/debug-step-destructuring-assignment.js
@@ -76,8 +76,9 @@ function f() {
} // B34
function return1() {
- return 1; // B26
-} // B27
+ return 1 // B26
+ ; // B27
+}
f();
Debug.setListener(null); // B35
diff --git a/deps/v8/test/debugger/debug/es6/debug-step-destructuring-bind.js b/deps/v8/test/debugger/debug/es6/debug-step-destructuring-bind.js
index b6446cfd6d..2e707b994c 100644
--- a/deps/v8/test/debugger/debug/es6/debug-step-destructuring-bind.js
+++ b/deps/v8/test/debugger/debug/es6/debug-step-destructuring-bind.js
@@ -98,12 +98,12 @@ function test() {
}
var {
- x: a, // B46
- y: b = 9 // B47
- } = { x: 4 };
- assertEquals([4, 9], [a, b]); // B48
-} // B49
+ x: a,
+ y: b = 9
+ } = { x: 4 }; // B46
+ assertEquals([4, 9], [a, b]); // B47
+} // B48
test();
-Debug.setListener(null); // B50
+Debug.setListener(null); // B49
assertNull(exception);
diff --git a/deps/v8/test/debugger/debug/es6/debug-step-into-regexp-subclass.js b/deps/v8/test/debugger/debug/es6/debug-step-into-regexp-subclass.js
index 5e70fad274..4b0648f406 100644
--- a/deps/v8/test/debugger/debug/es6/debug-step-into-regexp-subclass.js
+++ b/deps/v8/test/debugger/debug/es6/debug-step-into-regexp-subclass.js
@@ -21,8 +21,9 @@ function listener(event, exec_state, event_data, data) {
};
function customSplit() {
- return "x"; // Break 2.
-} // Break 3.
+ return "x" // Break 2.
+ ; // Break 3.
+}
var o = {};
o[Symbol.split] = customSplit;
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepin-default-parameters.js b/deps/v8/test/debugger/debug/es6/debug-stepin-default-parameters.js
index b0683a3e31..9f8eda5a68 100644
--- a/deps/v8/test/debugger/debug/es6/debug-stepin-default-parameters.js
+++ b/deps/v8/test/debugger/debug/es6/debug-stepin-default-parameters.js
@@ -41,5 +41,5 @@ Debug.setListener(null); // c
assertNull(exception);
assertEquals("default", result);
-assertEquals(["a0","b13","f18b13","d2f18b13","e0f18b13","g2b13","h0b13","c0"],
+assertEquals(["a0","b13","f18b13","d2f18b13","d19f18b13","g14b13","c0"],
log);
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepin-microtasks.js b/deps/v8/test/debugger/debug/es6/debug-stepin-microtasks.js
index f4a8c1a459..d3e4e6e458 100644
--- a/deps/v8/test/debugger/debug/es6/debug-stepin-microtasks.js
+++ b/deps/v8/test/debugger/debug/es6/debug-stepin-microtasks.js
@@ -47,21 +47,24 @@ Promise.resolve(42)
function promise1() {
debugger; // Break 0.
- return exception || 1; // Break 1.
-} // Break 2. StepOver.
+ return exception || 1 // Break 1.
+ ; // Break 2. StepOver.
+}
function promise2() {
throw new Error; // Break 3.
}
function promise3() {
- return break_count; // Break 4.
-} // Break 5.
+ return break_count // Break 4.
+ ; // Break 5.
+}
function promise4() {
finalize(); // Break 6. StepOver.
- return 0; // Break 7.
-} // Break 8. StepOut.
+ return 0 // Break 7.
+ ; // Break 8. StepOut.
+}
function finalize() {
Promise.resolve().then(function() {
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepin-proxies.js b/deps/v8/test/debugger/debug/es6/debug-stepin-proxies.js
index c830e775b2..546ee64b0c 100644
--- a/deps/v8/test/debugger/debug/es6/debug-stepin-proxies.js
+++ b/deps/v8/test/debugger/debug/es6/debug-stepin-proxies.js
@@ -53,8 +53,8 @@ assertEquals(42, get);
assertEquals([
"a0",
- "b17", "h4b17", "i2b17", // [[Has]]
- "c15", "j4c15", "k2c15", // [[Get]]
- "d0", "l4d11", "m2d11", // [[Set]]
+ "b10", "h4b17", "h16b17", // [[Has]]
+ "c10", "j4c16", "j14c16", // [[Get]]
+ "d0", "l4d11", "l17d11", // [[Set]]
"g0"
], log);
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepin-string-template.js b/deps/v8/test/debugger/debug/es6/debug-stepin-string-template.js
index d1a2ce7659..178424ad7c 100644
--- a/deps/v8/test/debugger/debug/es6/debug-stepin-string-template.js
+++ b/deps/v8/test/debugger/debug/es6/debug-stepin-string-template.js
@@ -47,14 +47,13 @@ assertNull(exception);
assertEquals([
"a0",
- "b44",
- "b13",
- "d2b13",
- "e0b13",
+ "b8",
+ "d11b13",
+ "d25b13",
"b25",
- "d2b25",
- "e0b25",
+ "d11b25",
+ "d25b25",
"f4b44",
- "g2b44",
+ "f15b44",
"c0"
], log);
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepin-tailcalls.js b/deps/v8/test/debugger/debug/es6/debug-stepin-tailcalls.js
deleted file mode 100644
index 6483d5b722..0000000000
--- a/deps/v8/test/debugger/debug/es6/debug-stepin-tailcalls.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// 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: --harmony-tailcalls
-
-"use strict";
-
-var Debug = debug.Debug
-var exception = null;
-var breaks = 0;
-
-function f(x) {
- if (x > 0) { // B3 B5 B7 B9
- return f(x - 1); // B4 B6 B8
- }
-} // B10
-
-function g(x) {
- return f(x); // B2
-}
-
-function h(x) {
- debugger; // B0
- g(x); // B1
-} // B11
-
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- print(event_data.sourceLineText());
- assertTrue(event_data.sourceLineText().indexOf(`B${breaks++}`) > 0);
- exec_state.prepareStep(Debug.StepAction.StepIn);
- } catch (e) {
- exception = e;
- };
-};
-
-Debug.setListener(listener);
-
-h(3);
-
-Debug.setListener(null); // B12
-assertNull(exception);
-assertEquals(13, breaks);
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepnext-for.js b/deps/v8/test/debugger/debug/es6/debug-stepnext-for.js
index 29712d82bb..878dda940b 100644
--- a/deps/v8/test/debugger/debug/es6/debug-stepnext-for.js
+++ b/deps/v8/test/debugger/debug/es6/debug-stepnext-for.js
@@ -110,11 +110,11 @@ var expected = [
// For-in-let: get enumerable, next, body, next, ...
"g16","g11","G4","g11","G4","g11","G4","g11",
// For-of-var: [Symbol.iterator](), next(), body, next(), body, ...
- "h16","h13","H4","h13","H4","h13","H4","h13",
+ "h16","h11","H4","h11","H4","h11","H4","h11",
// For-of: [Symbol.iterator](), next(), body, next(), body, ...
- "i12","i9","I4","i9","I4","i9","I4","i9",
+ "i12","i7","I4","i7","I4","i7","I4","i7",
// For-of-let: [Symbol.iterator](), next(), body, next(), ...
- "j18","j14","J4","j14","J4","j14","J4","j14",
+ "j18","j11","J4","j11","J4","j11","J4","j11",
// For-var: init, condition, body, next, condition, body, ...
"k15","k20","K4","k26","k20","K4","k26","k20","K4","k26","k20",
// For: init, condition, body, next, condition, body, ...
@@ -122,7 +122,7 @@ var expected = [
// For-let: init, condition, body, next, condition, body, ...
"m15","m20","M4","m26","m20","M4","m26","m20","M4","m26","m20",
// For-of, empty: [Symbol.iterator](), next() once
- "n16", "n13",
+ "n16", "n11",
// Spread: expression statement, spread
"o2", "o9",
// Exit.
diff --git a/deps/v8/test/debugger/debug/es6/debug-stepout-tailcalls.js b/deps/v8/test/debugger/debug/es6/debug-stepout-tailcalls.js
deleted file mode 100644
index 2e94c5058b..0000000000
--- a/deps/v8/test/debugger/debug/es6/debug-stepout-tailcalls.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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: --harmony-tailcalls
-
-"use strict";
-
-var Debug = debug.Debug
-var exception = null;
-var breaks = 0;
-
-function f(x) {
- if (x > 0) {
- return f(x - 1); // Tail call
- }
- debugger; // Break 0
-}
-
-function g(x) {
- return f(x); // Tail call
-}
-
-function h(x) {
- g(x); // Not tail call
-} // Break 1
-
-
-function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- assertTrue(event_data.sourceLineText().indexOf(`Break ${breaks++}`) > 0);
- exec_state.prepareStep(Debug.StepAction.StepOut);
- } catch (e) {
- exception = e;
- };
-};
-
-Debug.setListener(listener);
-
-h(3);
-
-Debug.setListener(null); // Break 2
-assertNull(exception);
-assertEquals(3, breaks);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-abort-at-break.js b/deps/v8/test/debugger/debug/es8/async-debug-step-abort-at-break.js
index 055552bfb9..85232b075b 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-abort-at-break.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-abort-at-break.js
@@ -24,7 +24,7 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B3 StepOut
+ return new Promise( // B2 StepOut
function(res, rej) {
late_resolve = res;
}
@@ -34,8 +34,8 @@ function g() {
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B4 StepNext
+ a +=
+ await // B1 StepIn
g(); // B2 StepIn
return a;
}
@@ -44,10 +44,10 @@ f();
// Starting a new step action at an intermediate break point
// means that we will abort the current async step.
-debugger; // B5 StepNext
+debugger; // B3 StepNext
-late_resolve(3); // B6 Continue
+late_resolve(3); // B4 Continue
%RunMicrotasks();
-assertEquals(7, step_count);
+assertEquals(5, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-continue-at-break.js b/deps/v8/test/debugger/debug/es8/async-debug-step-continue-at-break.js
index 19c4001873..a4726bd7c1 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-continue-at-break.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-continue-at-break.js
@@ -24,7 +24,7 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B3 StepOut
+ return new Promise( // B2 StepOut
function(res, rej) {
late_resolve = res;
}
@@ -34,20 +34,20 @@ function g() {
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B4 StepNext
+ a +=
+ await // B1 StepIn
g(); // B2 StepIn
- return a; // B6 StepNext
-} // B7 Continue
+ return a; // B4 StepNext
+} // B5 Continue
f();
// Continuing at an intermediate break point means that we will
// carry on with the current async step.
-debugger; // B5 Continue
+debugger; // B3 Continue
late_resolve(3);
%RunMicrotasks();
-assertEquals(8, step_count);
+assertEquals(6, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-in-and-out.js b/deps/v8/test/debugger/debug/es8/async-debug-step-in-and-out.js
index d4b16bea11..43fb16fa6f 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-in-and-out.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-in-and-out.js
@@ -24,7 +24,7 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B3 StepOut
+ return new Promise( // B2 StepOut
function(res, rej) {
late_resolve = res;
}
@@ -34,11 +34,11 @@ function g() {
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B4 StepNext
- g(); // B2 StepIn
- return a; // B5 StepNext
-} // B6 Continue
+ a +=
+ await // B1 StepIn
+ g();
+ return a; // B3 StepNext
+} // B4 Continue
f();
@@ -46,4 +46,4 @@ late_resolve(3);
%RunMicrotasks();
-assertEquals(7, step_count);
+assertEquals(5, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-in-out-out.js b/deps/v8/test/debugger/debug/es8/async-debug-step-in-out-out.js
index 3521b42782..c1d8fd71be 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-in-out-out.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-in-out-out.js
@@ -24,7 +24,7 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B3 StepOut
+ return new Promise( // B2 StepOut
function(res, rej) {
late_resolve = res;
}
@@ -34,16 +34,16 @@ function g() {
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B4 StepOut
- g(); // B2 StepIn
- return a;
+ a +=
+ await // B1 StepIn
+ g();
+ return a; // B3 Continue
}
f();
-late_resolve(3); // B5 Continue
+late_resolve(3);
%RunMicrotasks();
-assertEquals(6, step_count);
+assertEquals(4, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-in.js b/deps/v8/test/debugger/debug/es8/async-debug-step-in.js
index 1808b1628a..c32fa2fedc 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-in.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-in.js
@@ -24,21 +24,21 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B3 StepIn
+ return new Promise( // B2 StepIn
function(res, rej) {
- late_resolve = res; // B4 StepIn
- } // B5 StepIn
- );
-} // B6 StepIn
+ late_resolve = res; // B3 StepIn
+ } // B4 StepIn
+ ); // B5 StepIn
+}
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepIn
- await // B7 StepIn
- g(); // B2 StepIn
- return a; // B8 StepIn
-} // B9 Continue
+ a +=
+ await // B1 StepIn
+ g();
+ return a; // B6 StepIn
+} // B7 Continue
f().then(value => assertEquals(4, value));
@@ -46,4 +46,4 @@ late_resolve(3);
%RunMicrotasks();
-assertEquals(10, step_count);
+assertEquals(8, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-nested.js b/deps/v8/test/debugger/debug/es8/async-debug-step-nested.js
index 9a1342419b..79e8dfaaef 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-nested.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-nested.js
@@ -24,7 +24,7 @@ Debug.setListener(listener);
var late_resolve;
function g() {
- return new Promise( // B4 StepOut
+ return new Promise( // B3 StepOut
function(res, rej) {
late_resolve = res;
}
@@ -34,17 +34,17 @@ function g() {
async function f1() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B6 StepNext
+ a +=
+ await // B1 StepIn
f2(); // B2 StepIn
- return a; // B7 StepNext
-} // B8 Continue
+ return a; // B5 StepNext
+} // B6 Continue
async function f2() {
- var b =
- await // B5 StepOut
- g(); // B3 StepIn
- return b;
+ var b = 0 + // B2 StepIn
+ await
+ g();
+ return b; // B4 StepOut
}
f1();
@@ -53,4 +53,4 @@ late_resolve(3);
%RunMicrotasks();
-assertEquals(9, step_count);
+assertEquals(7, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-next-constant.js b/deps/v8/test/debugger/debug/es8/async-debug-step-next-constant.js
index 11fda38f86..32833acc11 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-next-constant.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-next-constant.js
@@ -25,13 +25,13 @@ async function f() {
var a = 1;
debugger; // B0 StepNext
a += // B1 StepNext
- await // B3 StepNext
- 5; // B2 StepNext
- return a; // B4 StepNext
-} // B5 Continue
+ await
+ 5;
+ return a; // B2 StepNext
+} // B3 Continue
f();
%RunMicrotasks();
-assertEquals(6, step_count);
+assertEquals(4, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-debug-step-next.js b/deps/v8/test/debugger/debug/es8/async-debug-step-next.js
index 26be9f349d..597afd3876 100644
--- a/deps/v8/test/debugger/debug/es8/async-debug-step-next.js
+++ b/deps/v8/test/debugger/debug/es8/async-debug-step-next.js
@@ -34,11 +34,11 @@ function g() {
async function f() {
var a = 1;
debugger; // B0 StepNext
- a += // B1 StepNext
- await // B3 StepNext
- g(); // B2 StepNext
- return a; // B4 StepNext
-} // B5 Continue
+ a +=
+ await // B1 StepNext
+ g();
+ return a; // B2 StepNext
+} // B3 Continue
f();
@@ -46,4 +46,4 @@ late_resolve(3);
%RunMicrotasks();
-assertEquals(6, step_count);
+assertEquals(4, step_count);
diff --git a/deps/v8/test/debugger/debug/es8/async-function-debug-evaluate.js b/deps/v8/test/debugger/debug/es8/async-function-debug-evaluate.js
index a635482f51..c1fe532231 100644
--- a/deps/v8/test/debugger/debug/es8/async-function-debug-evaluate.js
+++ b/deps/v8/test/debugger/debug/es8/async-function-debug-evaluate.js
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Flags: --noalways-opt
+
var Debug = debug.Debug;
var breakPointCount = 0;
@@ -12,10 +14,9 @@ function listener(event, exec_state, event_data, data) {
if (breakPointCount === 1) {
assertEquals(
"inner", exec_state.frame(0).evaluate("inner").value());
- assertThrows(() => exec_state.frame(0).evaluate("letInner").value(),
- ReferenceError);
- assertThrows(() => exec_state.frame(0).evaluate("constInner").value(),
- ReferenceError);
+ // Variables in TDZ have 'undefined' as their values.
+ assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value());
+ assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value());
assertEquals("outer", exec_state.frame(0).evaluate("outer").value());
assertEquals(
@@ -29,16 +30,15 @@ function listener(event, exec_state, event_data, data) {
assertEquals(
"let outer", exec_state.frame(1).evaluate("letOuter").value());
- assertThrows(() => exec_state.frame(0).evaluate("withVar").value(),
- ReferenceError);
+ // Variables in TDZ have 'undefined' as their values.
+ assertEquals(undefined, exec_state.frame(0).evaluate("withVar").value());
} else if (breakPointCount === 2) {
assertEquals(
"inner", exec_state.frame(0).evaluate("inner").value());
- assertThrows(() => exec_state.frame(0).evaluate("letInner").value(),
- ReferenceError);
- assertThrows(() => exec_state.frame(0).evaluate("constInner").value(),
- ReferenceError);
+ // Variables in TDZ have 'undefined' as their values.
+ assertEquals(undefined, exec_state.frame(0).evaluate("letInner").value());
+ assertEquals(undefined, exec_state.frame(0).evaluate("constInner").value());
assertEquals(57, exec_state.frame(0).evaluate("x").value());
assertEquals(100, exec_state.frame(0).evaluate("y").value());
@@ -70,8 +70,8 @@ function listener(event, exec_state, event_data, data) {
"Error",
exec_state.frame(0).evaluate("error.constructor.name").value());
assertEquals("floof", exec_state.frame(0).evaluate("bun").value());
- assertThrows(() => exec_state.frame(0).evaluate("cow").value(),
- ReferenceError);
+ // Variables in TDZ have 'undefined' as their values.
+ assertEquals(undefined, exec_state.frame(0).evaluate("cow").value())
assertEquals("outer", exec_state.frame(0).evaluate("outer").value());
assertEquals(
diff --git a/deps/v8/test/debugger/debug/es8/async-function-debug-scopes.js b/deps/v8/test/debugger/debug/es8/async-function-debug-scopes.js
index 6d54aea98b..172ec8fc56 100644
--- a/deps/v8/test/debugger/debug/es8/async-function-debug-scopes.js
+++ b/deps/v8/test/debugger/debug/es8/async-function-debug-scopes.js
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Flags: --noalways-opt
+
var Debug = debug.Debug;
var global_marker = 7;
@@ -400,7 +402,7 @@ await test(
debug.ScopeType.Closure,
debug.ScopeType.Script,
debug.ScopeType.Global], exec_state);
- CheckScopeContent({a:1, x: 2}, 1, exec_state);
+ CheckScopeContent({a:1}, 1, exec_state);
},
result => result());
@@ -418,7 +420,7 @@ await test(
debug.ScopeType.Script,
debug.ScopeType.Global], exec_state);
CheckScopeContent({e: 'Exception'}, 0, exec_state);
- CheckScopeContent({a:1, x: 2}, 2, exec_state);
+ CheckScopeContent({a:1}, 2, exec_state);
},
result => result());
diff --git a/deps/v8/test/debugger/debug/ignition/elided-instruction.js b/deps/v8/test/debugger/debug/ignition/elided-instruction.js
index 53bf624103..4663f36fda 100644
--- a/deps/v8/test/debugger/debug/ignition/elided-instruction.js
+++ b/deps/v8/test/debugger/debug/ignition/elided-instruction.js
@@ -24,13 +24,13 @@ function listener(event, exec_state, event_data, data) {
function f() {
var a = 1; // Break 2. 10.
- return a; // Break 3. 2.
-} // Break 4. 0.
+ return a; // Break 3. 11.
+}
Debug.setListener(listener);
debugger; // Break 0. 0.
f(); // Break 1. 0.
-Debug.setListener(null); // Break 5. 0.
+Debug.setListener(null); // Break 4. 0.
assertNull(exception);
-assertEquals(6, break_count);
+assertEquals(5, break_count);
diff --git a/deps/v8/test/debugger/debug/regress-3225.js b/deps/v8/test/debugger/debug/regress-3225.js
index ed17f0ee10..454ff6e7a4 100644
--- a/deps/v8/test/debugger/debug/regress-3225.js
+++ b/deps/v8/test/debugger/debug/regress-3225.js
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Flags: --noalways-opt
Debug = debug.Debug
diff --git a/deps/v8/test/debugger/debug/regress/regress-crbug-424142.js b/deps/v8/test/debugger/debug/regress/regress-crbug-424142.js
index 261aa7de3c..bda061c79e 100644
--- a/deps/v8/test/debugger/debug/regress/regress-crbug-424142.js
+++ b/deps/v8/test/debugger/debug/regress/regress-crbug-424142.js
@@ -25,7 +25,7 @@ Debug = debug.Debug;
Debug.setListener(function(){});
var script = Debug.findScript(sentinel);
-var line = 14;
+var line = 13;
var line_start = Debug.findScriptSourcePosition(script, line, 0);
var line_end = Debug.findScriptSourcePosition(script, line + 1, 0) - 1;
var actual = Debug.setBreakPointByScriptIdAndPosition(
diff --git a/deps/v8/test/debugger/debug/regress/regress-crbug-467180.js b/deps/v8/test/debugger/debug/regress/regress-crbug-467180.js
index c2333fca93..71e38c3594 100644
--- a/deps/v8/test/debugger/debug/regress/regress-crbug-467180.js
+++ b/deps/v8/test/debugger/debug/regress/regress-crbug-467180.js
@@ -5,7 +5,7 @@
function f() {
for (var i = 10; i < 14; i++) { // 1
- i; // 2
+ i *= 1; // 2
}
} // 3
diff --git a/deps/v8/test/debugger/debugger.status b/deps/v8/test/debugger/debugger.status
index d76bd5017d..f04fe0439e 100644
--- a/deps/v8/test/debugger/debugger.status
+++ b/deps/v8/test/debugger/debugger.status
@@ -24,21 +24,24 @@
# Slow tests
'debug/debug-scopes': [PASS, SLOW],
'debug/debug-stepout-scope-part*': [PASS, SLOW],
- 'debug/ignition/debug-step-prefix-bytecodes': [PASS, SLOW],
+ 'debug/ignition/debug-step-prefix-bytecodes': [PASS, SLOW, ['mode == debug', SKIP]],
# Too slow in debug mode and on slow platforms.
'regress/regress-2318': [PASS, SLOW, ['mode == debug or (arch != ia32 and arch != x64) or asan == True or msan == True', SKIP]],
+
+ # forcing weak callback in asan build change break order
+ 'debug/debug-stepin-builtin-callback': [['asan == True or msan == True', SKIP]],
}], # ALWAYS
##############################################################################
-['variant == stress or variant == noturbofan_stress', {
+['variant == stress', {
# TODO(jarin/mstarzinger): Functions with eval or debugger now get optimized
# with Turbofan, which has issues with the debugger issues.
'debug/debug-evaluate-locals': [FAIL],
# Very slow in stress mode.
'regress/regress-2318': [SKIP],
-}], # variant == stress or variant == noturbofan_stress
+}], # variant == stress
##############################################################################
['gc_stress == True', {
@@ -63,12 +66,6 @@
}], # 'gc_stress == True'
##############################################################################
-['variant == turbofan_opt', {
- # TODO(jarin/mstarzinger): Investigate debugger issues with TurboFan.
- 'debug/debug-evaluate-locals': [FAIL],
-}], # variant == turbofan_opt
-
-##############################################################################
['variant == wasm_traps', {
'*': [SKIP],
}], # variant == wasm_traps
@@ -80,12 +77,6 @@
}], # 'arch == arm and not simulator_run'
##############################################################################
-['variant in [noturbofan, noturbofan_stress] and system == macos and asan', {
- # Too slow for old pipeline and mac asan.
- 'debug/*': [SKIP],
-}], # variant in [noturbofan, noturbofan_stress] and system == macos and asan
-
-##############################################################################
['arch == s390 or arch == s390x', {
# Stack manipulations in LiveEdit is not implemented for this arch.
@@ -94,4 +85,25 @@
'debug/debug-liveedit-stack-padding': [SKIP],
'debug/debug-liveedit-restart-frame': [SKIP],
}], # 'arch == s390 or arch == s390x'
+
+##############################################################################
+['variant == fullcode', {
+ # fullcode doesn't generate precise return positions
+ 'debug/debug-multiple-var-decl': [SKIP],
+ 'debug/debug-step-into-valueof': [SKIP],
+ 'regress/regress-5901-2': [SKIP],
+ 'debug/debug-step-into-json': [SKIP],
+ 'debug/es6/debug-step-destructuring-assignment': [SKIP],
+ 'debug/es6/debug-step-into-regexp-subclass': [SKIP],
+ 'debug/es8/async-debug-step-in': [SKIP],
+ 'debug/debug-stepin-builtin-callback-opt': [SKIP],
+ 'debug/debug-stepin-foreach': [SKIP],
+ 'debug/es6/debug-stepin-default-parameters': [SKIP],
+ 'debug/es6/debug-stepin-proxies': [SKIP],
+ 'debug/es6/debug-promises/stepin-handler': [SKIP],
+ 'debug/debug-liveedit-stepin': [SKIP],
+ 'debug/es6/debug-stepin-microtasks': [SKIP],
+ 'debug/ignition/elided-instruction': [SKIP],
+ 'debug/es6/debug-stepin-string-template': [SKIP],
+}], # variant == fullcode
]
diff --git a/deps/v8/test/debugger/regress/regress-5610.js b/deps/v8/test/debugger/regress/regress-5610.js
index e2091524df..7736c040a2 100644
--- a/deps/v8/test/debugger/regress/regress-5610.js
+++ b/deps/v8/test/debugger/regress/regress-5610.js
@@ -2,8 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --turbo
-
var Debug = debug.Debug;
var step_count = 0;
diff --git a/deps/v8/test/debugger/regress/regress-5901-1.js b/deps/v8/test/debugger/regress/regress-5901-1.js
index 49becc9294..2309512904 100644
--- a/deps/v8/test/debugger/regress/regress-5901-1.js
+++ b/deps/v8/test/debugger/regress/regress-5901-1.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --ignition --turbo
+// Flags: --no-stress-fullcodegen
function f() {
throw new Error();
@@ -44,7 +44,7 @@ function listener(event, exec_state, event_data, data) {
Debug.setListener(listener);
Debug.setBreakOnException();
-% OptimizeFunctionOnNextCall(h);
+%OptimizeFunctionOnNextCall(h);
h();
Debug.setListener(null);
assertNull(exception);
diff --git a/deps/v8/test/debugger/regress/regress-5901-2.js b/deps/v8/test/debugger/regress/regress-5901-2.js
index becad1bb07..cf6f0efd60 100644
--- a/deps/v8/test/debugger/regress/regress-5901-2.js
+++ b/deps/v8/test/debugger/regress/regress-5901-2.js
@@ -8,8 +8,8 @@ function f() {
}
function g() {
- return f();
-} // Break
+ return f(); // Break
+}
function h() {
return g();
@@ -38,7 +38,7 @@ function listener(event, exec_state, event_data, data) {
}
Debug.setListener(listener);
-% OptimizeFunctionOnNextCall(h);
+%OptimizeFunctionOnNextCall(h);
h();
Debug.setListener(null);
assertNull(exception);
diff --git a/deps/v8/test/debugger/regress/regress-6526.js b/deps/v8/test/debugger/regress/regress-6526.js
new file mode 100644
index 0000000000..90df244b3c
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-6526.js
@@ -0,0 +1,25 @@
+// 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: --enable-inspector --allow-natives-syntax
+
+const Debug = debug.Debug;
+Debug.setListener(() => {});
+
+var a = [0,1,2,3,4,5,6,7,8,9];
+
+var f = function() {
+ a.forEach(function(v) {
+ try {
+ throw new Error();
+ } catch (e) {
+ }
+ });
+}
+
+f();
+f();
+%OptimizeFunctionOnNextCall(f);
+f();
+f();
diff --git a/deps/v8/test/debugger/regress/regress-crbug-724858.js b/deps/v8/test/debugger/regress/regress-crbug-724858.js
new file mode 100644
index 0000000000..d2d8883c97
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-crbug-724858.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.
+
+const Debug = debug.Debug;
+let exception = null;
+let step_count = 0;
+
+Debug.setListener((event, execState, eventData, data) => {
+ if (event != Debug.DebugEvent.Break) return;
+ try {
+ const line = execState.frame(0).sourceLineText();
+ print(line);
+
+ const [match, expected_count, step] = /\/\/ B(\d) (\w+)$/.exec(line);
+ assertEquals(step_count++, parseInt(expected_count));
+
+ if (step != "Continue") execState.prepareStep(Debug.StepAction[step]);
+ } catch (e) {
+ print(e, e.stack);
+ exception = e;
+ }
+});
+
+function f(x) {
+ debugger; // B0 StepNext
+ with ({}) { // B1 StepNext
+ return x // B2 StepNext
+ ; // B3 Continue
+ }
+}
+
+f(42);
+
+assertNull(exception);
+assertEquals(4, step_count);
diff --git a/deps/v8/test/debugger/regress/regress-crbug-736758.js b/deps/v8/test/debugger/regress/regress-crbug-736758.js
new file mode 100644
index 0000000000..d483af25b2
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-crbug-736758.js
@@ -0,0 +1,15 @@
+// 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.
+
+var Debug = debug.Debug;
+
+function listener() {}
+function f() { [1,2,3].forEach(g) }
+function g() { debugger }
+
+f();
+f();
+Debug.setListener(listener);
+%OptimizeFunctionOnNextCall(f)
+f();
diff --git a/deps/v8/test/debugger/test-api.js b/deps/v8/test/debugger/test-api.js
index c4533dee85..0e9670b277 100644
--- a/deps/v8/test/debugger/test-api.js
+++ b/deps/v8/test/debugger/test-api.js
@@ -67,13 +67,6 @@ class DebugWrapper {
this.ExceptionBreak = { Caught : 0,
Uncaught: 1 };
- // The different types of breakpoint position alignments.
- // Must match BreakPositionAlignment in debug.h.
- this.BreakPositionAlignment = {
- Statement: 0,
- BreakPosition: 1
- };
-
// The different script break point types.
this.ScriptBreakPointType = { ScriptId: 0,
ScriptName: 1,
@@ -180,14 +173,12 @@ class DebugWrapper {
this.breakpoints.clear();
}
- showBreakPoints(f, opt_position_alignment) {
+ showBreakPoints(f) {
if (!%IsFunction(f)) throw new Error("Not passed a Function");
const source = %FunctionGetSourceCode(f);
const offset = %FunctionGetScriptSourcePosition(f);
- const position_alignment = opt_position_alignment === undefined
- ? this.BreakPositionAlignment.Statement : opt_position_alignment;
- const locations = %GetBreakLocations(f, position_alignment);
+ const locations = %GetBreakLocations(f);
if (!locations) return source;