Chromium Code Reviews| Index: src/debug/debug.js |
| diff --git a/src/debug/debug.js b/src/debug/debug.js |
| index cbd4dd21c75bf0e59ba36f12b06a756e3c1e767e..f55e120b76dbb4ed0b5625c8271d938fc381c1df 100644 |
| --- a/src/debug/debug.js |
| +++ b/src/debug/debug.js |
| @@ -66,7 +66,8 @@ Debug.StepAction = { StepOut: 0, |
| // The different types of scripts matching enum ScriptType in objects.h. |
| Debug.ScriptType = { Native: 0, |
| Extension: 1, |
| - Normal: 2 }; |
| + Normal: 2, |
| + Wasm: 3}; |
| // The different types of script compilations matching enum |
| // Script::CompilationType in objects.h. |
| @@ -487,7 +488,7 @@ Debug.findScript = function(func_or_script_name) { |
| if (IS_FUNCTION(func_or_script_name)) { |
| return %FunctionGetScript(func_or_script_name); |
| } else if (IS_REGEXP(func_or_script_name)) { |
| - var scripts = Debug.scripts(); |
| + var scripts = this.scripts(); |
| var last_result = null; |
| var result_count = 0; |
| for (var i in scripts) { |
| @@ -633,15 +634,12 @@ Debug.setBreakPointByScriptIdAndPosition = function(script_id, position, |
| if (!enabled) { |
| break_point.disable(); |
| } |
| - var scripts = this.scripts(); |
| - var position_alignment = IS_UNDEFINED(opt_position_alignment) |
| - ? Debug.BreakPositionAlignment.Statement : opt_position_alignment; |
| - for (var i = 0; i < scripts.length; i++) { |
| - if (script_id == scripts[i].id) { |
| - break_point.actual_position = %SetScriptBreakPoint(scripts[i], position, |
| - position_alignment, break_point); |
| - break; |
| - } |
| + var script = scriptById(script_id); |
| + if (script) { |
| + var position_alignment = IS_UNDEFINED(opt_position_alignment) |
| + ? Debug.BreakPositionAlignment.Statement : opt_position_alignment; |
| + break_point.actual_position = %SetScriptBreakPoint(script, position, |
| + position_alignment, break_point); |
| } |
| return break_point; |
| }; |
| @@ -858,10 +856,31 @@ Debug.scripts = function() { |
| }; |
| +// Get a specific script currently loaded. This is based on scanning the heap. |
| +// TODO(clemensh): Create a runtime function for this. |
| +function scriptById(scriptId) { |
| + var scripts = Debug.scripts(); |
| + for (var script of scripts) { |
| + if (script.id == scriptId) return script; |
| + } |
| + return null; |
|
ahaas
2016/06/29 14:27:27
nit: wouldn't it be more javascripty to return und
titzer
2016/06/30 08:12:51
Done.
|
| +}; |
| + |
| + |
| Debug.debuggerFlags = function() { |
| return debugger_flags; |
| }; |
| +Debug.getWasmFunctionOffsetTable = function(scriptId) { |
| + var script = scriptById(scriptId); |
| + return script ? %GetWasmFunctionOffsetTable(script) : UNDEFINED; |
| +} |
| + |
| +Debug.disassembleWasmFunction = function(scriptId) { |
| + var script = scriptById(scriptId); |
| + return script ? %DisassembleWasmFunction(script) : UNDEFINED; |
| +} |
| + |
| Debug.MakeMirror = MakeMirror; |
| function MakeExecutionState(break_id) { |
| @@ -2155,7 +2174,7 @@ DebugCommandProcessor.prototype.scriptsRequest_ = function(request, response) { |
| } |
| // Collect all scripts in the heap. |
| - var scripts = %DebugGetLoadedScripts(); |
| + var scripts = Debug.scripts(); |
| response.body = []; |
| @@ -2205,14 +2224,7 @@ DebugCommandProcessor.prototype.changeLiveRequest_ = function( |
| var script_id = request.arguments.script_id; |
| var preview_only = !!request.arguments.preview_only; |
| - var scripts = %DebugGetLoadedScripts(); |
| - |
| - var the_script = null; |
| - for (var i = 0; i < scripts.length; i++) { |
| - if (scripts[i].id == script_id) { |
| - the_script = scripts[i]; |
| - } |
| - } |
| + var the_script = scriptById(script_id); |
| if (!the_script) { |
| response.failed('Script not found'); |
| return; |