aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/test/debugger
diff options
context:
space:
mode:
authorMyles Borins <mylesborins@google.com>2018-04-10 21:39:51 -0400
committerMyles Borins <mylesborins@google.com>2018-04-11 13:22:42 -0400
commit12a1b9b8049462e47181a298120243dc83e81c55 (patch)
tree8605276308c8b4e3597516961266bae1af57557a /deps/v8/test/debugger
parent78cd8263354705b767ef8c6a651740efe4931ba0 (diff)
downloadandroid-node-v8-12a1b9b8049462e47181a298120243dc83e81c55.tar.gz
android-node-v8-12a1b9b8049462e47181a298120243dc83e81c55.tar.bz2
android-node-v8-12a1b9b8049462e47181a298120243dc83e81c55.zip
deps: update V8 to 6.6.346.23
PR-URL: https://github.com/nodejs/node/pull/19201 Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/test/debugger')
-rw-r--r--deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js2
-rw-r--r--deps/v8/test/debugger/debug/debug-setbreakpoint.js3
-rw-r--r--deps/v8/test/debugger/debug/deserialize-script-id.js17
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-promises/proxy-as-promise.js42
-rw-r--r--deps/v8/test/debugger/debug/es6/debug-promises/throw-with-throw-in-reject.js27
-rw-r--r--deps/v8/test/debugger/debug/regress/regress-3960.js35
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-async.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js)11
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins-2.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js)42
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js)65
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-control.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js)0
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-iife.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js)0
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-ops.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js)0
-rw-r--r--deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js (renamed from deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js)10
-rw-r--r--deps/v8/test/debugger/debugger.gyp26
-rw-r--r--deps/v8/test/debugger/regress/regress-7421.js78
-rw-r--r--deps/v8/test/debugger/regress/regress-crbug-507070.js20
-rw-r--r--deps/v8/test/debugger/regress/regress-crbug-808973.js18
-rw-r--r--deps/v8/test/debugger/test-api.js12
-rw-r--r--deps/v8/test/debugger/testcfg.py12
19 files changed, 314 insertions, 106 deletions
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 2d9d253386..8d09e9c2a3 100644
--- a/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.js
+++ b/deps/v8/test/debugger/debug/debug-scopes-suspended-generators.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-analyze-environment-liveness
+
// The functions used for testing backtraces. They are at the top to make the
// testing of source line/column easier.
diff --git a/deps/v8/test/debugger/debug/debug-setbreakpoint.js b/deps/v8/test/debugger/debug/debug-setbreakpoint.js
index bfcab7c6fd..28a12f78cc 100644
--- a/deps/v8/test/debugger/debug/debug-setbreakpoint.js
+++ b/deps/v8/test/debugger/debug/debug-setbreakpoint.js
@@ -129,8 +129,7 @@ assertTrue(breakListenerCalled, "Break listener not called on breakpoint set by
function SetBreakpointInI1Script() {
var i_script = Debug.findScript(i1);
assertTrue(!!i_script, "invalid script for i1");
- Debug.setScriptBreakPoint(Debug.ScriptBreakPointType.ScriptId,
- i_script.id, 4);
+ Debug.setScriptBreakPointById(i_script.id, 4);
}
// Creates the eval script and tries to set the breakpoint.
diff --git a/deps/v8/test/debugger/debug/deserialize-script-id.js b/deps/v8/test/debugger/debug/deserialize-script-id.js
new file mode 100644
index 0000000000..25b8c84749
--- /dev/null
+++ b/deps/v8/test/debugger/debug/deserialize-script-id.js
@@ -0,0 +1,17 @@
+// Copyright 2015 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 --cache=code
+// Test that script ids are unique and we found the correct ones.
+
+var Debug = debug.Debug;
+Debug.setListener(function(){});
+
+var scripts = %DebugGetLoadedScripts();
+scripts.sort(function(a, b) { return a.id - b.id; });
+scripts.reduce(function(prev, cur) {
+ assertTrue(prev === undefined || prev.id != cur.id);
+});
+
+Debug.setListener(null);
diff --git a/deps/v8/test/debugger/debug/es6/debug-promises/proxy-as-promise.js b/deps/v8/test/debugger/debug/es6/debug-promises/proxy-as-promise.js
new file mode 100644
index 0000000000..3bd1fead08
--- /dev/null
+++ b/deps/v8/test/debugger/debug/es6/debug-promises/proxy-as-promise.js
@@ -0,0 +1,42 @@
+// 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.
+
+
+// Test debug events when we listen to all exceptions and
+// there is a catch handler for the exception thrown in a Promise.
+// We expect a normal Exception debug event to be triggered.
+
+Debug = debug.Debug;
+
+var expected_events = 1;
+var log = [];
+
+
+class P extends Promise {
+ constructor(...args) {
+ super(...args);
+ return new Proxy(this, {
+ get(target, property, receiver) {
+ if (property in target) {
+ return Reflect.get(target, property, receiver);
+ } else {
+ return (...args) =>
+ new Promise((resolve, reject) =>
+ target.then(v => resolve(v[property](...args)))
+ .catch(reject)
+ );
+ }
+ }
+ });
+ }
+}
+
+P.resolve({doStuff(){log.push(1)}}).doStuff()
+
+function listener(event, exec_state, event_data, data) {}
+
+Debug.setBreakOnUncaughtException();
+Debug.setListener(listener);
+
+%RunMicrotasks();
diff --git a/deps/v8/test/debugger/debug/es6/debug-promises/throw-with-throw-in-reject.js b/deps/v8/test/debugger/debug/es6/debug-promises/throw-with-throw-in-reject.js
index b17054b06d..5cca2f93f0 100644
--- a/deps/v8/test/debugger/debug/es6/debug-promises/throw-with-throw-in-reject.js
+++ b/deps/v8/test/debugger/debug/es6/debug-promises/throw-with-throw-in-reject.js
@@ -3,15 +3,13 @@
// found in the LICENSE file.
-// Test debug events when an exception is thrown inside a Promise, which is
-// caught by a custom promise, which throws a new exception in its reject
-// handler. We expect two Exception debug events:
-// 1) when the exception is thrown in the promise q.
-// 2) when the custom reject closure in MyPromise throws an exception.
+// Test debug events when an exception is thrown inside a Promise,
+// which is caught by a custom promise, which throws a new exception
+// in its reject handler. We expect no Exception debug events.
Debug = debug.Debug;
-var expected_events = 1;
+var expected_events = 0;
var log = [];
var p = new Promise(function(resolve, reject) {
@@ -21,11 +19,9 @@ var p = new Promise(function(resolve, reject) {
function MyPromise(resolver) {
var reject = function() {
- log.push("throw in reject");
throw new Error("reject"); // event
};
var resolve = function() { };
- log.push("construct");
resolver(resolve, reject);
};
@@ -42,16 +38,7 @@ var q = p.then(
function listener(event, exec_state, event_data, data) {
try {
if (event == Debug.DebugEvent.Exception) {
- expected_events--;
- assertTrue(expected_events >= 0);
- if (expected_events == 0) {
- assertEquals(["resolve", "construct", "end main",
- "throw caught"], log);
- assertEquals("caught", event_data.exception().message);
- } else {
- assertUnreachable();
- }
- assertTrue(exec_state.frame(0).sourceLineText().indexOf('// event') > 0);
+ assertUnreachable();
}
} catch (e) {
%AbortJS(e + "\n" + e.stack);
@@ -68,8 +55,8 @@ function testDone(iteration) {
try {
assertTrue(iteration < 10);
if (expected_events === 0) {
- assertEquals(["resolve", "construct", "end main",
- "throw caught", "throw in reject"], log);
+ assertEquals(["resolve", "end main",
+ "throw caught"], log);
} else {
testDone(iteration + 1);
}
diff --git a/deps/v8/test/debugger/debug/regress/regress-3960.js b/deps/v8/test/debugger/debug/regress/regress-3960.js
deleted file mode 100644
index 6580d4b805..0000000000
--- a/deps/v8/test/debugger/debug/regress/regress-3960.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2015 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.
-
-
-// Test that setting break point works correctly when the debugger is
-// activated late, which leads to duplicate shared function infos.
-
-(function() {
- var Debug = %GetDebugContext().Debug;
-
- function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.Break) return;
- try {
- assertTrue(/foo/.test(exec_state.frame(0).sourceLineText()));
- break_count++;
- } catch (e) {
- exception = e;
- }
- }
-
- for (var i = 0; i < 3; i++) {
- var foo = function() { a = 1; }
- var exception = null;
- var break_count = 0;
- Debug.setListener(listener);
- if (i < 2) Debug.setBreakPoint(foo, 0, 0);
- assertTrue(/\[B\d\]a = 1/.test(Debug.showBreakPoints(foo)));
- foo();
- assertEquals(1, break_count);
- assertNull(exception);
- }
-
- Debug.setListener(null);
-})();
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-async.js
index c5c8eeb9c6..c7f55c148c 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-async.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-async.js
@@ -19,6 +19,8 @@ async function async() {
var g = generator();
+var p = new Promise(() => {});
+
function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.Break) return;
try {
@@ -30,6 +32,15 @@ function listener(event, exec_state, event_data, data) {
fail("generator()");
fail("g.next()");
fail("async()");
+ fail("Promise.resolve()");
+ fail("Promise.reject()");
+ fail("p.then(() => {})");
+ fail("p.catch(() => {})");
+ fail("p.finally(() => {})");
+ fail("Promise.all([p, p])");
+ fail("Promise.race([p, p])");
+ fail("(async function() {})()");
+ fail("(async function() { await 1; })()");
} catch (e) {
exception = e;
print(e, e.stack);
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins-2.js
index 1b357ef6bb..b965c95249 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins-2.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins-2.js
@@ -7,6 +7,10 @@ Debug = debug.Debug
var exception = null;
var date = new Date();
var map = new Map().set("a", "b").set("c", "d");
+var set = new Set([1, 2]);
+var weak_key = [];
+var weak_map = new WeakMap().set(weak_key, "a").set({}, "b");
+var weak_set = new WeakSet([weak_key, {}]);
function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.Break) return;
@@ -64,12 +68,46 @@ function listener(event, exec_state, event_data, data) {
success(undefined, `map.entries()`);
success(undefined, `map.keys()`);
success(undefined, `map.values()`);
+ success(undefined, `map.forEach(()=>1)`);
+ success(true, `map.has("c")`);
success(2, `map.size`);
- fail(`map.has("c")`); // This sets a hash on the object.
- fail(`map.forEach(()=>1)`);
+ fail(`new Map([[1, 2]])`);
fail(`map.delete("a")`);
fail(`map.clear()`);
fail(`map.set("x", "y")`);
+
+ // Test Set functions.
+ success(undefined, `new Set()`);
+ success("[object Set]", `set.toString()`);
+ success(undefined, `set.entries()`);
+ success(undefined, `set.keys()`);
+ success(undefined, `set.values()`);
+ success(undefined, `set.forEach(()=>1)`);
+ success(true, `set.has(1)`);
+ success(2, `set.size`);
+ fail(`new Set([1])`);
+ fail(`set.add(2)`);
+ fail(`set.delete(1)`);
+ fail(`set.clear()`);
+
+ // Test WeakMap functions.
+ success(undefined, `new WeakMap()`);
+ success("[object WeakMap]", `weak_map.toString()`);
+ success("a", `weak_map.get(weak_key)`);
+ success(true, `weak_map.get([]) === undefined`);
+ success(true, `weak_map.has(weak_key)`);
+ fail(`new WeakMap([[[], {}]])`);
+ fail(`weak_map.delete("a")`);
+ fail(`weak_map.set("x", "y")`);
+
+ // Test WeakSet functions.
+ success(undefined, `new WeakSet()`);
+ success("[object WeakSet]", `weak_set.toString()`);
+ success(true, `weak_set.has(weak_key)`);
+ fail(`new WeakSet([[], {}])`);
+ fail(`weak_set.add([])`);
+ fail(`weak_set.delete("a")`);
+
} catch (e) {
exception = e;
print(e, e.stack);
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js
index 73edb03a60..a3240ef4f3 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-builtins.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-builtins.js
@@ -8,6 +8,9 @@ var exception = null;
var object_with_symbol_key = {[Symbol("a")]: 1};
var object_with_callbacks = { toString: () => "string", valueOf: () => 3};
var symbol_for_a = Symbol.for("a");
+var typed_array = new Uint8Array([1, 2, 3]);
+var array_buffer = new ArrayBuffer(3);
+var data_view = new DataView(new ArrayBuffer(8), 0, 8);
function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.Break) return;
@@ -57,14 +60,18 @@ function listener(event, exec_state, event_data, data) {
success(3, `(object_with_callbacks).valueOf()`);
// Test Array functions.
+ success(true, `Array.isArray([1, 2, 3])`);
success([], `new Array()`);
+ success([undefined, undefined], `new Array(2)`);
+ success([1, 2], `new Array(1, 2)`);
+ fail(`Array.from([1, 2, 3])`);
+ fail(`Array.of(1, 2, 3)`);
var function_param = [
"forEach", "every", "some", "reduce", "reduceRight", "find", "filter",
"map", "findIndex"
];
- var fails = ["toString", "join", "toLocaleString", "pop", "push",
- "reverse", "shift", "unshift", "slice", "splice", "sort", "filter",
- "map", "copyWithin", "fill", "concat"];
+ var fails = ["toString", "join", "toLocaleString", "pop", "push", "reverse",
+ "shift", "unshift", "splice", "sort", "copyWithin", "fill"];
for (f of Object.getOwnPropertyNames(Array.prototype)) {
if (typeof Array.prototype[f] === "function") {
if (fails.includes(f)) {
@@ -81,6 +88,52 @@ function listener(event, exec_state, event_data, data) {
}
}
+ // Test ArrayBuffer functions.
+ success(3, `array_buffer.byteLength`);
+ success(2, `array_buffer.slice(1, 3).byteLength`);
+ success(true, `ArrayBuffer.isView(typed_array)`);
+
+ // Test DataView functions.
+ success(undefined, `new DataView(array_buffer, 1, 2)`);
+ success(undefined, `data_view.buffer`);
+ success(undefined, `data_view.byteLength`);
+ success(undefined, `data_view.byteOffset`);
+ for (f of Object.getOwnPropertyNames(DataView.prototype)) {
+ if (typeof data_view[f] === 'function' && f.startsWith('get'))
+ success(0, `data_view.${f}()`);
+ }
+
+ // Test TypedArray functions.
+ success({}, `new Uint8Array()`);
+ success({0: 0, 1: 0}, `new Uint8Array(2)`);
+ success({0: 1, 1: 2, 2: 3}, `new Uint8Array(typed_array)`);
+ success(true, `!!typed_array.buffer`);
+ success(0, `typed_array.byteOffset`);
+ success(3, `typed_array.byteLength`);
+ fail(`Uint8Array.of(1, 2)`);
+ function_param = [
+ "forEach", "every", "some", "reduce", "reduceRight", "find", "filter",
+ "map", "findIndex"
+ ];
+ fails = ["toString", "join", "toLocaleString", "reverse", "sort",
+ "copyWithin", "fill", "set"];
+ var typed_proto_proto = Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array()));
+ for (f of Object.getOwnPropertyNames(typed_proto_proto)) {
+ if (typeof typed_array[f] === "function" && f !== "constructor") {
+ if (fails.includes(f)) {
+ if (function_param.includes(f)) {
+ fail(`typed_array.${f}(()=>{});`);
+ } else {
+ fail(`typed_array.${f}();`);
+ }
+ } else if (function_param.includes(f)) {
+ exec_state.frame(0).evaluate(`typed_array.${f}(()=>{});`, true);
+ } else {
+ exec_state.frame(0).evaluate(`typed_array.${f}();`, true);
+ }
+ }
+ }
+
// Test Math functions.
for (f of Object.getOwnPropertyNames(Math)) {
if (typeof Math[f] === "function") {
@@ -140,6 +193,12 @@ function listener(event, exec_state, event_data, data) {
fail("'abcd'.search(/a/)");
fail("'abcd'.split(/a/)");
+ // Test RegExp functions.
+ fail(`/a/.compile()`);
+ fail(`/a/.exec('abc')`);
+ fail(`/a/.test('abc')`);
+ fail(`/a/.toString()`);
+
// Test JSON functions.
success('{"abc":[1,2]}', "JSON.stringify(JSON.parse('{\"abc\":[1,2]}'))");
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-control.js
index e19a277546..e19a277546 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-control.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-control.js
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-iife.js
index c8dc2a528d..c8dc2a528d 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-iife.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-iife.js
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-ops.js
index b7e49dc88f..b7e49dc88f 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect-ops.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect-ops.js
diff --git a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js
index 26cf258a9d..bb6c38debd 100644
--- a/deps/v8/test/debugger/debug/debug-evaluate-no-side-effect.js
+++ b/deps/v8/test/debugger/debug/side-effect/debug-evaluate-no-side-effect.js
@@ -14,6 +14,7 @@ var string2 = { toString() { print("x"); return "x"; } };
var array = [4, 5];
var error = new Error();
+function simple_return(x) { return x; }
function set_a() { a = 2; }
function get_a() { return a; }
var bound = get_a.bind(0);
@@ -61,6 +62,15 @@ function listener(event, exec_state, event_data, data) {
success("set_a", "set_a.name");
success(0, "bound.length");
success("bound get_a", "bound.name");
+ // Non-evaluated call.
+ success("abc", "['abc'].join('foo')");
+ // Constructed literals.
+ success([1], "[1]");
+ success({x: 1}, "({x: 1})");
+ fail("[a]");
+ fail("({x: a})");
+ // Test that template literal evaluation fails.
+ fail("simple_return`1`");
// Test that non-read-only code fails.
fail("exception = 1");
// Test that calling a non-read-only function fails.
diff --git a/deps/v8/test/debugger/debugger.gyp b/deps/v8/test/debugger/debugger.gyp
deleted file mode 100644
index c093d09717..0000000000
--- a/deps/v8/test/debugger/debugger.gyp
+++ /dev/null
@@ -1,26 +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.
-
-{
- 'conditions': [
- ['test_isolation_mode != "noop"', {
- 'targets': [
- {
- 'target_name': 'debugger_run',
- 'type': 'none',
- 'dependencies': [
- '../../src/d8.gyp:d8_run',
- ],
- 'includes': [
- '../../gypfiles/features.gypi',
- '../../gypfiles/isolate.gypi',
- ],
- 'sources': [
- 'debugger.isolate',
- ],
- },
- ],
- }],
- ],
-}
diff --git a/deps/v8/test/debugger/regress/regress-7421.js b/deps/v8/test/debugger/regress/regress-7421.js
new file mode 100644
index 0000000000..e82cc8a6db
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-7421.js
@@ -0,0 +1,78 @@
+// 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: --block-concurrent-recompilation
+
+Debug = debug.Debug
+
+// Test that the side-effect check is not bypassed in optimized code.
+
+var exception = null;
+var counter = 0;
+
+function f1() {
+ counter++;
+}
+
+function wrapper1() {
+ for (var i = 0; i < 4; i++) {
+ // Get this function optimized before calling to increment.
+ // Check that that call performs the necessary side-effect checks.
+ %OptimizeOsr();
+ }
+ f1();
+}
+
+function f2() {
+ counter++;
+}
+
+function wrapper2(call) {
+ if (call) f2();
+}
+
+function listener(event, exec_state, event_data, data) {
+ if (event != Debug.DebugEvent.Break) return;
+ try {
+ function success(expectation, source) {
+ assertEquals(expectation,
+ exec_state.frame(0).evaluate(source, true).value());
+ }
+ function fail(source) {
+ assertThrows(() => exec_state.frame(0).evaluate(source, true),
+ EvalError);
+ }
+ wrapper1();
+ wrapper1();
+ fail("wrapper1()");
+
+ wrapper2(true);
+ wrapper2(false);
+ wrapper2(true);
+ %OptimizeFunctionOnNextCall(wrapper2);
+ wrapper2(false);
+ fail("wrapper2(true)");
+ fail("%OptimizeFunctionOnNextCall(wrapper2); wrapper2(true)");
+
+ %OptimizeFunctionOnNextCall(wrapper2, "concurrent");
+ wrapper2(false);
+ fail("%UnblockConcurrentRecompilation();" +
+ "%GetOptimizationStatus(wrapper2, 'sync');" +
+ "wrapper2(true);");
+ } catch (e) {
+ exception = e;
+ print(e, e.stack);
+ }
+};
+
+// Add the debug event listener.
+Debug.setListener(listener);
+
+function f() {
+ debugger;
+};
+
+f();
+
+assertNull(exception);
diff --git a/deps/v8/test/debugger/regress/regress-crbug-507070.js b/deps/v8/test/debugger/regress/regress-crbug-507070.js
new file mode 100644
index 0000000000..1ca452f580
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-crbug-507070.js
@@ -0,0 +1,20 @@
+// Copyright 2015 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 --cache=code --no-debug-code
+
+try { } catch(e) { }
+try { try { } catch (e) { } } catch(e) { }
+try {
+ var Debug = debug.Debug;
+ Debug.setListener(function(){});
+} catch(e) { }
+(function() {
+ Debug.setBreakPoint(function(){}, 0, 0);
+})();
+
+var a = 1;
+a += a;
+Debug.setListener(null);
+assertEquals(2, a);
diff --git a/deps/v8/test/debugger/regress/regress-crbug-808973.js b/deps/v8/test/debugger/regress/regress-crbug-808973.js
new file mode 100644
index 0000000000..e61cb3b562
--- /dev/null
+++ b/deps/v8/test/debugger/regress/regress-crbug-808973.js
@@ -0,0 +1,18 @@
+// 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: --allow-natives-syntax --enable-inspector
+
+const Debug = debug.Debug;
+Debug.setListener(() => {});
+Debug.setBreakOnUncaughtException()
+
+function sleep() {
+ return new Promise(resolve => setTimeout(resolve, 1));
+}
+async function thrower() {
+ await sleep();
+ throw "a"; // Exception a
+}
+(async function() { thrower(); })();
diff --git a/deps/v8/test/debugger/test-api.js b/deps/v8/test/debugger/test-api.js
index 0e9670b277..e89318fc72 100644
--- a/deps/v8/test/debugger/test-api.js
+++ b/deps/v8/test/debugger/test-api.js
@@ -67,11 +67,6 @@ class DebugWrapper {
this.ExceptionBreak = { Caught : 0,
Uncaught: 1 };
- // The different script break point types.
- this.ScriptBreakPointType = { ScriptId: 0,
- ScriptName: 1,
- ScriptRegExp: 2 };
-
// Store the current script id so we can skip corresponding break events.
this.thisScriptId = %FunctionGetScriptId(receive);
@@ -139,13 +134,6 @@ class DebugWrapper {
return this.setBreakPointAtLocation(scriptid, loc, opt_condition);
}
- setScriptBreakPoint(type, scriptid, opt_line, opt_column, opt_condition) {
- // Only sets by script id are supported for now.
- assertEquals(this.ScriptBreakPointType.ScriptId, type);
- return this.setScriptBreakPointById(scriptid, opt_line, opt_column,
- opt_condition);
- }
-
setScriptBreakPointById(scriptid, opt_line, opt_column, opt_condition) {
const loc = %ScriptLocationFromLine2(scriptid, opt_line, opt_column, 0);
return this.setBreakPointAtLocation(scriptid, loc, opt_condition);
diff --git a/deps/v8/test/debugger/testcfg.py b/deps/v8/test/debugger/testcfg.py
index e287077ec3..da923ff63b 100644
--- a/deps/v8/test/debugger/testcfg.py
+++ b/deps/v8/test/debugger/testcfg.py
@@ -12,7 +12,7 @@ FILES_PATTERN = re.compile(r"//\s+Files:(.*)")
MODULE_PATTERN = re.compile(r"^// MODULE$", flags=re.MULTILINE)
class TestSuite(testsuite.TestSuite):
- def ListTests(self, context):
+ def ListTests(self):
tests = []
for dirname, dirs, files in os.walk(self.root):
for dotted in [x for x in dirs if x.startswith('.')]:
@@ -62,21 +62,21 @@ class TestCase(testcase.TestCase):
files.append(os.path.join(self.suite.root, self.path + self._get_suffix()))
return files
- def _get_files_params(self, ctx):
+ def _get_files_params(self):
files = self._source_files
- if ctx.isolates:
+ if self._test_config.isolates:
files = files + ['--isolate'] + files
return files
def _get_source_flags(self):
return self._source_flags
- def _get_suite_flags(self, ctx):
+ def _get_suite_flags(self):
return ['--enable-inspector', '--allow-natives-syntax']
def _get_source_path(self):
return os.path.join(self.suite.root, self.path + self._get_suffix())
-def GetSuite(name, root):
- return TestSuite(name, root)
+def GetSuite(*args, **kwargs):
+ return TestSuite(*args, **kwargs)