| Index: src/debug/debug.js
 | 
| diff --git a/src/debug/debug.js b/src/debug/debug.js
 | 
| index cbd4dd21c75bf0e59ba36f12b06a756e3c1e767e..acde89c5a84f4bc158b353037116de7b01e65701 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 UNDEFINED;
 | 
| +};
 | 
| +
 | 
| +
 | 
|  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;
 | 
| 
 |