Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Side by Side Diff: test/mjsunit/debug-backtrace.js

Issue 155285: Get peep-hole optimizer working on ARM by not emitting... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/assembler-arm.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2008 the V8 project authors. All rights reserved. 1 // Copyright 2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 } 69 }
70 70
71 71
72 ParsedResponse.prototype.lookup = function(handle) { 72 ParsedResponse.prototype.lookup = function(handle) {
73 return this.refs_[handle]; 73 return this.refs_[handle];
74 } 74 }
75 75
76 76
77 function listener(event, exec_state, event_data, data) { 77 function listener(event, exec_state, event_data, data) {
78 try { 78 try {
79 if (event == Debug.DebugEvent.Break) 79 if (event == Debug.DebugEvent.Break) {
80 { 80 // The expected backtrace is
81 // The expected backtrace is 81 // 0: f
82 // 0: f 82 // 1: m
83 // 1: m 83 // 2: g
84 // 2: g 84 // 3: [anonymous]
85 // 3: [anonymous]
86
87 var response;
88 var backtrace;
89 var frame;
90 var source;
91
92 // Get the debug command processor.
93 var dcp = exec_state.debugCommandProcessor();
94 85
95 // Get the backtrace. 86 var response;
96 var json; 87 var backtrace;
97 json = '{"seq":0,"type":"request","command":"backtrace"}' 88 var frame;
98 var resp = dcp.processDebugJSONRequest(json); 89 var source;
99 response = new ParsedResponse(resp); 90
100 backtrace = response.body(); 91 // Get the debug command processor.
101 assertEquals(0, backtrace.fromFrame); 92 var dcp = exec_state.debugCommandProcessor();
102 assertEquals(4, backtrace.toFrame); 93
103 assertEquals(4, backtrace.totalFrames); 94 // Get the backtrace.
104 var frames = backtrace.frames; 95 var json;
105 assertEquals(4, frames.length); 96 json = '{"seq":0,"type":"request","command":"backtrace"}'
106 for (var i = 0; i < frames.length; i++) { 97 var resp = dcp.processDebugJSONRequest(json);
107 assertEquals('frame', frames[i].type); 98 response = new ParsedResponse(resp);
99 backtrace = response.body();
100 assertEquals(0, backtrace.fromFrame);
101 assertEquals(4, backtrace.toFrame);
102 assertEquals(4, backtrace.totalFrames);
103 var frames = backtrace.frames;
104 assertEquals(4, frames.length);
105 for (var i = 0; i < frames.length; i++) {
106 assertEquals('frame', frames[i].type);
107 }
108 assertEquals(0, frames[0].index);
109 assertEquals("f", response.lookup(frames[0].func.ref).name);
110 assertEquals(1, frames[1].index);
111 assertEquals("", response.lookup(frames[1].func.ref).name);
112 assertEquals("m", response.lookup(frames[1].func.ref).inferredName);
113 assertEquals(2, frames[2].index);
114 assertEquals("g", response.lookup(frames[2].func.ref).name);
115 assertEquals(3, frames[3].index);
116 assertEquals("", response.lookup(frames[3].func.ref).name);
117
118 // Get backtrace with two frames.
119 json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"from Frame":1,"toFrame":3}}'
120 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
121 backtrace = response.body();
122 assertEquals(1, backtrace.fromFrame);
123 assertEquals(3, backtrace.toFrame);
124 assertEquals(4, backtrace.totalFrames);
125 var frames = backtrace.frames;
126 assertEquals(2, frames.length);
127 for (var i = 0; i < frames.length; i++) {
128 assertEquals('frame', frames[i].type);
129 }
130 assertEquals(1, frames[0].index);
131 assertEquals("", response.lookup(frames[0].func.ref).name);
132 assertEquals("m", response.lookup(frames[0].func.ref).inferredName);
133 assertEquals(2, frames[1].index);
134 assertEquals("g", response.lookup(frames[1].func.ref).name);
135
136 // Get backtrace with bottom two frames.
137 json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"from Frame":0,"toFrame":2, "bottom":true}}'
138 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
139 backtrace = response.body();
140 assertEquals(2, backtrace.fromFrame);
141 assertEquals(4, backtrace.toFrame);
142 assertEquals(4, backtrace.totalFrames);
143 var frames = backtrace.frames;
144 assertEquals(2, frames.length);
145 for (var i = 0; i < frames.length; i++) {
146 assertEquals('frame', frames[i].type);
147 }
148 assertEquals(2, frames[0].index);
149 assertEquals("g", response.lookup(frames[0].func.ref).name);
150 assertEquals(3, frames[1].index);
151 assertEquals("", response.lookup(frames[1].func.ref).name);
152
153 // Get the individual frames.
154 json = '{"seq":0,"type":"request","command":"frame"}'
155 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
156 frame = response.body();
157 assertEquals(0, frame.index);
158 assertEquals("f", response.lookup(frame.func.ref).name);
159 assertTrue(frame.constructCall);
160 assertEquals(31, frame.line);
161 assertEquals(3, frame.column);
162 assertEquals(2, frame.arguments.length);
163 assertEquals('x', frame.arguments[0].name);
164 assertEquals('number', response.lookup(frame.arguments[0].value.ref).type) ;
165 assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
166 assertEquals('y', frame.arguments[1].name);
167 assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).ty pe);
168
169 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number": 0}}'
170 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
171 frame = response.body();
172 assertEquals(0, frame.index);
173 assertEquals("f", response.lookup(frame.func.ref).name);
174 assertEquals(31, frame.line);
175 assertEquals(3, frame.column);
176 assertEquals(2, frame.arguments.length);
177 assertEquals('x', frame.arguments[0].name);
178 assertEquals('number', response.lookup(frame.arguments[0].value.ref).type) ;
179 assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
180 assertEquals('y', frame.arguments[1].name);
181 assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).ty pe);
182
183 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number": 1}}'
184 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
185 frame = response.body();
186 assertEquals(1, frame.index);
187 assertEquals("", response.lookup(frame.func.ref).name);
188 assertEquals("m", response.lookup(frame.func.ref).inferredName);
189 assertFalse(frame.constructCall);
190 assertEquals(35, frame.line);
191 assertEquals(2, frame.column);
192 assertEquals(0, frame.arguments.length);
193
194 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number": 3}}'
195 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
196 frame = response.body();
197 assertEquals(3, frame.index);
198 assertEquals("", response.lookup(frame.func.ref).name);
199
200 // Source slices for the individual frames (they all refer to this script) .
201 json = '{"seq":0,"type":"request","command":"source",' +
202 '"arguments":{"frame":0,"fromLine":30,"toLine":32}}'
203 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
204 source = response.body();
205 assertEquals("function f(x, y) {", source.source.substring(0, 18));
206 assertEquals(30, source.fromLine);
207 assertEquals(32, source.toLine);
208
209 json = '{"seq":0,"type":"request","command":"source",' +
210 '"arguments":{"frame":1,"fromLine":31,"toLine":32}}'
211 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
212 source = response.body();
213 assertEquals(" a=1;", source.source.substring(0, 6));
214 assertEquals(31, source.fromLine);
215 assertEquals(32, source.toLine);
216
217 json = '{"seq":0,"type":"request","command":"source",' +
218 '"arguments":{"frame":2,"fromLine":35,"toLine":36}}'
219 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
220 source = response.body();
221 assertEquals(" new f(1);", source.source.substring(0, 11));
222 assertEquals(35, source.fromLine);
223 assertEquals(36, source.toLine);
224
225 // Test line interval way beyond this script will result in an error.
226 json = '{"seq":0,"type":"request","command":"source",' +
227 '"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}'
228 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
229 assertFalse(response.response().success);
230
231 // Test without arguments.
232 json = '{"seq":0,"type":"request","command":"source"}'
233 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
234 source = response.body();
235 assertEquals(Debug.findScript(f).source, source.source);
236
237 listenerCalled = true;
108 } 238 }
109 assertEquals(0, frames[0].index);
110 assertEquals("f", response.lookup(frames[0].func.ref).name);
111 assertEquals(1, frames[1].index);
112 assertEquals("", response.lookup(frames[1].func.ref).name);
113 assertEquals("m", response.lookup(frames[1].func.ref).inferredName);
114 assertEquals(2, frames[2].index);
115 assertEquals("g", response.lookup(frames[2].func.ref).name);
116 assertEquals(3, frames[3].index);
117 assertEquals("", response.lookup(frames[3].func.ref).name);
118
119 // Get backtrace with two frames.
120 json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFr ame":1,"toFrame":3}}'
121 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
122 backtrace = response.body();
123 assertEquals(1, backtrace.fromFrame);
124 assertEquals(3, backtrace.toFrame);
125 assertEquals(4, backtrace.totalFrames);
126 var frames = backtrace.frames;
127 assertEquals(2, frames.length);
128 for (var i = 0; i < frames.length; i++) {
129 assertEquals('frame', frames[i].type);
130 }
131 assertEquals(1, frames[0].index);
132 assertEquals("", response.lookup(frames[0].func.ref).name);
133 assertEquals("m", response.lookup(frames[0].func.ref).inferredName);
134 assertEquals(2, frames[1].index);
135 assertEquals("g", response.lookup(frames[1].func.ref).name);
136
137 // Get backtrace with bottom two frames.
138 json = '{"seq":0,"type":"request","command":"backtrace","arguments":{"fromFr ame":0,"toFrame":2, "bottom":true}}'
139 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
140 backtrace = response.body();
141 assertEquals(2, backtrace.fromFrame);
142 assertEquals(4, backtrace.toFrame);
143 assertEquals(4, backtrace.totalFrames);
144 var frames = backtrace.frames;
145 assertEquals(2, frames.length);
146 for (var i = 0; i < frames.length; i++) {
147 assertEquals('frame', frames[i].type);
148 }
149 assertEquals(2, frames[0].index);
150 assertEquals("g", response.lookup(frames[0].func.ref).name);
151 assertEquals(3, frames[1].index);
152 assertEquals("", response.lookup(frames[1].func.ref).name);
153
154 // Get the individual frames.
155 json = '{"seq":0,"type":"request","command":"frame"}'
156 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
157 frame = response.body();
158 assertEquals(0, frame.index);
159 assertEquals("f", response.lookup(frame.func.ref).name);
160 assertTrue(frame.constructCall);
161 assertEquals(31, frame.line);
162 assertEquals(3, frame.column);
163 assertEquals(2, frame.arguments.length);
164 assertEquals('x', frame.arguments[0].name);
165 assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
166 assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
167 assertEquals('y', frame.arguments[1].name);
168 assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type );
169
170 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":0} }'
171 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
172 frame = response.body();
173 assertEquals(0, frame.index);
174 assertEquals("f", response.lookup(frame.func.ref).name);
175 assertEquals(31, frame.line);
176 assertEquals(3, frame.column);
177 assertEquals(2, frame.arguments.length);
178 assertEquals('x', frame.arguments[0].name);
179 assertEquals('number', response.lookup(frame.arguments[0].value.ref).type);
180 assertEquals(1, response.lookup(frame.arguments[0].value.ref).value);
181 assertEquals('y', frame.arguments[1].name);
182 assertEquals('undefined', response.lookup(frame.arguments[1].value.ref).type );
183
184 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":1} }'
185 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
186 frame = response.body();
187 assertEquals(1, frame.index);
188 assertEquals("", response.lookup(frame.func.ref).name);
189 assertEquals("m", response.lookup(frame.func.ref).inferredName);
190 assertFalse(frame.constructCall);
191 assertEquals(35, frame.line);
192 assertEquals(2, frame.column);
193 assertEquals(0, frame.arguments.length);
194
195 json = '{"seq":0,"type":"request","command":"frame","arguments":{"number":3} }'
196 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
197 frame = response.body();
198 assertEquals(3, frame.index);
199 assertEquals("", response.lookup(frame.func.ref).name);
200
201 // Source slices for the individual frames (they all refer to this script).
202 json = '{"seq":0,"type":"request","command":"source",' +
203 '"arguments":{"frame":0,"fromLine":30,"toLine":32}}'
204 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
205 source = response.body();
206 assertEquals("function f(x, y) {", source.source.substring(0, 18));
207 assertEquals(30, source.fromLine);
208 assertEquals(32, source.toLine);
209
210 json = '{"seq":0,"type":"request","command":"source",' +
211 '"arguments":{"frame":1,"fromLine":31,"toLine":32}}'
212 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
213 source = response.body();
214 assertEquals(" a=1;", source.source.substring(0, 6));
215 assertEquals(31, source.fromLine);
216 assertEquals(32, source.toLine);
217
218 json = '{"seq":0,"type":"request","command":"source",' +
219 '"arguments":{"frame":2,"fromLine":35,"toLine":36}}'
220 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
221 source = response.body();
222 assertEquals(" new f(1);", source.source.substring(0, 11));
223 assertEquals(35, source.fromLine);
224 assertEquals(36, source.toLine);
225
226 // Test line interval way beyond this script will result in an error.
227 json = '{"seq":0,"type":"request","command":"source",' +
228 '"arguments":{"frame":0,"fromLine":10000,"toLine":20000}}'
229 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
230 assertFalse(response.response().success);
231
232 // Test without arguments.
233 json = '{"seq":0,"type":"request","command":"source"}'
234 response = new ParsedResponse(dcp.processDebugJSONRequest(json));
235 source = response.body();
236 assertEquals(Debug.findScript(f).source, source.source);
237
238 listenerCalled = true;
239 }
240 } catch (e) { 239 } catch (e) {
241 exception = e 240 exception = e
242 }; 241 };
243 }; 242 };
244 243
245 // Add the debug event listener. 244 // Add the debug event listener.
246 Debug.setListener(listener); 245 Debug.setListener(listener);
247 246
248 // Set a break point and call to invoke the debug event listener. 247 // Set a break point and call to invoke the debug event listener.
249 Debug.setBreakPoint(f, 0, 0); 248 Debug.setBreakPoint(f, 0, 0);
250 g(); 249 g();
251 250
252 // Make sure that the debug event listener vas invoked. 251 // Make sure that the debug event listener vas invoked.
253 assertFalse(exception, "exception in listener"); 252 assertFalse(exception, "exception in listener");
254 assertTrue(listenerCalled); 253 assertTrue(listenerCalled);
255 254
OLDNEW
« no previous file with comments | « src/arm/assembler-arm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698