Chromium Code Reviews| 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 --ignition --nostress-opt --noalways-opt | |
|
rmcilroy
2016/03/14 14:54:55
I guess this will set clusterfuzz on ignition, but
| |
| 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 |