• Clemens Hammacher's avatar
    [wasm] Use atomic instead of mutex for error checking · bed304a3
    Clemens Hammacher authored
    Different threads check this flag multiple times per function, and
    currently all of them synchronize on a single mutex. It's not even a
    reader-writer-lock, hence they might block each other just for checking
    whether an error has been set.
    Threads don't rely on precise information here, this is just a check to
    abort early if compilation failed anyway. Also in the current
    implementation, no ordering is guaranteed on this error field.
    
    We can avoid taking the mutex by turning the field into an atomic
    pointer. It will be updated at most once, from nullptr to the first
    error detected. To check whether an error is set, we can even use
    relaxed memory order, since we won't look into the object behind the
    pointer.
    
    R=titzer@chromium.org
    
    Bug: v8:8423
    Change-Id: I71354c8d463a57c219eb21e53136556ae787ebd4
    Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
    Reviewed-on: https://chromium-review.googlesource.com/c/1375661
    Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
    Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#58220}
    bed304a3
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...