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

Side by Side Diff: src/debug-debugger.js

Issue 296953005: Fix leak in debug mirror cache. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 7 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/debug.cc ('k') | test/mjsunit/debug-scripts-request.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Default number of frames to include in the response to backtrace request. 5 // Default number of frames to include in the response to backtrace request.
6 var kDefaultBacktraceLength = 10; 6 var kDefaultBacktraceLength = 10;
7 7
8 var Debug = {}; 8 var Debug = {};
9 9
10 // Regular expression to skip "crud" at the beginning of a source line which is 10 // Regular expression to skip "crud" at the beginning of a source line which is
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 var result = []; 479 var result = [];
480 for (var i = 0; i < script_break_points.length; i++) { 480 for (var i = 0; i < script_break_points.length; i++) {
481 if (script_break_points[i].matchesScript(script)) { 481 if (script_break_points[i].matchesScript(script)) {
482 result.push(script_break_points[i]); 482 result.push(script_break_points[i]);
483 } 483 }
484 } 484 }
485 return result; 485 return result;
486 } 486 }
487 487
488 488
489 function GetLoadedScripts() {
490 ClearMirrorCache(); // The mirror cache may be holding onto scripts.
491 return %DebugGetLoadedScripts();
yurys 2014/06/03 08:07:21 This change looks wrong to me. By design of V8 deb
Yang 2014/06/03 08:12:46 Not sure I understand. Which code path does blink
492 }
493
494
489 Debug.setListener = function(listener, opt_data) { 495 Debug.setListener = function(listener, opt_data) {
490 if (!IS_FUNCTION(listener) && !IS_UNDEFINED(listener) && !IS_NULL(listener)) { 496 if (!IS_FUNCTION(listener) && !IS_UNDEFINED(listener) && !IS_NULL(listener)) {
491 throw new Error('Parameters have wrong types.'); 497 throw new Error('Parameters have wrong types.');
492 } 498 }
493 %SetDebugEventListener(listener, opt_data); 499 %SetDebugEventListener(listener, opt_data);
494 }; 500 };
495 501
496 502
497 Debug.breakExecution = function(f) { 503 Debug.breakExecution = function(f) {
498 %Break(); 504 %Break();
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 pos = source.length; 914 pos = source.length;
909 result += source.substring(prev_pos, pos); 915 result += source.substring(prev_pos, pos);
910 return result; 916 return result;
911 }; 917 };
912 918
913 919
914 // Get all the scripts currently loaded. Locating all the scripts is based on 920 // Get all the scripts currently loaded. Locating all the scripts is based on
915 // scanning the heap. 921 // scanning the heap.
916 Debug.scripts = function() { 922 Debug.scripts = function() {
917 // Collect all scripts in the heap. 923 // Collect all scripts in the heap.
918 return %DebugGetLoadedScripts(); 924 return GetLoadedScripts();
919 }; 925 };
920 926
921 927
922 Debug.debuggerFlags = function() { 928 Debug.debuggerFlags = function() {
923 return debugger_flags; 929 return debugger_flags;
924 }; 930 };
925 931
926 Debug.MakeMirror = MakeMirror; 932 Debug.MakeMirror = MakeMirror;
927 933
928 function MakeExecutionState(break_id) { 934 function MakeExecutionState(break_id) {
(...skipping 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after
2237 if (!IS_UNDEFINED(request.arguments.filter)) { 2243 if (!IS_UNDEFINED(request.arguments.filter)) {
2238 var num = %ToNumber(request.arguments.filter); 2244 var num = %ToNumber(request.arguments.filter);
2239 if (!isNaN(num)) { 2245 if (!isNaN(num)) {
2240 filterNum = num; 2246 filterNum = num;
2241 } 2247 }
2242 filterStr = request.arguments.filter; 2248 filterStr = request.arguments.filter;
2243 } 2249 }
2244 } 2250 }
2245 2251
2246 // Collect all scripts in the heap. 2252 // Collect all scripts in the heap.
2247 var scripts = %DebugGetLoadedScripts(); 2253 var scripts = GetLoadedScripts();
2248 2254
2249 response.body = []; 2255 response.body = [];
2250 2256
2251 for (var i = 0; i < scripts.length; i++) { 2257 for (var i = 0; i < scripts.length; i++) {
2252 if (idsToInclude && !idsToInclude[scripts[i].id]) { 2258 if (idsToInclude && !idsToInclude[scripts[i].id]) {
2253 continue; 2259 continue;
2254 } 2260 }
2255 if (filterStr || filterNum) { 2261 if (filterStr || filterNum) {
2256 var script = scripts[i]; 2262 var script = scripts[i];
2257 var found = false; 2263 var found = false;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 2315
2310 2316
2311 DebugCommandProcessor.prototype.changeLiveRequest_ = function( 2317 DebugCommandProcessor.prototype.changeLiveRequest_ = function(
2312 request, response) { 2318 request, response) {
2313 if (!request.arguments) { 2319 if (!request.arguments) {
2314 return response.failed('Missing arguments'); 2320 return response.failed('Missing arguments');
2315 } 2321 }
2316 var script_id = request.arguments.script_id; 2322 var script_id = request.arguments.script_id;
2317 var preview_only = !!request.arguments.preview_only; 2323 var preview_only = !!request.arguments.preview_only;
2318 2324
2319 var scripts = %DebugGetLoadedScripts(); 2325 var scripts = GetLoadedScripts();
2320 2326
2321 var the_script = null; 2327 var the_script = null;
2322 for (var i = 0; i < scripts.length; i++) { 2328 for (var i = 0; i < scripts.length; i++) {
2323 if (scripts[i].id == script_id) { 2329 if (scripts[i].id == script_id) {
2324 the_script = scripts[i]; 2330 the_script = scripts[i];
2325 } 2331 }
2326 } 2332 }
2327 if (!the_script) { 2333 if (!the_script) {
2328 response.failed('Script not found'); 2334 response.failed('Script not found');
2329 return; 2335 return;
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
2562 2568
2563 default: 2569 default:
2564 json = null; 2570 json = null;
2565 } 2571 }
2566 return json; 2572 return json;
2567 } 2573 }
2568 2574
2569 Debug.TestApi = { 2575 Debug.TestApi = {
2570 CommandProcessorResolveValue: DebugCommandProcessor.resolveValue_ 2576 CommandProcessorResolveValue: DebugCommandProcessor.resolveValue_
2571 }; 2577 };
OLDNEW
« no previous file with comments | « src/debug.cc ('k') | test/mjsunit/debug-scripts-request.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698