This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Heh, I wrote that code (and comment). :-)> In the mean time you can work around it by using a mutex around the > thread state modification instead of using cmpxchg on it. Or if your > platform is ARMv6 or higher then you won't get those spurious false > negatives.
Ah, OK, that's interesting: it sounds like you understand under what circumstances it may fail "spuriously".
What are these?On a pre-ARMv6 processor
Similar "spurious" failures can happen on ARMv6 processors.
ARMv6 cpus don't have atomic operations either. They have ldrex/strex, where the latter will fail if another CPU modifies the memory *or* a context switch occurs.
inline static bool
compare_and_swap(volatile obj_addr_t *addr,
obj_addr_t old,
obj_addr_t new_val)
{
return __sync_bool_compare_and_swap(addr, old, new_val);
}| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |