-
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: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#58220}
bed304a3