OLD | NEW |
(Empty) | |
| 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 |
| 6 |
| 7 Debug = debug.Debug |
| 8 |
| 9 var exception = null; |
| 10 var break_count = 0; |
| 11 |
| 12 function listener(event, exec_state, event_data, data) { |
| 13 if (event != Debug.DebugEvent.Break) return; |
| 14 try { |
| 15 print(event_data.sourceLineText()); |
| 16 var column = event_data.sourceColumn(); |
| 17 assertTrue(event_data.sourceLineText().indexOf( |
| 18 `Break ${break_count++}. ${column}.`) > 0); |
| 19 exec_state.prepareStep(Debug.StepAction.StepIn); |
| 20 } catch (e) { |
| 21 print(e + e.stack); |
| 22 exception = e; |
| 23 } |
| 24 }; |
| 25 |
| 26 function f() { |
| 27 var a = 1; // Break 2. 10. |
| 28 // This return statement emits no bytecode instruction for the evaluation of |
| 29 // the to-be-returned expression. Therefore we cannot set a break location |
| 30 // before the statement and a second break location immediately before |
| 31 // returning to the caller. |
| 32 return a; |
| 33 } // Break 3. 0. |
| 34 |
| 35 Debug.setListener(listener); |
| 36 debugger; // Break 0. 0. |
| 37 f(); // Break 1. 0. |
| 38 Debug.setListener(null); // Break 4. 0. |
| 39 |
| 40 assertNull(exception); |
| 41 assertEquals(5, break_count); |
OLD | NEW |