< prev index next >
src/share/vm/oops/oopsHierarchy.hpp
Print this page
rev 10742 : Make fields used in lock-free algorithms volatile
*** 102,119 ****
--- 102,127 ----
bool operator==(const oop o) const { return obj() == o.obj(); }
bool operator==(void *p) const { return obj() == p; }
bool operator!=(const volatile oop o) const { return obj() != o.obj(); }
bool operator!=(void *p) const { return obj() != p; }
+ oopDesc* operator->() const volatile { return obj(); }
+ bool operator==(const oop o) const volatile { return obj() == o.obj(); }
+ bool operator==(void *p) const volatile { return obj() == p; }
+ bool operator!=(const volatile oop o) const volatile { return obj() != o.obj(); }
+ bool operator!=(void *p) const volatile { return obj() != p; }
+
bool operator<(oop o) const { return obj() < o.obj(); }
bool operator>(oop o) const { return obj() > o.obj(); }
bool operator<=(oop o) const { return obj() <= o.obj(); }
bool operator>=(oop o) const { return obj() >= o.obj(); }
bool operator!() const { return !obj(); }
// Assignment
oop& operator=(const oop& o) { _o = o.obj(); return *this; }
+ oop& operator=(void *o) { _o = (oopDesc*)o; return *this; }
+ oop& operator=(const volatile oop& o) { _o = o.obj(); return *this; }
volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; }
volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; }
// Explict user conversions
operator void* () const { return (void *)obj(); }
< prev index next >