• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2015 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --expose-debug-as debug --allow-natives-syntax
6
7var Debug = debug.Debug;
8var expected = ["debugger;", "var x = y;", "debugger;", "var x = y;"];
9var log = [];
10
11function listener(event, exec_state, event_data, data) {
12  if (event != Debug.DebugEvent.Break) return;
13  try {
14    log.push(exec_state.frame(0).sourceLineText().trimLeft());
15    exec_state.prepareStep(Debug.StepAction.StepNext);
16  } catch (e) {
17    %AbortJS(e + "\n" + e.stack);
18  }
19}
20
21Debug.setListener(listener);
22
23function f() {
24  var a = 1;
25  debugger;
26  var x = y;
27  print(x);
28}
29
30function call_f_with_deeper_stack() {
31  (() => () => () => f())()()();
32}
33
34var p = Promise.resolve();
35p.then(f);
36p.then(call_f_with_deeper_stack);
37
38// Schedule microtask to check against expectation at the end.
39function testDone(iteration) {
40  function checkResult() {
41    try {
42      assertTrue(iteration < 10);
43      if (expected.length == log.length) {
44        assertEquals(expected, log);
45      } else {
46        testDone(iteration + 1);
47      }
48    } catch (e) {
49      %AbortJS(e + "\n" + e.stack);
50    }
51  }
52
53  %EnqueueMicrotask(checkResult);
54}
55
56testDone(0);
57