diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-12-04 08:20:37 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-12-06 15:23:33 +0100 |
commit | 9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3 (patch) | |
tree | 2b0c843168dafb939d8df8a15b2aa72b76dee51d /deps/v8/test/debugger | |
parent | b8fbe69db1292307adb2c2b2e0d5ef48c4ab2faf (diff) | |
download | android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.gz android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.tar.bz2 android-node-v8-9b4bf7de6c9a7c25f116c7a502384c20b5cfaea3.zip |
deps: update V8 to 7.1.302.28
PR-URL: https://github.com/nodejs/node/pull/23423
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/test/debugger')
-rw-r--r-- | deps/v8/test/debugger/debug/debug-bigint.js | 2 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/debug-break-class-fields.js | 139 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/debug-liveedit-recursion.js (renamed from deps/v8/test/debugger/debug/debug-live-edit-recursion.js) | 0 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/es6/generators-debug-scopes.js | 3 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js | 2 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js | 3 | ||||
-rw-r--r-- | deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js | 22 | ||||
-rw-r--r-- | deps/v8/test/debugger/debugger.status | 19 | ||||
-rw-r--r-- | deps/v8/test/debugger/testcfg.py | 2 |
9 files changed, 183 insertions, 9 deletions
diff --git a/deps/v8/test/debugger/debug/debug-bigint.js b/deps/v8/test/debugger/debug/debug-bigint.js index 2abdc928d9..0ed09b04e8 100644 --- a/deps/v8/test/debugger/debug/debug-bigint.js +++ b/deps/v8/test/debugger/debug/debug-bigint.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: --harmony-bigint - Debug = debug.Debug let exceptionThrown = false; diff --git a/deps/v8/test/debugger/debug/debug-break-class-fields.js b/deps/v8/test/debugger/debug/debug-break-class-fields.js new file mode 100644 index 0000000000..b6b9c93235 --- /dev/null +++ b/deps/v8/test/debugger/debug/debug-break-class-fields.js @@ -0,0 +1,139 @@ +// Copyright 2018 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-public-fields --harmony-static-fields --allow-natives-syntax + +Debug = debug.Debug + +Debug.setListener(function() {}); + +class Y { + x = 1; + y = 2; + z = 3; +} + +var initializer = %GetInitializerFunction(Y); +var b1, b2, b3; + +// class Y { +// x = [B0]1; +// y = [B1]2; +// z = [B2]3; +// } +b1 = Debug.setBreakPoint(initializer, 0, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === -1); + +b2 = Debug.setBreakPoint(initializer, 1, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B0]2;") > 0); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B0]2;") === -1); + +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B0]3") > 0); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B0]3") === -1); + +b1 = Debug.setBreakPoint(initializer, 0, 0); +b2 = Debug.setBreakPoint(initializer, 1, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B1]2;") > 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === -1); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B1]2;") === -1); + +b1 = Debug.setBreakPoint(initializer, 0, 0); +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B1]3") > 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("x = [B0]1;") === -1); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B1]3") === -1); + +b2 = Debug.setBreakPoint(initializer, 1, 0); +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B0]2;") > 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B1]3") > 0); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("y = [B0]2;") === -1); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("z = [B1]3") === -1); + +function foo() {} +var bar = "bar"; + +class X { + [foo()] = 1; + [bar] = 2; + baz = foo(); +} + +// The computed properties are evaluated during class construction, +// not as part of the initializer function. As a consequence of which, +// they aren't breakable here in the initializer function, but +// instead, are part of the enclosing function. +// +// class X { +// [foo()] = [B0]1; +// [bar] = [B1]2; +// [baz] = [B2]foo(); +// } + +initializer = %GetInitializerFunction(X); +b1 = Debug.setBreakPoint(initializer, 0, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === -1); + +b2 = Debug.setBreakPoint(initializer, 1, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B0]2;") > 0); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B0]2;") === -1); + +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B0]foo()") > 0); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B0]foo()") === -1); + +b1 = Debug.setBreakPoint(initializer, 0, 0); +b2 = Debug.setBreakPoint(initializer, 1, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B1]2;") > 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === -1); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B1]2;") === -1); + +b1 = Debug.setBreakPoint(initializer, 0, 0); +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B1]foo()") > 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[foo()] = [B0]1;") === -1); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B1]foo()") === -1); + +b2 = Debug.setBreakPoint(initializer, 1, 0); +b3 = Debug.setBreakPoint(initializer, 2, 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B0]2;") > 0); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B1]foo()") > 0); +Debug.clearBreakPoint(b2); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[bar] = [B0]2;") === -1); +Debug.clearBreakPoint(b3); +assertTrue(Debug.showBreakPoints(initializer).indexOf("baz = [B1]foo()") === -1); + +function t() { + class X { + [foo()] = 1; + } +} + +b1 = Debug.setBreakPoint(t, 0, 0); +assertTrue(Debug.showBreakPoints(t).indexOf("[[B0]foo()] = 1;")> 0); +Debug.clearBreakPoint(b1); +assertTrue(Debug.showBreakPoints(initializer).indexOf("[[B0]foo()] = 1;") === -1); diff --git a/deps/v8/test/debugger/debug/debug-live-edit-recursion.js b/deps/v8/test/debugger/debug/debug-liveedit-recursion.js index 6328a9b6de..6328a9b6de 100644 --- a/deps/v8/test/debugger/debug/debug-live-edit-recursion.js +++ b/deps/v8/test/debugger/debug/debug-liveedit-recursion.js diff --git a/deps/v8/test/debugger/debug/es6/generators-debug-scopes.js b/deps/v8/test/debugger/debug/es6/generators-debug-scopes.js index a46dc8b22e..14752afc15 100644 --- a/deps/v8/test/debugger/debug/es6/generators-debug-scopes.js +++ b/deps/v8/test/debugger/debug/es6/generators-debug-scopes.js @@ -42,8 +42,7 @@ function RunTest(name, formals_and_body, args, handler, continuation) { run(function () { return fun.apply(null, args) }); run(function () { return gen.apply(null, args).next().value }); - // TODO(wingo): Uncomment after bug 2838 is fixed. - // Debug.setListener(null); + Debug.setListener(null); } // Check that two scope are the same. diff --git a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js index 9a108be4a4..938461690e 100644 --- a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js +++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.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: --no-enable-one-shot-optimization + Debug = debug.Debug var exception = null; diff --git a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js index 7450cb2206..7a0f373be7 100644 --- a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js +++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-runtime-check.js @@ -50,8 +50,7 @@ success([1], `return_array_use_spread([1])`); // CallAccessorSetter var array = [1,2,3]; fail(`array.length = 2`); -// TODO(7515): this one should be side effect free -fail(`[1,2,3].length = 2`); +success(2, `[1,2,3].length = 2`); // StaDataPropertyInLiteral function return_literal_with_data_property(a) { diff --git a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js index fa14b4b862..5504cef16d 100644 --- a/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js +++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js @@ -9,6 +9,7 @@ let a = 1; var object = { property : 2, get getter() { return 3; } }; +var string0 = new String("string"); var string1 = { toString() { return "x"; } }; var string2 = { toString() { print("x"); return "x"; } }; var array = [4, 5]; @@ -19,6 +20,9 @@ function set_a() { a = 2; } function get_a() { return a; } var bound = get_a.bind(0); +function return_arg0() { return return_arg0.arguments[0]; } +function return_caller_name() { return return_caller_name.caller.name; } + var global_eval = eval; function listener(event, exec_state, event_data, data) { @@ -32,6 +36,7 @@ function listener(event, exec_state, event_data, data) { assertThrows(() => exec_state.frame(0).evaluate(source, true), EvalError); } + // Simple test. success(3, "1 + 2"); // Dymanic load. @@ -62,8 +67,9 @@ function listener(event, exec_state, event_data, data) { success("set_a", "set_a.name"); success(0, "bound.length"); success("bound get_a", "bound.name"); + success(1, "return_arg0(1)"); + success("f", "(function f() { return return_caller_name() })()"); // Non-evaluated call. - success("abc", "['abc'].join('foo')"); // Constructed literals. success([1], "[1]"); success({x: 1}, "({x: 1})"); @@ -82,13 +88,25 @@ function listener(event, exec_state, event_data, data) { fail("try { set_a() } catch (e) {}"); // Test that call to set accessor fails. fail("array.length = 4"); - fail("'x'.length = 1"); fail("set_a.name = 'set_b'"); fail("set_a.length = 1"); fail("bound.name = 'bound'"); fail("bound.length = 1"); + fail("set_a.prototype = null"); // Test that call to non-whitelisted get accessor fails. fail("error.stack"); + // Call to set accessors with receiver check. + success(1, "[].length = 1"); + success(1, "'x'.length = 1"); + fail("string0.length = 1"); + success(1, "(new String('abc')).length = 1"); + success("g", "(function(){}).name = 'g'"); + success(1, "(function(){}).length = 1"); + success("g", "get_a.bind(0).name = 'g'"); + success(1, "get_a.bind(0).length = 1"); + success(null, "(function(){}).prototype = null"); + success(true, "(new Error()).stack.length > 1"); + success("a", "(new Error()).stack = 'a'"); // Eval is not allowed. fail("eval('Math.sin(1)')"); fail("eval('exception = 1')"); diff --git a/deps/v8/test/debugger/debugger.status b/deps/v8/test/debugger/debugger.status index 8500344fb5..e85f1bef03 100644 --- a/deps/v8/test/debugger/debugger.status +++ b/deps/v8/test/debugger/debugger.status @@ -70,9 +70,28 @@ 'debug/es8/async-debug-caught-exception-cases2': [SKIP], 'debug/es8/async-debug-caught-exception-cases3': [SKIP], 'debug/es8/async-function-debug-scopes': [SKIP], + + # https://crbug.com/v8/8141 + 'debug/debug-liveedit-1': [SKIP], + 'debug/debug-liveedit-double-call': [SKIP], + 'debug/es6/debug-liveedit-new-target-3': [SKIP], + 'debug/side-effect/debug-evaluate-no-side-effect-control': [SKIP], }], # 'gc_stress == True' ############################################################################## +['gc_fuzzer', { + # Slow tests. + 'regress/regress-2318': [SKIP], +}], # 'gc_fuzzer' + +############################################################################## +['predictable == True', { + # https://crbug.com/v8/8147 + 'debug/debug-liveedit-*': [SKIP], + 'debug/debug-set-variable-value': [SKIP], +}], # 'predictable == True' + +############################################################################## ['variant == no_wasm_traps', { '*': [SKIP], }], # variant == no_wasm_traps diff --git a/deps/v8/test/debugger/testcfg.py b/deps/v8/test/debugger/testcfg.py index da923ff63b..61893e9bbd 100644 --- a/deps/v8/test/debugger/testcfg.py +++ b/deps/v8/test/debugger/testcfg.py @@ -32,7 +32,7 @@ class TestSuite(testsuite.TestSuite): return TestCase -class TestCase(testcase.TestCase): +class TestCase(testcase.D8TestCase): def __init__(self, *args, **kwargs): super(TestCase, self).__init__(*args, **kwargs) |