diff options
Diffstat (limited to 'deps/v8/test/debugger/debug/regress/regress-crbug-465298.js')
-rw-r--r-- | deps/v8/test/debugger/debug/regress/regress-crbug-465298.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/v8/test/debugger/debug/regress/regress-crbug-465298.js b/deps/v8/test/debugger/debug/regress/regress-crbug-465298.js new file mode 100644 index 0000000000..7ccdcd882f --- /dev/null +++ b/deps/v8/test/debugger/debug/regress/regress-crbug-465298.js @@ -0,0 +1,54 @@ +// Copyright 2015 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: --noturbo-osr --noturbo-inlining + +var stdlib = this; +var buffer = new ArrayBuffer(64 * 1024); +var foreign = { thrower: thrower, debugme: debugme } + +Debug = debug.Debug; + +var listenerCalled = false; +function listener(event, exec_state, event_data, data) { + try { + if (event == Debug.DebugEvent.Break) { + var frame = exec_state.frame(1); + assertEquals("foo", frame.func().name()); + listenerCalled = true; + } + } catch (e) { + print("Caught: " + e + " " + e.stack); + }; +} + +function thrower() { throw "boom"; } +function debugme() { Debug.setListener(listener); debugger; } + +function Module(stdlib, foreign, heap) { + "use asm"; + var thrower = foreign.thrower; + var debugme = foreign.debugme; + function foo(i) { + i = i|0; + var a = 101; // Local variables exist ... + var b = 102; // ... to make the debugger ... + var c = 103; // ... inspect them during break. + if (i > 0) { + debugme(); + i = 23; + } else { + thrower(); + i = 42; + } + return i|0; + } + return { foo: foo }; +} + +var m = Module(stdlib, foreign, buffer); + +assertThrows("m.foo(0)"); +assertEquals(23, m.foo(1)); +assertTrue(listenerCalled); |