Mercurial > hg > truffle
diff src/share/vm/utilities/accessFlags.cpp @ 20804:7848fc12602b
Merge with jdk8u40-b25
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Tue, 07 Apr 2015 14:58:49 +0200 |
parents | 52b4284cb496 b12a2a9b05ca |
children |
line wrap: on
line diff
--- a/src/share/vm/utilities/accessFlags.cpp Tue Apr 07 11:20:51 2015 +0200 +++ b/src/share/vm/utilities/accessFlags.cpp Tue Apr 07 14:58:49 2015 +0200 @@ -62,6 +62,21 @@ } while(f != old_flags); } +// Returns true iff this thread succeeded setting the bit. +bool AccessFlags::atomic_set_one_bit(jint bit) { + // Atomically update the flags with the bit given + jint old_flags, new_flags, f; + bool is_setting_bit = false; + do { + old_flags = _flags; + new_flags = old_flags | bit; + is_setting_bit = old_flags != new_flags; + f = Atomic::cmpxchg(new_flags, &_flags, old_flags); + } while(f != old_flags); + + return is_setting_bit; +} + #if !defined(PRODUCT) || INCLUDE_JVMTI void AccessFlags::print_on(outputStream* st) const {