summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/debug-backtrace.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/debug-backtrace.js')
-rw-r--r--deps/v8/test/mjsunit/debug-backtrace.js271
1 files changed, 0 insertions, 271 deletions
diff --git a/deps/v8/test/mjsunit/debug-backtrace.js b/deps/v8/test/mjsunit/debug-backtrace.js
deleted file mode 100644
index 3a72384cce..0000000000
--- a/deps/v8/test/mjsunit/debug-backtrace.js
+++ /dev/null
@@ -1,271 +0,0 @@
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Flags: --expose-debug-as debug
-// The functions used for testing backtraces. They are at the top to make the
-// testing of source line/column easier.
-function f(x, y) {
- a=1;
-};
-
-var m = (0, function() {
- new f(1);
-});
-
-function g() {
- m();
-};
-
-
-// Get the Debug object exposed from the debug context global object.
-Debug = debug.Debug
-
-listenerCalled = false;
-exception = false;
-
-
-function ParsedResponse(json) {
- this.response_ = eval('(' + json + ')');
- this.refs_ = [];
- if (this.response_.refs) {
- for (var i = 0; i < this.response_.refs.length; i++) {
- this.refs_[this.response_.refs[i].handle] = this.response_.refs[i];
- }
- }
-}
-
-
-ParsedResponse.prototype.response = function() {
- return this.response_;
-}
-
-
-ParsedResponse.prototype.body = function() {
- return this.response_.body;
-}
-
-
-ParsedResponse.prototype.running = function() {
- return this.response_.running;
-}
-
-
-ParsedResponse.prototype.lookup = function(handle) {
- return this.refs_[handle];
-}
-
-
-function listener(event, exec_state, event_data, data) {
- try {
- if (event == Debug.DebugEvent.Break) {
- // The expected backtrace is
- // 0: f
- // 1: m
- // 2: g
- // 3: [anonymous]
-
- var response;
- var backtrace;
- var frame;
- var source;
-
- var dcp;
- // New copy of debug command processor paused state.
- dcp = exec_state.debugCommandProcessor(false);
-
- // Get the backtrace.
- var json;
- json = '{"seq":0,"type":"request","command":"backtrace"}'
- var resp = dcp.processDebugJSONRequest(json);
- response = new ParsedResponse(resp);
- backtrace = response.body();
- assertEquals(0, backtrace.fromFrame);
- assertEquals(4, backtrace.toFrame);
- assertEquals(4, backtrace.totalFrames);
- var frames = backtrace.frames;
- assertEquals(4, frames.length);
- for (var i = 0; i < frames.length; i++) {
- assertEquals('frame', frames[i].type);
- }
- assertEquals(0, frames[0].index);
- assertEquals("f", response.lookup(frames[0].func.ref).name);
- assertEquals(1, frames[1].index);
- assertEquals("", response.lookup(frames[1].func.ref).name);
- assertEquals("m", response.lookup(frames[1].func.ref).inferredName);
- assertEquals(2, frames[2].index);
- assertEquals("g", response.lookup(frames[2].func.ref).name);
- assertEquals(3, frames[3].index);
- assertEquals("", response.lookup(frames[3].func.ref).name);
- assertFalse(response.running(), "expected not running");
-
- // Get backtrace with two frames.
- json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":1,"toFrame":3}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- backtrace = response.body();
- assertEquals(1, backtrace.fromFrame);
- assertEquals(3, backtrace.toFrame);
- assertEquals(4, backtrace.totalFrames);
- var frames = backtrace.frames;
- assertEquals(2, frames.length);
- for (var i = 0; i < frames.length; i++) {
- assertEquals('frame', frames[i].type);
- }
- assertEquals(1, frames[0].index);
- assertEquals("", response.lookup(frames[0].func.ref).name);
- assertEquals("m", response.lookup(frames[0].func.ref).inferredName);
- assertEquals(2, frames[1].index);
- assertEquals("g", response.lookup(frames[1].func.ref).name);
-
- // Get backtrace with bottom two frames.
- json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFrame":0,"toFrame":2, "bottom":true}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- backtrace = response.body();
- assertEquals(2, backtrace.fromFrame);
- assertEquals(4, backtrace.toFrame);
- assertEquals(4, backtrace.totalFrames);
- var frames = backtrace.frames;
- assertEquals(2, frames.length);
- for (var i = 0; i < frames.length; i++) {
- assertEquals('frame', frames[i].type);
- }
- assertEquals(2, frames[0].index);
- assertEquals("g", response.lookup(frames[0].func.ref).name);
- assertEquals(3, frames[1].index);
- assertEquals("", response.lookup(frames[1].func.ref).name);
-
- // Get the individual frames.
- json = '{"seq":0,"type":"request","command":"frame"}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- frame = response.body();
- assertEquals(0, frame.index);
- assertEquals("f", response.lookup(frame.func.ref).name);
- assertTrue(frame.constructCall);
- assertEquals(31, frame.line);
- assertEquals(2, frame.column);
- assertEquals(2, frame.arguments.length);
- assertEquals('x', frame.arguments[0].name);
- assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
- assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
- assertEquals('y', frame.arguments[1].name);
- assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type);
-
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":0}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- frame = response.body();
- assertEquals(0, frame.index);
- assertEquals("f", response.lookup(frame.func.ref).name);
- assertEquals(31, frame.line);
- assertEquals(2, frame.column);
- assertEquals(2, frame.arguments.length);
- assertEquals('x', frame.arguments[0].name);
- assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
- assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
- assertEquals('y', frame.arguments[1].name);
- assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type);
-
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":1}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- frame = response.body();
- assertEquals(1, frame.index);
- assertEquals("", response.lookup(frame.func.ref).name);
- assertEquals("m", response.lookup(frame.func.ref).inferredName);
- assertFalse(frame.constructCall);
- assertEquals(35, frame.line);
- assertEquals(2, frame.column);
- assertEquals(0, frame.arguments.length);
-
- json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":3}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- frame = response.body();
- assertEquals(3, frame.index);
- assertEquals("", response.lookup(frame.func.ref).name);
-
- // Source slices for the individual frames (they all refer to this script).
- json = '{"seq":0,"type":"request","command":"source",' +
- '"arguments":{"frame":0,"fromLine":30,"toLine":32}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- source = response.body();
- assertEquals("function f(x, y) {", source.source.substring(0, 18));
- assertEquals(30, source.fromLine);
- assertEquals(32, source.toLine);
-
- json = '{"seq":0,"type":"request","command":"source",' +
- '"arguments":{"frame":1,"fromLine":31,"toLine":32}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- source = response.body();
- assertEquals(" a=1;", source.source.substring(0, 6));
- assertEquals(31, source.fromLine);
- assertEquals(32, source.toLine);
-
- json = '{"seq":0,"type":"request","command":"source",' +
- '"arguments":{"frame":2,"fromLine":35,"toLine":36}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- source = response.body();
- assertEquals(" new f(1);", source.source.substring(0, 11));
- assertEquals(35, source.fromLine);
- assertEquals(36, source.toLine);
-
- // Test line interval way beyond this script will result in an error.
- json = '{"seq":0,"type":"request","command":"source",' +
- '"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- assertFalse(response.response().success);
-
- // Test without arguments.
- json = '{"seq":0,"type":"request","command":"source"}'
- response = new ParsedResponse(dcp.processDebugJSONRequest(json));
- source = response.body();
- assertEquals(Debug.findScript(f).source, source.source);
-
- // New copy of debug command processor in running state.
- dcp = exec_state.debugCommandProcessor(true);
- // Get the backtrace.
- json = '{"seq":0,"type":"request","command":"backtrace"}'
- resp = dcp.processDebugJSONRequest(json);
- response = new ParsedResponse(resp);
- // It might be argueable, but we expect response to have body when
- // not suspended
- assertTrue(!!response.body(), "response should be null");
- assertTrue(response.running(), "expected running");
-
- listenerCalled = true;
- }
- } catch (e) {
- exception = e
- };
-};
-
-// Add the debug event listener.
-Debug.setListener(listener);
-
-// Set a break point and call to invoke the debug event listener.
-Debug.setBreakPoint(f, 0, 0);
-g();
-
-// Make sure that the debug event listener vas invoked.
-assertFalse(exception, "exception in listener");
-assertTrue(listenerCalled);