Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 16f1631

Browse files
aamcommit-bot@chromium.org
authored andcommitted
[vm/slot] Use seq_cst memory order for failure-branch of compare_exchange.
This fixes flutter engine test failure on Windows where it complained about invalid load memory order for failure branch(default=acq_rel) for this operation. acq_rel is not allowed for failed comparison test memory order(per https://en.cppreference.com/w/cpp/atomic/atomic/compare_exchange) TEST=flutter/engine runtime_unittests on Windows Change-Id: I59dd3aed04f483b2e2a82721e337b78b8e3190d3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175101 Reviewed-by: Ryan Macnak <rmacnak@google.com> Reviewed-by: Alexander Aprelev <aam@google.com> Commit-Queue: Alexander Aprelev <aam@google.com>
1 parent 4457de2 commit 16f1631

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

runtime/platform/atomic.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,18 @@ class AcqRelAtomic {
100100
bool compare_exchange_weak(
101101
T& expected, // NOLINT
102102
T desired,
103-
std::memory_order order = std::memory_order_acq_rel) {
104-
return value_.compare_exchange_weak(expected, desired, order, order);
103+
std::memory_order success_order = std::memory_order_acq_rel,
104+
std::memory_order failure_order = std::memory_order_seq_cst) {
105+
return value_.compare_exchange_weak(expected, desired, success_order,
106+
failure_order);
105107
}
106108
bool compare_exchange_strong(
107109
T& expected, // NOLINT
108110
T desired,
109-
std::memory_order order = std::memory_order_acq_rel) {
110-
return value_.compare_exchange_strong(expected, desired, order, order);
111+
std::memory_order success_order = std::memory_order_acq_rel,
112+
std::memory_order failure_order = std::memory_order_seq_cst) {
113+
return value_.compare_exchange_strong(expected, desired, success_order,
114+
failure_order);
111115
}
112116

113117
// Require explicit loads and stores.

0 commit comments

Comments
 (0)