< prev index next >

src/hotspot/share/oops/oopHandle.hpp

Print this page




  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_OOPS_OOPHANDLE_HPP
  26 #define SHARE_OOPS_OOPHANDLE_HPP
  27 
  28 #include "oops/oop.hpp"
  29 
  30 // Simple class for encapsulating oop pointers stored in metadata.
  31 // These are different from Handle.  The Handle class stores pointers
  32 // to oops on the stack, and manages the allocation from a thread local
  33 // area in the constructor.
  34 // This assumes that the caller will allocate the handle in the appropriate
  35 // area.  The reason for the encapsulation is to help with naming and to allow
  36 // future uses for read barriers.
  37 
  38 class OopHandle {

  39 private:
  40   oop* _obj;
  41 
  42 public:
  43   OopHandle() : _obj(NULL) {}
  44   OopHandle(oop* w) : _obj(w) {}
  45 
  46   inline oop resolve() const;
  47   inline oop peek() const;
  48 
  49   // Used only for removing handle.
  50   oop* ptr_raw() const { return _obj; }
  51 };
  52 
  53 #endif // SHARE_OOPS_OOPHANDLE_HPP


  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_OOPS_OOPHANDLE_HPP
  26 #define SHARE_OOPS_OOPHANDLE_HPP
  27 
  28 #include "oops/oop.hpp"
  29 
  30 // Simple class for encapsulating oop pointers stored in metadata.
  31 // These are different from Handle.  The Handle class stores pointers
  32 // to oops on the stack, and manages the allocation from a thread local
  33 // area in the constructor.
  34 // This assumes that the caller will allocate the handle in the appropriate
  35 // area.  The reason for the encapsulation is to help with naming and to allow
  36 // future uses for read barriers.
  37 
  38 class OopHandle {
  39   friend class VMStructs;
  40 private:
  41   oop* _obj;
  42 
  43 public:
  44   OopHandle() : _obj(NULL) {}
  45   OopHandle(oop* w) : _obj(w) {}
  46 
  47   inline oop resolve() const;
  48   inline oop peek() const;
  49 
  50   // Used only for removing handle.
  51   oop* ptr_raw() const { return _obj; }
  52 };
  53 
  54 #endif // SHARE_OOPS_OOPHANDLE_HPP
< prev index next >