[wasm][debug] Do not install debug code when tiered up
If the debugger is disabled for an isolate, we first remove all breakpoints for that isolate, and then tier up the module (if there is no other isolate that keeps it tiered down). During the first step, functions might get recompiled since the set breakpoints change. This is not needed in case we will tier-up the module afterwards anyway. It also triggers a DCHECK if we reinstall debugging code even though the module is already marked "tiered up". This CL avoids the installation of debugging if the module is not tiered down, and also slightly modified the condition for installing new code when tiered-up (to allow overwriting debugging code with non-debugging code even if it's the same tier). R=thibaudm@chromium.org Bug: chromium:1228628 Change-Id: I83828d4186e299f779a858006eafa3dbc7966c35 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3026707 Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#75722}
This commit is contained in:
parent
a3b24ecc51
commit
dc318df364
@ -1216,8 +1216,10 @@ WasmCode* NativeModule::PublishCodeLocked(
|
||||
(tiering_state_ == kTieredDown
|
||||
// Tiered down: Install breakpoints over normal debug code.
|
||||
? prior_code->for_debugging() <= code->for_debugging()
|
||||
// Tiered up: Install if the tier is higher than before.
|
||||
: prior_code->tier() < code->tier()));
|
||||
// Tiered up: Install if the tier is higher than before or we
|
||||
// replace debugging code with non-debugging code.
|
||||
: (prior_code->tier() < code->tier() ||
|
||||
(prior_code->for_debugging() && !code->for_debugging()))));
|
||||
if (update_code_table) {
|
||||
code_table_[slot_idx] = code;
|
||||
if (prior_code) {
|
||||
@ -1246,7 +1248,9 @@ void NativeModule::ReinstallDebugCode(WasmCode* code) {
|
||||
DCHECK(!code->IsAnonymous());
|
||||
DCHECK_LE(module_->num_imported_functions, code->index());
|
||||
DCHECK_LT(code->index(), num_functions());
|
||||
DCHECK_EQ(kTieredDown, tiering_state_);
|
||||
|
||||
// If the module is tiered up by now, do not reinstall debug code.
|
||||
if (tiering_state_ != kTieredDown) return;
|
||||
|
||||
uint32_t slot_idx = declared_function_index(module(), code->index());
|
||||
if (WasmCode* prior_code = code_table_[slot_idx]) {
|
||||
|
Loading…
Reference in New Issue
Block a user