| OLD | NEW | 
|     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 (function (global, utils) { |     5 (function (global, utils) { | 
|     6 "use strict"; |     6 "use strict"; | 
|     7  |     7  | 
|     8 // ---------------------------------------------------------------------------- |     8 // ---------------------------------------------------------------------------- | 
|     9 // Imports |     9 // Imports | 
|    10  |    10  | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    59  |    59  | 
|    60 // The different types of steps. |    60 // The different types of steps. | 
|    61 Debug.StepAction = { StepOut: 0, |    61 Debug.StepAction = { StepOut: 0, | 
|    62                      StepNext: 1, |    62                      StepNext: 1, | 
|    63                      StepIn: 2, |    63                      StepIn: 2, | 
|    64                      StepFrame: 3 }; |    64                      StepFrame: 3 }; | 
|    65  |    65  | 
|    66 // The different types of scripts matching enum ScriptType in objects.h. |    66 // The different types of scripts matching enum ScriptType in objects.h. | 
|    67 Debug.ScriptType = { Native: 0, |    67 Debug.ScriptType = { Native: 0, | 
|    68                      Extension: 1, |    68                      Extension: 1, | 
|    69                      Normal: 2 }; |    69                      Normal: 2, | 
 |    70                      Wasm: 3}; | 
|    70  |    71  | 
|    71 // The different types of script compilations matching enum |    72 // The different types of script compilations matching enum | 
|    72 // Script::CompilationType in objects.h. |    73 // Script::CompilationType in objects.h. | 
|    73 Debug.ScriptCompilationType = { Host: 0, |    74 Debug.ScriptCompilationType = { Host: 0, | 
|    74                                 Eval: 1, |    75                                 Eval: 1, | 
|    75                                 JSON: 2 }; |    76                                 JSON: 2 }; | 
|    76  |    77  | 
|    77 // The different script break point types. |    78 // The different script break point types. | 
|    78 Debug.ScriptBreakPointType = { ScriptId: 0, |    79 Debug.ScriptBreakPointType = { ScriptId: 0, | 
|    79                                ScriptName: 1, |    80                                ScriptName: 1, | 
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   480  |   481  | 
|   481 // Returns a Script object. If the parameter is a function the return value |   482 // Returns a Script object. If the parameter is a function the return value | 
|   482 // is the script in which the function is defined. If the parameter is a string |   483 // is the script in which the function is defined. If the parameter is a string | 
|   483 // the return value is the script for which the script name has that string |   484 // the return value is the script for which the script name has that string | 
|   484 // value.  If it is a regexp and there is a unique script whose name matches |   485 // value.  If it is a regexp and there is a unique script whose name matches | 
|   485 // we return that, otherwise undefined. |   486 // we return that, otherwise undefined. | 
|   486 Debug.findScript = function(func_or_script_name) { |   487 Debug.findScript = function(func_or_script_name) { | 
|   487   if (IS_FUNCTION(func_or_script_name)) { |   488   if (IS_FUNCTION(func_or_script_name)) { | 
|   488     return %FunctionGetScript(func_or_script_name); |   489     return %FunctionGetScript(func_or_script_name); | 
|   489   } else if (IS_REGEXP(func_or_script_name)) { |   490   } else if (IS_REGEXP(func_or_script_name)) { | 
|   490     var scripts = Debug.scripts(); |   491     var scripts = this.scripts(); | 
|   491     var last_result = null; |   492     var last_result = null; | 
|   492     var result_count = 0; |   493     var result_count = 0; | 
|   493     for (var i in scripts) { |   494     for (var i in scripts) { | 
|   494       var script = scripts[i]; |   495       var script = scripts[i]; | 
|   495       if (func_or_script_name.test(script.name)) { |   496       if (func_or_script_name.test(script.name)) { | 
|   496         last_result = script; |   497         last_result = script; | 
|   497         result_count++; |   498         result_count++; | 
|   498       } |   499       } | 
|   499     } |   500     } | 
|   500     // Return the unique script matching the regexp.  If there are more |   501     // Return the unique script matching the regexp.  If there are more | 
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   626  |   627  | 
|   627 Debug.setBreakPointByScriptIdAndPosition = function(script_id, position, |   628 Debug.setBreakPointByScriptIdAndPosition = function(script_id, position, | 
|   628                                                     condition, enabled, |   629                                                     condition, enabled, | 
|   629                                                     opt_position_alignment) |   630                                                     opt_position_alignment) | 
|   630 { |   631 { | 
|   631   var break_point = MakeBreakPoint(position); |   632   var break_point = MakeBreakPoint(position); | 
|   632   break_point.setCondition(condition); |   633   break_point.setCondition(condition); | 
|   633   if (!enabled) { |   634   if (!enabled) { | 
|   634     break_point.disable(); |   635     break_point.disable(); | 
|   635   } |   636   } | 
|   636   var scripts = this.scripts(); |   637   var script = scriptById(script_id); | 
|   637   var position_alignment = IS_UNDEFINED(opt_position_alignment) |   638   if (script) { | 
|   638       ? Debug.BreakPositionAlignment.Statement : opt_position_alignment; |   639     var position_alignment = IS_UNDEFINED(opt_position_alignment) | 
|   639   for (var i = 0; i < scripts.length; i++) { |   640         ? Debug.BreakPositionAlignment.Statement : opt_position_alignment; | 
|   640     if (script_id == scripts[i].id) { |   641     break_point.actual_position = %SetScriptBreakPoint(script, position, | 
|   641       break_point.actual_position = %SetScriptBreakPoint(scripts[i], position, |   642         position_alignment, break_point); | 
|   642           position_alignment, break_point); |  | 
|   643       break; |  | 
|   644     } |  | 
|   645   } |   643   } | 
|   646   return break_point; |   644   return break_point; | 
|   647 }; |   645 }; | 
|   648  |   646  | 
|   649  |   647  | 
|   650 Debug.enableBreakPoint = function(break_point_number) { |   648 Debug.enableBreakPoint = function(break_point_number) { | 
|   651   var break_point = this.findBreakPoint(break_point_number, false); |   649   var break_point = this.findBreakPoint(break_point_number, false); | 
|   652   // Only enable if the breakpoint hasn't been deleted: |   650   // Only enable if the breakpoint hasn't been deleted: | 
|   653   if (break_point) { |   651   if (break_point) { | 
|   654     break_point.enable(); |   652     break_point.enable(); | 
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   851  |   849  | 
|   852  |   850  | 
|   853 // Get all the scripts currently loaded. Locating all the scripts is based on |   851 // Get all the scripts currently loaded. Locating all the scripts is based on | 
|   854 // scanning the heap. |   852 // scanning the heap. | 
|   855 Debug.scripts = function() { |   853 Debug.scripts = function() { | 
|   856   // Collect all scripts in the heap. |   854   // Collect all scripts in the heap. | 
|   857   return %DebugGetLoadedScripts(); |   855   return %DebugGetLoadedScripts(); | 
|   858 }; |   856 }; | 
|   859  |   857  | 
|   860  |   858  | 
 |   859 // Get a specific script currently loaded. This is based on scanning the heap. | 
 |   860 // TODO(clemensh): Create a runtime function for this. | 
 |   861 function scriptById(scriptId) { | 
 |   862   var scripts = Debug.scripts(); | 
 |   863   for (var script of scripts) { | 
 |   864     if (script.id == scriptId) return script; | 
 |   865   } | 
 |   866   return UNDEFINED; | 
 |   867 }; | 
 |   868  | 
 |   869  | 
|   861 Debug.debuggerFlags = function() { |   870 Debug.debuggerFlags = function() { | 
|   862   return debugger_flags; |   871   return debugger_flags; | 
|   863 }; |   872 }; | 
|   864  |   873  | 
 |   874 Debug.getWasmFunctionOffsetTable = function(scriptId) { | 
 |   875   var script = scriptById(scriptId); | 
 |   876   return script ? %GetWasmFunctionOffsetTable(script) : UNDEFINED; | 
 |   877 } | 
 |   878  | 
 |   879 Debug.disassembleWasmFunction = function(scriptId) { | 
 |   880   var script = scriptById(scriptId); | 
 |   881   return script ? %DisassembleWasmFunction(script) : UNDEFINED; | 
 |   882 } | 
 |   883  | 
|   865 Debug.MakeMirror = MakeMirror; |   884 Debug.MakeMirror = MakeMirror; | 
|   866  |   885  | 
|   867 function MakeExecutionState(break_id) { |   886 function MakeExecutionState(break_id) { | 
|   868   return new ExecutionState(break_id); |   887   return new ExecutionState(break_id); | 
|   869 } |   888 } | 
|   870  |   889  | 
|   871 function ExecutionState(break_id) { |   890 function ExecutionState(break_id) { | 
|   872   this.break_id = break_id; |   891   this.break_id = break_id; | 
|   873   this.selected_frame = 0; |   892   this.selected_frame = 0; | 
|   874 } |   893 } | 
| (...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2148     if (!IS_UNDEFINED(request.arguments.filter)) { |  2167     if (!IS_UNDEFINED(request.arguments.filter)) { | 
|  2149       var num = TO_NUMBER(request.arguments.filter); |  2168       var num = TO_NUMBER(request.arguments.filter); | 
|  2150       if (!IsNaN(num)) { |  2169       if (!IsNaN(num)) { | 
|  2151         filterNum = num; |  2170         filterNum = num; | 
|  2152       } |  2171       } | 
|  2153       filterStr = request.arguments.filter; |  2172       filterStr = request.arguments.filter; | 
|  2154     } |  2173     } | 
|  2155   } |  2174   } | 
|  2156  |  2175  | 
|  2157   // Collect all scripts in the heap. |  2176   // Collect all scripts in the heap. | 
|  2158   var scripts = %DebugGetLoadedScripts(); |  2177   var scripts = Debug.scripts(); | 
|  2159  |  2178  | 
|  2160   response.body = []; |  2179   response.body = []; | 
|  2161  |  2180  | 
|  2162   for (var i = 0; i < scripts.length; i++) { |  2181   for (var i = 0; i < scripts.length; i++) { | 
|  2163     if (idsToInclude && !idsToInclude[scripts[i].id]) { |  2182     if (idsToInclude && !idsToInclude[scripts[i].id]) { | 
|  2164       continue; |  2183       continue; | 
|  2165     } |  2184     } | 
|  2166     if (filterStr || filterNum) { |  2185     if (filterStr || filterNum) { | 
|  2167       var script = scripts[i]; |  2186       var script = scripts[i]; | 
|  2168       var found = false; |  2187       var found = false; | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
|  2198  |  2217  | 
|  2199  |  2218  | 
|  2200 DebugCommandProcessor.prototype.changeLiveRequest_ = function( |  2219 DebugCommandProcessor.prototype.changeLiveRequest_ = function( | 
|  2201     request, response) { |  2220     request, response) { | 
|  2202   if (!request.arguments) { |  2221   if (!request.arguments) { | 
|  2203     return response.failed('Missing arguments'); |  2222     return response.failed('Missing arguments'); | 
|  2204   } |  2223   } | 
|  2205   var script_id = request.arguments.script_id; |  2224   var script_id = request.arguments.script_id; | 
|  2206   var preview_only = !!request.arguments.preview_only; |  2225   var preview_only = !!request.arguments.preview_only; | 
|  2207  |  2226  | 
|  2208   var scripts = %DebugGetLoadedScripts(); |  2227   var the_script = scriptById(script_id); | 
|  2209  |  | 
|  2210   var the_script = null; |  | 
|  2211   for (var i = 0; i < scripts.length; i++) { |  | 
|  2212     if (scripts[i].id == script_id) { |  | 
|  2213       the_script = scripts[i]; |  | 
|  2214     } |  | 
|  2215   } |  | 
|  2216   if (!the_script) { |  2228   if (!the_script) { | 
|  2217     response.failed('Script not found'); |  2229     response.failed('Script not found'); | 
|  2218     return; |  2230     return; | 
|  2219   } |  2231   } | 
|  2220  |  2232  | 
|  2221   var change_log = new GlobalArray(); |  2233   var change_log = new GlobalArray(); | 
|  2222  |  2234  | 
|  2223   if (!IS_STRING(request.arguments.new_source)) { |  2235   if (!IS_STRING(request.arguments.new_source)) { | 
|  2224     throw "new_source argument expected"; |  2236     throw "new_source argument expected"; | 
|  2225   } |  2237   } | 
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2476   "IsBreakPointTriggered", IsBreakPointTriggered, |  2488   "IsBreakPointTriggered", IsBreakPointTriggered, | 
|  2477   "UpdateScriptBreakPoints", UpdateScriptBreakPoints, |  2489   "UpdateScriptBreakPoints", UpdateScriptBreakPoints, | 
|  2478 ]); |  2490 ]); | 
|  2479  |  2491  | 
|  2480 // Export to liveedit.js |  2492 // Export to liveedit.js | 
|  2481 utils.Export(function(to) { |  2493 utils.Export(function(to) { | 
|  2482   to.GetScriptBreakPoints = GetScriptBreakPoints; |  2494   to.GetScriptBreakPoints = GetScriptBreakPoints; | 
|  2483 }); |  2495 }); | 
|  2484  |  2496  | 
|  2485 }) |  2497 }) | 
| OLD | NEW |