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