Commit 5ba9362b authored by Benedikt Meurer's avatar Benedikt Meurer Committed by Commit Bot

[inspector] Report Wasm modules upon "Debugger.enable".

When opening DevTools, make sure that Wasm modules properly show up,
aka are reported via "Debugger.scriptParsed" events. Previously these
scripts corresponding to Wasm modules had been filtered out explicitly
(accidentally).

Bug: chromium:1032042
Tbr: clemensb@chromium.org
Change-Id: Id5e49616a4959c9ca611dbae6f1a4e9a47413ea6
Doc: https://bit.ly/wasm-dbg-stories-2019#bookmark=id.drrsobk5mo0p
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980588
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: 's avatarMathias Bynens <mathias@chromium.org>
Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#65560}
parent 60d57f3a
......@@ -9806,11 +9806,13 @@ void debug::GetLoadedScripts(v8::Isolate* v8_isolate,
i::Script::Iterator iterator(isolate);
for (i::Script script = iterator.Next(); !script.is_null();
script = iterator.Next()) {
if (!script.IsUserJavaScript()) continue;
if (script.HasValidSource()) {
i::HandleScope handle_scope(isolate);
i::Handle<i::Script> script_handle(script, isolate);
scripts.Append(ToApiHandle<Script>(script_handle));
if (script.type() == i::Script::TYPE_NORMAL ||
script.type() == i::Script::TYPE_WASM) {
if (script.HasValidSource()) {
i::HandleScope handle_scope(isolate);
i::Handle<i::Script> script_handle(script, isolate);
scripts.Append(ToApiHandle<Script>(script_handle));
}
}
}
}
......
......@@ -2714,6 +2714,7 @@ Handle<Script> CreateWasmScript(Isolate* isolate,
Vector<const char> source_url) {
Handle<Script> script =
isolate->factory()->NewScript(isolate->factory()->empty_string());
script->set_compilation_state(Script::COMPILATION_STATE_COMPILED);
script->set_context_data(isolate->native_context()->debug_context_id());
script->set_type(Script::TYPE_WASM);
......
......@@ -128,6 +128,7 @@
# TODO(v8:7777): Re-enable once wasm is supported in jitless mode.
'debug/wasm/*': [SKIP],
'regress/regress-crbug-840288': [SKIP],
'regress/regress-crbug-1032042': [SKIP],
'wasm-*': [SKIP],
}], # lite_mode or variant == jitless
......
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
load("test/mjsunit/wasm/wasm-module-builder.js");
const Debug = new DebugWrapper();
Debug.enable();
// Record the ID of the first script reported. This is to ignore
// the (now deprecated) fake scripts that are generated for every
// Wasm module.
let scriptId;
Debug.setListener((eventType, execState, eventData, data) => {
assertEquals(Debug.DebugEvent.AfterCompile, eventType);
if (scriptId === undefined) scriptId = eventData.scriptId;
});
// Create a simple Wasm script, which will be caught by the event listener.
const builder = new WasmModuleBuilder();
builder.addFunction('sub', kSig_i_ii)
// input is 2 args of type int and output is int
.addBody([
kExprLocalGet, 0, // local.get i0
kExprLocalGet, 1, // local.get i1
kExprI32Sub]) // i32.sub i0 i1
.exportFunc();
const instance = builder.instantiate();
// By now we should have recorded the ID of the Wasm script above.
assertNotEquals(undefined, scriptId);
// Disable and re-enable the Debugger and collect the reported
// script IDs.
const scriptIds = new Set();
Debug.disable();
Debug.setListener((eventType, execState, eventData, data) => {
assertEquals(Debug.DebugEvent.AfterCompile, eventType);
scriptIds.add(eventData.scriptId);
});
Debug.enable();
// Make sure the Wasm script was reported.
assertTrue(scriptIds.has(scriptId));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment