| // Copyright 2014 the V8 project authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // Flags: --no-always-opt --no-stress-opt | |
| Debug = debug.Debug | |
| var exception = null; | |
| var break_count = 0; | |
| var f = null; | |
| var i = null; | |
| function listener(event, exec_state, event_data, data) { | |
| try { | |
| if (event == Debug.DebugEvent.Break) { | |
| var frameMirror = exec_state.frame(0); | |
| var i = frameMirror.evaluate('f = function() { i = 5; }, f(), i').value(); | |
| assertEquals(5, i); | |
| } | |
| } catch(e) { | |
| exception = e; | |
| print(e, e.stack); | |
| } | |
| }; | |
| Debug.setListener(listener); | |
| (function (){ | |
| var i = 0; | |
| try { | |
| throw new Error(); | |
| } catch (e) { | |
| assertEquals(0, i); | |
| debugger; | |
| assertEquals(5, i); | |
| } | |
| }()); | |
| assertNull(exception); | |
| assertNull(i); | |
| f(); | |
| assertNull(i); | |
| Debug.setListener(null); |