src/share/vm/oops/oopsHierarchy.hpp

Print this page




 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);