< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahSharedVariables.hpp
Print this page
*** 72,90 ****
bool try_set() {
if (is_set()) {
return false;
}
! ShenandoahSharedValue old = Atomic::cmpxchg((ShenandoahSharedValue)SET, &value, (ShenandoahSharedValue)UNSET);
return old == UNSET; // success
}
bool try_unset() {
if (!is_set()) {
return false;
}
! ShenandoahSharedValue old = Atomic::cmpxchg((ShenandoahSharedValue)UNSET, &value, (ShenandoahSharedValue)SET);
return old == SET; // success
}
volatile ShenandoahSharedValue* addr_of() {
return &value;
--- 72,90 ----
bool try_set() {
if (is_set()) {
return false;
}
! ShenandoahSharedValue old = Atomic::cmpxchg(&value, (ShenandoahSharedValue)UNSET, (ShenandoahSharedValue)SET);
return old == UNSET; // success
}
bool try_unset() {
if (!is_set()) {
return false;
}
! ShenandoahSharedValue old = Atomic::cmpxchg(&value, (ShenandoahSharedValue)SET, (ShenandoahSharedValue)UNSET);
return old == SET; // success
}
volatile ShenandoahSharedValue* addr_of() {
return &value;
*** 123,133 ****
// already set
return;
}
ShenandoahSharedValue nv = ov | mask_val;
! if (Atomic::cmpxchg(nv, &value, ov) == ov) {
// successfully set
return;
}
}
}
--- 123,133 ----
// already set
return;
}
ShenandoahSharedValue nv = ov | mask_val;
! if (Atomic::cmpxchg(&value, ov, nv) == ov) {
// successfully set
return;
}
}
}
*** 141,151 ****
// already unset
return;
}
ShenandoahSharedValue nv = ov & ~mask_val;
! if (Atomic::cmpxchg(nv, &value, ov) == ov) {
// successfully unset
return;
}
}
}
--- 141,151 ----
// already unset
return;
}
ShenandoahSharedValue nv = ov & ~mask_val;
! if (Atomic::cmpxchg(&value, ov, nv) == ov) {
// successfully unset
return;
}
}
}
*** 219,229 ****
}
T cmpxchg(T new_value, T expected) {
assert (new_value >= 0, "sanity");
assert (new_value < (sizeof(ShenandoahSharedValue) * CHAR_MAX), "sanity");
! return (T)Atomic::cmpxchg((ShenandoahSharedValue)new_value, &value, (ShenandoahSharedValue)expected);
}
volatile ShenandoahSharedValue* addr_of() {
return &value;
}
--- 219,229 ----
}
T cmpxchg(T new_value, T expected) {
assert (new_value >= 0, "sanity");
assert (new_value < (sizeof(ShenandoahSharedValue) * CHAR_MAX), "sanity");
! return (T)Atomic::cmpxchg(&value, (ShenandoahSharedValue)expected, (ShenandoahSharedValue)new_value);
}
volatile ShenandoahSharedValue* addr_of() {
return &value;
}
< prev index next >