109 bool operator>(oop o) const { return obj() > o.obj(); }
110 bool operator<=(oop o) const { return obj() <= o.obj(); }
111 bool operator>=(oop o) const { return obj() >= o.obj(); }
112 bool operator!() const { return !obj(); }
113
114 // Cast
115 operator void* () const { return (void *)obj(); }
116 operator HeapWord* () const { return (HeapWord*)obj(); }
117 operator oopDesc* () const { return obj(); }
118 operator intptr_t* () const { return (intptr_t*)obj(); }
119 operator PromotedObject* () const { return (PromotedObject*)obj(); }
120 operator markOop () const { return markOop(obj()); }
121
122 operator address () const { return (address)obj(); }
123 operator intptr_t () const { return (intptr_t)obj(); }
124
125 // from javaCalls.cpp
126 operator jobject () const { return (jobject)obj(); }
127 // from javaClasses.cpp
128 operator JavaThread* () const { return (JavaThread*)obj(); }
129 // from jvm.cpp
130 operator jlong* () const { return (jlong*)obj(); }
131
132 // from parNewGeneration and other things that want to get to the end of
133 // an oop for stuff (like constMethodKlass.cpp, objArrayKlass.cpp)
134 operator oop* () const { return (oop *)obj(); }
135 };
136
137 #define DEF_OOP(type) \
138 class type##OopDesc; \
139 class type##Oop : public oop { \
140 public: \
141 type##Oop() : oop() {} \
142 type##Oop(const volatile oop& o) : oop(o) {} \
143 type##Oop(const void* p) : oop(p) {} \
144 operator type##OopDesc* () const { return (type##OopDesc*)obj(); } \
145 type##OopDesc* operator->() const { \
146 return (type##OopDesc*)obj(); \
147 } \
148 }; \
149
150 DEF_OOP(instance);
|
109 bool operator>(oop o) const { return obj() > o.obj(); }
110 bool operator<=(oop o) const { return obj() <= o.obj(); }
111 bool operator>=(oop o) const { return obj() >= o.obj(); }
112 bool operator!() const { return !obj(); }
113
114 // Cast
115 operator void* () const { return (void *)obj(); }
116 operator HeapWord* () const { return (HeapWord*)obj(); }
117 operator oopDesc* () const { return obj(); }
118 operator intptr_t* () const { return (intptr_t*)obj(); }
119 operator PromotedObject* () const { return (PromotedObject*)obj(); }
120 operator markOop () const { return markOop(obj()); }
121
122 operator address () const { return (address)obj(); }
123 operator intptr_t () const { return (intptr_t)obj(); }
124
125 // from javaCalls.cpp
126 operator jobject () const { return (jobject)obj(); }
127 // from javaClasses.cpp
128 operator JavaThread* () const { return (JavaThread*)obj(); }
129
130 #ifndef _LP64
131 // from jvm.cpp
132 operator jlong* () const { return (jlong*)obj(); }
133 #endif
134
135 // from parNewGeneration and other things that want to get to the end of
136 // an oop for stuff (like constMethodKlass.cpp, objArrayKlass.cpp)
137 operator oop* () const { return (oop *)obj(); }
138 };
139
140 #define DEF_OOP(type) \
141 class type##OopDesc; \
142 class type##Oop : public oop { \
143 public: \
144 type##Oop() : oop() {} \
145 type##Oop(const volatile oop& o) : oop(o) {} \
146 type##Oop(const void* p) : oop(p) {} \
147 operator type##OopDesc* () const { return (type##OopDesc*)obj(); } \
148 type##OopDesc* operator->() const { \
149 return (type##OopDesc*)obj(); \
150 } \
151 }; \
152
153 DEF_OOP(instance);
|