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 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 assertTrue( 17 event_data.sourceLineText().indexOf(`Break ${break_count++}.`) > 0); 18 exec_state.prepareStep(Debug.StepAction.StepIn); 19 } catch (e) { 20 exception = e; 21 } 22 }; 23 24 function replaceCallback(a) { 25 return "x"; // Break 2. 26 } // Break 3. 27 28 var re = /x/g; 29 // Optimize the inner helper function for string replace. 30 for (var i = 0; i < 10000; i++) "x".replace(re, replaceCallback); 31 32 Debug.setListener(listener); 33 debugger; // Break 0. 34 var result = "x".replace(re, replaceCallback); // Break 1. 35 Debug.setListener(null); // Break 4. 36 37 assertNull(exception); 38