[wasm] Fix check for committing over the global limit
If we generate more code than allowed by the --wasm-max-code-space flag, the {WasmCodeManager::Commit} method will fail (via fatal error). The DCHECK that was placed before that call checked for a related condition though, and failed before the {Commit} method could fail. By moving it after the call, we fix this issue. Adding a test case for this seems to be involved, since that test would crash the whole process (because of the fatal error). So it would have to be a unittest such that we can use ASSERT_DEATH_IF_SUPPORTED. In unittests though we don't yet have the infrastructure to create a NativeModule (needed for the WasmCodeAllocator). Alternatively we could add special testing methods (and a constructor) to the WasmCodeAllocator, but I do not consider this worth the effort for this little fix. R=thibaudm@chromium.org Bug: chromium:1124646 Change-Id: Ief09dfbd0a5b0b040fe9cf8a34e458d1d01dfacc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390754 Auto-Submit: Clemens Backes <clemensb@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#69723}
This commit is contained in:
parent
56a54c0f45
commit
1a3cc6432d
@ -669,13 +669,13 @@ Vector<byte> WasmCodeAllocator::AllocateForCodeInRegion(
|
||||
// start is already committed (or we start at the beginning of a page).
|
||||
// The end needs to be committed all through the end of the page.
|
||||
if (commit_start < commit_end) {
|
||||
committed_code_space_.fetch_add(commit_end - commit_start);
|
||||
// Committed code cannot grow bigger than maximum code space size.
|
||||
DCHECK_LE(committed_code_space_.load(), FLAG_wasm_max_code_space * MB);
|
||||
for (base::AddressRegion split_range : SplitRangeByReservationsIfNeeded(
|
||||
{commit_start, commit_end - commit_start}, owned_code_space_)) {
|
||||
code_manager_->Commit(split_range);
|
||||
}
|
||||
committed_code_space_.fetch_add(commit_end - commit_start);
|
||||
// Committed code cannot grow bigger than maximum code space size.
|
||||
DCHECK_LE(committed_code_space_.load(), FLAG_wasm_max_code_space * MB);
|
||||
}
|
||||
DCHECK(IsAligned(code_space.begin(), kCodeAlignment));
|
||||
allocated_code_space_.Merge(code_space);
|
||||
|
Loading…
Reference in New Issue
Block a user