--- old/src/share/vm/oops/oopsHierarchy.hpp 2016-04-06 17:17:40.938383862 +0200 +++ new/src/share/vm/oops/oopsHierarchy.hpp 2016-04-06 17:17:40.814383861 +0200 @@ -104,6 +104,12 @@ 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(); } @@ -112,6 +118,8 @@ // 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; }