84 // friend class markOop; 85 public: 86 void set_obj(const void* p) { 87 raw_set_obj(p); 88 if (CheckUnhandledOops) register_oop(); 89 } 90 void raw_set_obj(const void* p) { _o = (oopDesc*)p; } 91 92 oop() { set_obj(NULL); } 93 oop(const oop& o) { set_obj(o.obj()); } 94 oop(const volatile oop& o) { set_obj(o.obj()); } 95 oop(const void* p) { set_obj(p); } 96 ~oop() { 97 if (CheckUnhandledOops) unregister_oop(); 98 } 99 100 oopDesc* obj() const volatile { return _o; } 101 102 // General access 103 oopDesc* operator->() const { return obj(); } 104 bool operator==(const oop o) const { return obj() == o.obj(); } 105 bool operator==(void *p) const { return obj() == p; } 106 bool operator!=(const volatile oop o) const { return obj() != o.obj(); } 107 bool operator!=(void *p) const { return obj() != p; } 108 109 // Assignment 110 oop& operator=(const oop& o) { _o = o.obj(); return *this; } 111 volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; } 112 volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; } 113 114 // Explict user conversions 115 operator void* () const { return (void *)obj(); } 116 #ifndef SOLARIS 117 operator void* () const volatile { return (void *)obj(); } 118 #endif 119 operator HeapWord* () const { return (HeapWord*)obj(); } 120 operator oopDesc* () const volatile { return obj(); } 121 operator intptr_t* () const { return (intptr_t*)obj(); } 122 operator PromotedObject* () const { return (PromotedObject*)obj(); } 123 operator markOop () const volatile { return markOop(obj()); } 124 operator address () const { return (address)obj(); } 125 126 // from javaCalls.cpp | 84 // friend class markOop; 85 public: 86 void set_obj(const void* p) { 87 raw_set_obj(p); 88 if (CheckUnhandledOops) register_oop(); 89 } 90 void raw_set_obj(const void* p) { _o = (oopDesc*)p; } 91 92 oop() { set_obj(NULL); } 93 oop(const oop& o) { set_obj(o.obj()); } 94 oop(const volatile oop& o) { set_obj(o.obj()); } 95 oop(const void* p) { set_obj(p); } 96 ~oop() { 97 if (CheckUnhandledOops) unregister_oop(); 98 } 99 100 oopDesc* obj() const volatile { return _o; } 101 102 // General access 103 oopDesc* operator->() const { return obj(); } 104 bool operator==(const oop o) const { 105 assert(!VerifyObjectEquals, "Missing oopDesc::equals(..)"); 106 return obj() == o.obj(); 107 } 108 bool operator==(void *p) const { return obj() == p; } 109 bool operator!=(const volatile oop o) const { 110 assert(!VerifyObjectEquals, "Missing !oopDesc::equals(..)"); 111 return obj() != o.obj(); 112 } 113 bool operator!=(void *p) const { return obj() != p; } 114 115 // Assignment 116 oop& operator=(const oop& o) { _o = o.obj(); return *this; } 117 volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; } 118 volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; } 119 120 // Explict user conversions 121 operator void* () const { return (void *)obj(); } 122 #ifndef SOLARIS 123 operator void* () const volatile { return (void *)obj(); } 124 #endif 125 operator HeapWord* () const { return (HeapWord*)obj(); } 126 operator oopDesc* () const volatile { return obj(); } 127 operator intptr_t* () const { return (intptr_t*)obj(); } 128 operator PromotedObject* () const { return (PromotedObject*)obj(); } 129 operator markOop () const volatile { return markOop(obj()); } 130 operator address () const { return (address)obj(); } 131 132 // from javaCalls.cpp |