< prev index next >

src/share/vm/runtime/handles.hpp

Print this page
rev 7800 : [mq]: cleanupOopInlineHpp


 106     type##Oop    obj() const                     { return (type##Oop)Handle::obj(); } \
 107     type##Oop    non_null_obj() const            { return (type##Oop)Handle::non_null_obj(); } \
 108                                                  \
 109    public:                                       \
 110     /* Constructors */                           \
 111     type##Handle ()                              : Handle()                 {} \
 112     type##Handle (type##Oop obj) : Handle((oop)obj) {                         \
 113       assert(is_null() || ((oop)obj)->is_a(),                                 \
 114              "illegal type");                                                 \
 115     }                                                                         \
 116     type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \
 117       assert(is_null() || ((oop)obj)->is_a(), "illegal type");                \
 118     }                                                                         \
 119     \
 120     /* Operators for ease of use */              \
 121     type##Oop    operator () () const            { return obj(); } \
 122     type##Oop    operator -> () const            { return non_null_obj(); } \
 123   };
 124 
 125 
 126 DEF_HANDLE(instance         , is_instance         )
 127 DEF_HANDLE(array            , is_array            )
 128 DEF_HANDLE(objArray         , is_objArray         )
 129 DEF_HANDLE(typeArray        , is_typeArray        )
 130 
 131 //------------------------------------------------------------------------------------------------------------------------
 132 
 133 // Metadata Handles.  Unlike oop Handles these are needed to prevent metadata
 134 // from being reclaimed by RedefineClasses.
 135 
 136 // Specific Handles for different oop types
 137 #define DEF_METADATA_HANDLE(name, type)          \
 138   class name##Handle;                            \
 139   class name##Handle : public StackObj {         \
 140     type*     _value;                            \
 141     Thread*   _thread;                           \
 142    protected:                                    \
 143     type*        obj() const                     { return _value; } \
 144     type*        non_null_obj() const            { assert(_value != NULL, "resolving NULL _value"); return _value; } \
 145                                                  \
 146    public:                                       \
 147     /* Constructors */                           \
 148     name##Handle () : _value(NULL), _thread(NULL) {}   \
 149     name##Handle (type* obj);                    \




 106     type##Oop    obj() const                     { return (type##Oop)Handle::obj(); } \
 107     type##Oop    non_null_obj() const            { return (type##Oop)Handle::non_null_obj(); } \
 108                                                  \
 109    public:                                       \
 110     /* Constructors */                           \
 111     type##Handle ()                              : Handle()                 {} \
 112     type##Handle (type##Oop obj) : Handle((oop)obj) {                         \
 113       assert(is_null() || ((oop)obj)->is_a(),                                 \
 114              "illegal type");                                                 \
 115     }                                                                         \
 116     type##Handle (Thread* thread, type##Oop obj) : Handle(thread, (oop)obj) { \
 117       assert(is_null() || ((oop)obj)->is_a(), "illegal type");                \
 118     }                                                                         \
 119     \
 120     /* Operators for ease of use */              \
 121     type##Oop    operator () () const            { return obj(); } \
 122     type##Oop    operator -> () const            { return non_null_obj(); } \
 123   };
 124 
 125 
 126 DEF_HANDLE(instance         , is_instance_noinline         )
 127 DEF_HANDLE(array            , is_array_noinline            )
 128 DEF_HANDLE(objArray         , is_objArray_noinline         )
 129 DEF_HANDLE(typeArray        , is_typeArray_noinline        )
 130 
 131 //------------------------------------------------------------------------------------------------------------------------
 132 
 133 // Metadata Handles.  Unlike oop Handles these are needed to prevent metadata
 134 // from being reclaimed by RedefineClasses.
 135 
 136 // Specific Handles for different oop types
 137 #define DEF_METADATA_HANDLE(name, type)          \
 138   class name##Handle;                            \
 139   class name##Handle : public StackObj {         \
 140     type*     _value;                            \
 141     Thread*   _thread;                           \
 142    protected:                                    \
 143     type*        obj() const                     { return _value; } \
 144     type*        non_null_obj() const            { assert(_value != NULL, "resolving NULL _value"); return _value; } \
 145                                                  \
 146    public:                                       \
 147     /* Constructors */                           \
 148     name##Handle () : _value(NULL), _thread(NULL) {}   \
 149     name##Handle (type* obj);                    \


< prev index next >