87 }
88 void raw_set_obj(const void* p) { _o = (oopDesc*)p; }
89
90 oop() { set_obj(NULL); }
91 oop(const oop& o) { set_obj(o.obj()); }
92 oop(const volatile oop& o) { set_obj(o.obj()); }
93 oop(const void* p) { set_obj(p); }
94 ~oop() {
95 if (CheckUnhandledOops) unregister_oop();
96 }
97
98 oopDesc* obj() const volatile { return _o; }
99
100 // General access
101 oopDesc* operator->() const { return obj(); }
102 bool operator==(const oop o) const { return obj() == o.obj(); }
103 bool operator==(void *p) const { return obj() == p; }
104 bool operator!=(const volatile oop o) const { return obj() != o.obj(); }
105 bool operator!=(void *p) const { return obj() != p; }
106
107 bool operator<(oop o) const { return obj() < o.obj(); }
108 bool operator>(oop o) const { return obj() > o.obj(); }
109 bool operator<=(oop o) const { return obj() <= o.obj(); }
110 bool operator>=(oop o) const { return obj() >= o.obj(); }
111 bool operator!() const { return !obj(); }
112
113 // Assignment
114 oop& operator=(const oop& o) { _o = o.obj(); return *this; }
115 volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; }
116 volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; }
117
118 // Explict user conversions
119 operator void* () const { return (void *)obj(); }
120 #ifndef SOLARIS
121 operator void* () const volatile { return (void *)obj(); }
122 #endif
123 operator HeapWord* () const { return (HeapWord*)obj(); }
124 operator oopDesc* () const volatile { return obj(); }
125 operator intptr_t* () const { return (intptr_t*)obj(); }
126 operator PromotedObject* () const { return (PromotedObject*)obj(); }
127 operator markOop () const volatile { return markOop(obj()); }
128 operator address () const { return (address)obj(); }
129
130 // from javaCalls.cpp
131 operator jobject () const { return (jobject)obj(); }
132 // from javaClasses.cpp
133 operator JavaThread* () const { return (JavaThread*)obj(); }
134
|
87 }
88 void raw_set_obj(const void* p) { _o = (oopDesc*)p; }
89
90 oop() { set_obj(NULL); }
91 oop(const oop& o) { set_obj(o.obj()); }
92 oop(const volatile oop& o) { set_obj(o.obj()); }
93 oop(const void* p) { set_obj(p); }
94 ~oop() {
95 if (CheckUnhandledOops) unregister_oop();
96 }
97
98 oopDesc* obj() const volatile { return _o; }
99
100 // General access
101 oopDesc* operator->() const { return obj(); }
102 bool operator==(const oop o) const { return obj() == o.obj(); }
103 bool operator==(void *p) const { return obj() == p; }
104 bool operator!=(const volatile oop o) const { return obj() != o.obj(); }
105 bool operator!=(void *p) const { return obj() != p; }
106
107 oopDesc* operator->() const volatile { return obj(); }
108 bool operator==(const oop o) const volatile { return obj() == o.obj(); }
109 bool operator==(void *p) const volatile { return obj() == p; }
110 bool operator!=(const volatile oop o) const volatile { return obj() != o.obj(); }
111 bool operator!=(void *p) const volatile { return obj() != p; }
112
113 bool operator<(oop o) const { return obj() < o.obj(); }
114 bool operator>(oop o) const { return obj() > o.obj(); }
115 bool operator<=(oop o) const { return obj() <= o.obj(); }
116 bool operator>=(oop o) const { return obj() >= o.obj(); }
117 bool operator!() const { return !obj(); }
118
119 // Assignment
120 oop& operator=(const oop& o) { _o = o.obj(); return *this; }
121 oop& operator=(void *o) { _o = (oopDesc*)o; return *this; }
122 oop& operator=(const volatile oop& o) { _o = o.obj(); return *this; }
123 volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; }
124 volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; }
125
126 // Explict user conversions
127 operator void* () const { return (void *)obj(); }
128 #ifndef SOLARIS
129 operator void* () const volatile { return (void *)obj(); }
130 #endif
131 operator HeapWord* () const { return (HeapWord*)obj(); }
132 operator oopDesc* () const volatile { return obj(); }
133 operator intptr_t* () const { return (intptr_t*)obj(); }
134 operator PromotedObject* () const { return (PromotedObject*)obj(); }
135 operator markOop () const volatile { return markOop(obj()); }
136 operator address () const { return (address)obj(); }
137
138 // from javaCalls.cpp
139 operator jobject () const { return (jobject)obj(); }
140 // from javaClasses.cpp
141 operator JavaThread* () const { return (JavaThread*)obj(); }
142
|