diff --git a/src/hotspot/share/oops/oopsHierarchy.hpp b/src/hotspot/share/oops/oopsHierarchy.hpp index a380475..377f41a 100644 --- a/src/hotspot/share/oops/oopsHierarchy.hpp +++ b/src/hotspot/share/oops/oopsHierarchy.hpp @@ -103,52 +103,43 @@ class oop { // friend class markOop; public: - void set_obj(const void* p) { - raw_set_obj(p); - CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) register_oop();) - } - void raw_set_obj(const void* p) { _o = (oopDesc*)p; } - - oop() { set_obj(NULL); } - oop(const oop& o) { set_obj(o.obj()); } - oop(const volatile oop& o) { set_obj(o.obj()); } - oop(const void* p) { set_obj(p); } - ~oop() { + oop() : _o(NULL) { CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) register_oop();) } + oop(const oop& o) : _o(o._o) { CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) register_oop();) } + oop(const volatile oop& o) : _o(o._o) { CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) register_oop();) } + oop(const void* p) : _o((oopDesc*)p) { CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) register_oop();) } + ~oop() { CHECK_UNHANDLED_OOPS_ONLY(if (CheckUnhandledOops) unregister_oop();) } - oopDesc* obj() const volatile { return _o; } + oopDesc* obj() const { return _o; } // General access - oopDesc* operator->() const { return obj(); } - 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 { return _o; } + bool operator==(const oop o) const { return _o == o._o; } + bool operator==(void *p) const { return _o == p; } + bool operator!=(const oop o) const { return _o != o._o; } + bool operator!=(void *p) const { return _o != p; } // Assignment - oop& operator=(const 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; } + oop& operator=(const oop& o) { _o = o._o; return *this; } + volatile oop& operator=(const oop& o) volatile { _o = o._o; return *this; } + volatile oop& operator=(const volatile oop& o) volatile { _o = o._o; return *this; } // Explict user conversions - operator void* () const { return (void *)obj(); } -#ifndef SOLARIS - operator void* () const volatile { return (void *)obj(); } -#endif - operator HeapWord* () const { return (HeapWord*)obj(); } - operator oopDesc* () const volatile { return obj(); } - operator intptr_t* () const { return (intptr_t*)obj(); } - operator PromotedObject* () const { return (PromotedObject*)obj(); } - operator markOop () const volatile { return markOop(obj()); } - operator address () const { return (address)obj(); } + operator void* () const { return (void *)_o; } + operator HeapWord* () const { return (HeapWord*)_o; } + operator oopDesc* () const { return _o; } + operator intptr_t* () const { return (intptr_t*)_o; } + operator PromotedObject* () const { return (PromotedObject*)_o; } + operator markOop () const { return markOop(_o); } + operator address () const { return (address)_o; } // from javaCalls.cpp - operator jobject () const { return (jobject)obj(); } + operator jobject () const { return (jobject)_o; } // from parNewGeneration and other things that want to get to the end of // an oop for stuff (like ObjArrayKlass.cpp) - operator oop* () const { return (oop *)obj(); } + operator oop* () const { return (oop *)_o; } }; template<>