1958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Copyright 2014 the V8 project authors. All rights reserved. 2958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Use of this source code is governed by a BSD-style license that can be 3958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// found in the LICENSE file. 4958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 5958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier// Flags: --expose-debug-as debug 6958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 7958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierDebug = debug.Debug; 8958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniervar exception = null; 9958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Berniervar error_count = 0; 10958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 11958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierfunction f() { 12958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier return 0; // Break 13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // Break 14958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 15958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierfunction listener(event, exec_state, event_data, data) { 16958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier if (event != Debug.DebugEvent.Break) return; 17958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier try { 18958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier if (exec_state.frame(0).sourceLineText().indexOf("Break") <0) { 19958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier error_count++; 20958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier } 21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch exec_state.prepareStep(Debug.StepAction.StepIn); 22958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier f(); // We should not break in this call of f(). 23958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier } catch (e) { 24958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier print(e + e.stack); 25958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier exception = e; 26958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier } 27958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier} 28958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 29958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierDebug.setListener(listener); 30958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 31958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierdebugger; // Break 32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochf(); // Break 33958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 34958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierDebug.setListener(null); // Break 35958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 36958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierassertNull(exception); 37958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily BernierassertEquals(0, error_count); 38