[wasm] Fix code offset after module cache hit
If the module cache was hit, we didn't set the code offset in the decoded module. Hence it was reported as 0 to the DevTools frontend, leading to subsequent errors. Note that this error can only happen if multiple isolates share the same module, which we cannot easily test in v8. Sharing within a single isolate is implemented via the script cache, so we won't report another script via CDP. R=thibaudm@chromium.org Bug: chromium:1114143 Change-Id: I3218a3b12cf5be09d685e3f371f858ab799cef80 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2519560 Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#70967}
This commit is contained in:
parent
93a8c4c9d7
commit
c6c86944ec
@ -9964,6 +9964,8 @@ int debug::WasmScript::CodeOffset() const {
|
|||||||
i::wasm::NativeModule* native_module = script->wasm_native_module();
|
i::wasm::NativeModule* native_module = script->wasm_native_module();
|
||||||
const i::wasm::WasmModule* module = native_module->module();
|
const i::wasm::WasmModule* module = native_module->module();
|
||||||
|
|
||||||
|
// The code offset must have been initialized, and it cannot be zero.
|
||||||
|
DCHECK_NE(0, module->code.offset());
|
||||||
return module->code.offset();
|
return module->code.offset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2479,6 +2479,8 @@ bool AsyncStreamingProcessor::ProcessCodeSectionHeader(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decoder_.set_code_section(offset, static_cast<uint32_t>(code_section_length));
|
||||||
|
|
||||||
prefix_hash_ = base::hash_combine(prefix_hash_,
|
prefix_hash_ = base::hash_combine(prefix_hash_,
|
||||||
static_cast<uint32_t>(code_section_length));
|
static_cast<uint32_t>(code_section_length));
|
||||||
if (!wasm_engine_->GetStreamingCompilationOwnership(prefix_hash_)) {
|
if (!wasm_engine_->GetStreamingCompilationOwnership(prefix_hash_)) {
|
||||||
@ -2500,7 +2502,6 @@ bool AsyncStreamingProcessor::ProcessCodeSectionHeader(
|
|||||||
job_->DoImmediately<AsyncCompileJob::PrepareAndStartCompile>(
|
job_->DoImmediately<AsyncCompileJob::PrepareAndStartCompile>(
|
||||||
decoder_.shared_module(), false, code_size_estimate);
|
decoder_.shared_module(), false, code_size_estimate);
|
||||||
|
|
||||||
decoder_.set_code_section(offset, static_cast<uint32_t>(code_section_length));
|
|
||||||
auto* compilation_state = Impl(job_->native_module_->compilation_state());
|
auto* compilation_state = Impl(job_->native_module_->compilation_state());
|
||||||
compilation_state->SetWireBytesStorage(std::move(wire_bytes_storage));
|
compilation_state->SetWireBytesStorage(std::move(wire_bytes_storage));
|
||||||
DCHECK_EQ(job_->native_module_->module()->origin, kWasmOrigin);
|
DCHECK_EQ(job_->native_module_->module()->origin, kWasmOrigin);
|
||||||
|
Loading…
Reference in New Issue
Block a user