1// Copyright 2016 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 --harmony-tailcalls 6 7"use strict"; 8 9var Debug = debug.Debug 10var exception = null; 11var breaks = 0; 12 13function f(x) { 14 if (x > 0) { // B3 B5 B7 B9 15 return f(x - 1); // B4 B6 B8 16 } 17} // B10 18 19function g(x) { 20 return f(x); // B2 21} 22 23function h(x) { 24 debugger; // B0 25 g(x); // B1 26} // B11 27 28 29function listener(event, exec_state, event_data, data) { 30 if (event != Debug.DebugEvent.Break) return; 31 try { 32 print(event_data.sourceLineText()); 33 assertTrue(event_data.sourceLineText().indexOf(`B${breaks++}`) > 0); 34 exec_state.prepareStep(Debug.StepAction.StepIn); 35 } catch (e) { 36 exception = e; 37 }; 38}; 39 40Debug.setListener(listener); 41 42h(3); 43 44Debug.setListener(null); // B12 45assertNull(exception); 46assertEquals(13, breaks); 47