1// Copyright 2014 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
6
7Debug = debug.Debug
8var exception = null;
9
10function breakListener(event, exec_state, event_data, data) {
11  if (event != Debug.DebugEvent.Break) return;
12  try {
13    exec_state.prepareStep(Debug.StepAction.StepIn, 1);
14    // Assert that the break happens at an intended location.
15    assertTrue(exec_state.frame(0).sourceLineText().indexOf("// break") > 0);
16  } catch (e) {
17    exception = e;
18  }
19}
20
21Debug.setListener(breakListener);
22
23debugger;                          // break
24
25function f(x) {
26  return x;                        // break
27}                                  // break
28
29Debug.setBreakPoint(f, 0, 0);      // break
30Debug.scripts();                   // break
31debug.MakeMirror(f);               // break
32
33new Error("123").stack;            // break
34Math.sin(0);                       // break
35
36f("this should break");            // break
37
38Debug.setListener(null);           // break
39
40f("this should not break");
41
42assertNull(exception);
43