Commit dfd3c628 authored by Clemens Backes's avatar Clemens Backes Committed by Commit Bot

[wasm] Clean up callback triggering

A minor refactoring to the logic for triggering callbacks:
1. If compilation failed, do only trigger the kFailedCompilation event.
2. Use the TriggerCallbacks method also for triggering the
  kFailedCompilation event.

R=thibaudm@chromium.org

Bug: chromium:1101340
Change-Id: I3446d708d28068448e6eca3e637c9af673f5311d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332171Reviewed-by: 's avatarThibaud Michaud <thibaudm@chromium.org>
Commit-Queue: Clemens Backes <clemensb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#69215}
parent bb5d5352
...@@ -2849,6 +2849,12 @@ void CompilationStateImpl::TriggerCallbacks( ...@@ -2849,6 +2849,12 @@ void CompilationStateImpl::TriggerCallbacks(
} }
} }
if (compile_failed_.load(std::memory_order_relaxed)) {
// *Only* trigger the "failed" event.
triggered_events =
base::EnumSet<CompilationEvent>({CompilationEvent::kFailedCompilation});
}
if (triggered_events.empty()) return; if (triggered_events.empty()) return;
// Don't trigger past events again. // Don't trigger past events again.
...@@ -2858,7 +2864,9 @@ void CompilationStateImpl::TriggerCallbacks( ...@@ -2858,7 +2864,9 @@ void CompilationStateImpl::TriggerCallbacks(
triggered_events - CompilationEvent::kFinishedRecompilation; triggered_events - CompilationEvent::kFinishedRecompilation;
for (auto event : for (auto event :
{std::make_pair(CompilationEvent::kFinishedBaselineCompilation, {std::make_pair(CompilationEvent::kFailedCompilation,
"wasm.CompilationFailed"),
std::make_pair(CompilationEvent::kFinishedBaselineCompilation,
"wasm.BaselineFinished"), "wasm.BaselineFinished"),
std::make_pair(CompilationEvent::kFinishedTopTierCompilation, std::make_pair(CompilationEvent::kFinishedTopTierCompilation,
"wasm.TopTierFinished"), "wasm.TopTierFinished"),
...@@ -2957,11 +2965,7 @@ void CompilationStateImpl::SetError() { ...@@ -2957,11 +2965,7 @@ void CompilationStateImpl::SetError() {
} }
base::MutexGuard callbacks_guard(&callbacks_mutex_); base::MutexGuard callbacks_guard(&callbacks_mutex_);
for (auto& callback : callbacks_) { TriggerCallbacks();
callback(CompilationEvent::kFailedCompilation);
}
// No more callbacks after an error.
callbacks_.clear();
} }
namespace { namespace {
......
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